linux_dsm_epyc7002/drivers/net/ethernet/intel/i40e
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
..
i40e_adminq_cmd.h i40e: fix up recent proxy and wol bits for X722_SUPPORT 2017-03-14 17:52:32 -07:00
i40e_adminq.c i40e: Implementation of ERROR state for NVM update state machine 2016-10-31 14:26:40 -07:00
i40e_adminq.h
i40e_alloc.h
i40e_client.c i40e: register existing client on probe 2017-04-06 20:22:28 -07:00
i40e_client.h i40e: KISS the client interface 2017-03-15 01:57:08 -07:00
i40e_common.c i40e: use register for XL722 control register read/write 2017-03-29 02:15:06 -07:00
i40e_dcb_nl.c
i40e_dcb.c
i40e_dcb.h
i40e_debugfs.c i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00
i40e_devids.h i40e: Add support for 25G devices 2016-12-06 20:59:43 -08:00
i40e_diag.c
i40e_diag.h
i40e_ethtool.c i40e: Simplify i40e_detect_recover_hung_queue logic 2017-04-08 02:53:49 -07:00
i40e_fcoe.c i40e: store MAC/VLAN filters in a hash with the MAC Address as key 2016-10-31 14:26:40 -07:00
i40e_fcoe.h
i40e_hmc.c
i40e_hmc.h
i40e_lan_hmc.c
i40e_lan_hmc.h
i40e_main.c i40e/i40evf: Add support for padding start of frames 2017-04-08 02:53:51 -07:00
i40e_nvm.c i40e: Acquire NVM lock before reads on all devices 2017-03-14 17:52:32 -07:00
i40e_osdep.h i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00
i40e_prototype.h i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00
i40e_ptp.c i40e: don't warn every time we clear an Rx timestamp register 2017-02-11 20:39:01 -08:00
i40e_register.h
i40e_status.h
i40e_txrx.c i40e/i40evf: Use build_skb to build frames 2017-04-08 02:53:51 -07:00
i40e_txrx.h i40e/i40evf: Add support for padding start of frames 2017-04-08 02:53:51 -07:00
i40e_type.h i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00
i40e_virtchnl_pf.c i40e/i40evf: Add capability exchange for outer checksum 2017-04-06 20:14:51 -07:00
i40e_virtchnl_pf.h i40e: Drop FCoE code that always evaluates to false or 0 2017-03-27 16:47:44 -07:00
i40e_virtchnl.h i40e/i40evf: Add capability exchange for outer checksum 2017-04-06 20:14:51 -07:00
i40e.h i40e: clean up historic deprecated flag definitions 2017-04-08 02:53:50 -07:00
Makefile i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00