net: skb_shared_info optimization
skb_dma_unmap() is quite expensive for small packets, because we use two different cache lines from skb_shared_info. One to access nr_frags, one to access dma_maps[0] Instead of dma_maps being an array of MAX_SKB_FRAGS + 1 elements, let dma_head alone in a new dma_head field, close to nr_frags, to reduce cache lines misses. Tested on my dev machine (bnx2 & tg3 adapters), nice speedup ! Signed-off-by:Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
Showing
- drivers/net/bnx2.c 3 additions, 3 deletionsdrivers/net/bnx2.c
- drivers/net/e1000/e1000_main.c 2 additions, 2 deletionsdrivers/net/e1000/e1000_main.c
- drivers/net/e1000e/netdev.c 2 additions, 2 deletionsdrivers/net/e1000e/netdev.c
- drivers/net/igb/igb_main.c 2 additions, 3 deletionsdrivers/net/igb/igb_main.c
- drivers/net/igbvf/netdev.c 2 additions, 3 deletionsdrivers/net/igbvf/netdev.c
- drivers/net/ixgb/ixgb_main.c 2 additions, 2 deletionsdrivers/net/ixgb/ixgb_main.c
- drivers/net/ixgbe/ixgbe_main.c 2 additions, 2 deletionsdrivers/net/ixgbe/ixgbe_main.c
- drivers/net/tg3.c 5 additions, 5 deletionsdrivers/net/tg3.c
- include/linux/skbuff.h 4 additions, 1 deletioninclude/linux/skbuff.h
- net/core/skb_dma_map.c 6 additions, 6 deletionsnet/core/skb_dma_map.c
Loading
Please register or sign in to comment