Commit 9205fd9c authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

tg3: switch to build_skb() infrastructure

This is very similar to bnx2x conversion, but simpler since no special
alignement is required, so goal was not to reduce skb truesize.

Using build_skb() reduces cache line misses in the driver, since we
use cache hot skb instead of cold ones. Number of in-flight sk_buff
structures is lower, they are more likely recycled in SLUB caches
while still hot.
Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
CC: Matt Carlson <mcarlson@broadcom.com>
CC: Michael Chan <mchan@broadcom.com>
CC: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 37f07023
This diff is collapsed.
...@@ -2662,9 +2662,13 @@ struct tg3_hw_stats { ...@@ -2662,9 +2662,13 @@ struct tg3_hw_stats {
/* 'mapping' is superfluous as the chip does not write into /* 'mapping' is superfluous as the chip does not write into
* the tx/rx post rings so we could just fetch it from there. * the tx/rx post rings so we could just fetch it from there.
* But the cache behavior is better how we are doing it now. * But the cache behavior is better how we are doing it now.
*
* This driver uses new build_skb() API :
* RX ring buffer contains pointer to kmalloc() data only,
* skb are built only after Hardware filled the frame.
*/ */
struct ring_info { struct ring_info {
struct sk_buff *skb; u8 *data;
DEFINE_DMA_UNMAP_ADDR(mapping); DEFINE_DMA_UNMAP_ADDR(mapping);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment