linux/drivers/net/ethernet/intel
Alexander Duyck f8b45b74cc i40e/i40evf: Use build_skb to build frames
This patch is meant to improve the performance of the Rx path.
Specifically by using build_skb we have several distinct advantages.

In the case of small frames we were previously using a copy-break approach.
This means that we were allocating a page fragment to use for skb->head,
and were having to copy the packet into that region.  Both of those calls
are now avoided since we just build the skb around the data.

In the case of large frames the gains are much more significant.
Specifically we were having to allocate skb->head, and copy the headers as
before.  However in addition we were having to parse the header using
eth_get_headlen which could be quite expensive.  All of this is avoided by
building the frame around the data.  I have seen gains as high as 30% when
using VXLAN for instance due to just header pulling overhead.

Finally with all this in place it also sets us up to start looking at
enabling XDP.  Specifically we now have a path in which the data is in the
page and the frame is built around it.  So if we parse it with XDP before
we call build_skb we can take care of any necessary processing there.

Change-ID: Id4bdd618e94473d41f892417e5d8019639e421e3
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-04-08 02:53:51 -07:00
..
e1000 e1000: use new API ethtool_{get|set}_link_ksettings 2017-03-21 15:27:58 -07:00
e1000e Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
fm10k fm10k: do not enqueue mailbox when host not ready 2017-04-05 22:47:31 -07:00
i40e i40e/i40evf: Use build_skb to build frames 2017-04-08 02:53:51 -07:00
i40evf i40e/i40evf: Use build_skb to build frames 2017-04-08 02:53:51 -07:00
igb igb: use new API ethtool_{get|set}_link_ksettings 2017-03-21 15:42:19 -07:00
igbvf igbvf: use new API ethtool_{get|set}_link_ksettings 2017-03-21 15:51:39 -07:00
ixgb ixgb: use new API ethtool_{get|set}_link_ksettings 2017-03-21 15:53:19 -07:00
ixgbe igb/ixgbe: Fix typo in igb_build_skb and/or ixgbe_build_skb code comment 2017-03-17 12:55:55 -07:00
ixgbevf ixgbevf: get rid of custom busy polling code 2017-02-03 17:17:53 -05:00
e100.c drivers: net: generalize napi_complete_done() 2017-01-30 15:10:42 -05:00
Kconfig i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00
Makefile