Re: [PATCH] e1000: save skb counts in TX to avoid cache misses

From: Jeff Kirsher
Date: Thu Jun 07 2012 - 17:38:24 EST


On 06/07/2012 05:49 AM, Roman Kagan wrote:
> [Upstream commit 31c15a2f24ebdab14333d9bf5df49757842ae2ec with paths
> adjusted to compensate for the drivers/net/ethernet/intel reorg in
> dee1ad47f2ee75f5146d83ca757c1b7861c34c3b]
>
> Author: Dean Nelson <dnelson@xxxxxxxxxx>
> Date: Thu Aug 25 14:39:24 2011 +0000
>
> e1000: save skb counts in TX to avoid cache misses
>
> Virtual Machines with emulated e1000 network adapter running on Parallels'
> server were seeing kernel panics due to the e1000 driver dereferencing an
> unexpected NULL pointer retrieved from buffer_info->skb.
>
> The problem has been addressed for the e1000e driver, but not for the e1000.
> Since the two drivers share similar code in the affected area, a port of the
> following e1000e driver commit solves the issue for the e1000 driver:
>
> commit 9ed318d546a29d7a591dbe648fd1a2efe3be1180
> Author: Tom Herbert <therbert@xxxxxxxxxx>
> Date: Wed May 5 14:02:27 2010 +0000
>
> e1000e: save skb counts in TX to avoid cache misses
>
> In e1000_tx_map, precompute number of segements and bytecounts which
> are derived from fields in skb; these are stored in buffer_info. When
> cleaning tx in e1000_clean_tx_irq use the values in the associated
> buffer_info for statistics counting, this eliminates cache misses
> on skb fields.
>
> Signed-off-by: Dean Nelson <dnelson@xxxxxxxxxx>
> Acked-by: Jeff Kirsher <jeffrey.t.kirsher@xxxxxxxxx>
> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
> Signed-off-by: Roman Kagan <rkagan@xxxxxxxxxxxxx>
> ---
> drivers/net/e1000/e1000.h | 2 ++
> drivers/net/e1000/e1000_main.c | 18 +++++++++---------
> 2 files changed, 11 insertions(+), 9 deletions(-)
Thanks! I have applied the patch to my queue

Attachment: signature.asc
Description: OpenPGP digital signature