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: Eric 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: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
37f07023d3
commit
9205fd9cca
@@ -2662,9 +2662,13 @@ struct tg3_hw_stats {
|
||||
/* 'mapping' is superfluous as the chip does not write into
|
||||
* 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.
|
||||
*
|
||||
* 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 sk_buff *skb;
|
||||
u8 *data;
|
||||
DEFINE_DMA_UNMAP_ADDR(mapping);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user