path: root/drivers/net/ethernet/broadcom/tg3.h
diff options
authorEric Dumazet <eric.dumazet@gmail.com>2011-11-18 06:47:01 +0000
committerDavid S. Miller <davem@davemloft.net>2011-11-21 16:10:31 -0500
commit9205fd9ccab8ef51ad771c1917eed7b2f2225d45 (patch)
tree7566edecf8ad6edfb4affea5976b0176a316bbab /drivers/net/ethernet/broadcom/tg3.h
parent37f07023d30708b5da091fe6d6be9b60783c6d82 (diff)
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>
Diffstat (limited to 'drivers/net/ethernet/broadcom/tg3.h')
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/broadcom/tg3.h b/drivers/net/ethernet/broadcom/tg3.h
index 94b4bd049a3..8e2f380f893 100644
--- a/drivers/net/ethernet/broadcom/tg3.h
+++ b/drivers/net/ethernet/broadcom/tg3.h
@@ -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;