linux/drivers/net/ethernet/intel/i40e
Alexander Lobakin 306ec721d0 net: intel: introduce {, Intel} Ethernet common library
Not a secret there's a ton of code duplication between two and more Intel
ethernet modules.

Before introducing new changes, which would need to be copied over again,
start decoupling the already existing duplicate functionality into a new
module, which will be shared between several Intel Ethernet drivers.
Add the lookup table which converts 8/10-bit hardware packet type into
a parsed bitfield structure for easy checking packet format parameters,
such as payload level, IP version, etc. This is currently used by i40e,
ice and iavf and it's all the same in all three drivers.
The only difference introduced in this implementation is that instead of
defining a 256 (or 1024 in case of ice) element array, add unlikely()
condition to limit the input to 154 (current maximum non-reserved packet
type). There's no reason to waste 600 (or even 3600) bytes only to not
hurt very unlikely exception packets.
The hash computation function now takes payload level directly as a
pkt_hash_type. There's a couple cases when non-IP ptypes are marked as
L3 payload and in the previous versions their hash level would be 2, not
3. But skb_set_hash() only sees difference between L4 and non-L4, thus
this won't change anything at all.
The module is behind the hidden Kconfig symbol, which the drivers will
select when needed. The exports are behind 'LIBIE' namespace to limit
the scope of the functions.

Not that non-HW-specific symbols will live in yet another module,
libeth. This is done to easily distinguish pretty generic code ready
for reusing by any other vendor and/or for moving the layer up from
the code useful in Intel's 1-100G drivers only.

Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2024-04-24 11:06:25 -07:00
..
i40e.h i40e: Enforce software interrupt during busy-poll exit 2024-03-26 08:34:40 -07:00
i40e_adminq.c i40e: Remove queue tracking fields from i40e_adminq_ring 2023-11-27 09:31:34 -08:00
i40e_adminq.h i40e: Remove queue tracking fields from i40e_adminq_ring 2023-11-27 09:31:34 -08:00
i40e_adminq_cmd.h i40e: Include types.h to some headers 2024-01-18 09:52:52 -08:00
i40e_alloc.h
i40e_client.c i40e: remove unnecessary qv_info ptr NULL checks 2024-03-06 09:32:58 -08:00
i40e_common.c net: intel: introduce {, Intel} Ethernet common library 2024-04-24 11:06:25 -07:00
i40e_dcb.c i40e: Fix wrong mask used during DCB config 2024-02-12 16:58:08 -08:00
i40e_dcb.h net: intel: fix old compiler regressions 2024-02-07 09:15:27 -08:00
i40e_dcb_nl.c i40e: Introduce and use macros for iterating VSIs and VEBs 2024-02-16 09:28:14 -08:00
i40e_ddp.c i40e: field get conversion 2023-12-18 11:20:43 -08:00
i40e_debug.h i40e: Initialize hardware capabilities at single place 2023-11-14 20:05:44 -08:00
i40e_debugfs.c i40e: Remove VEB recursion 2024-02-16 09:28:14 -08:00
i40e_devids.h
i40e_devlink.c i40e: Do not call devlink_port_type_clear() 2023-11-06 16:16:13 -08:00
i40e_devlink.h i40e: Add initial devlink support 2023-10-15 14:33:41 +01:00
i40e_diag.c
i40e_diag.h i40e: Include types.h to some headers 2024-01-18 09:52:52 -08:00
i40e_ethtool.c net: intel: i40e/igc: Remove setting Autoneg in EEE capabilities 2024-02-28 12:18:04 +00:00
i40e_hmc.c i40e: Remove circular header dependencies and fix headers 2023-10-05 09:18:09 -07:00
i40e_hmc.h i40e: Remove circular header dependencies and fix headers 2023-10-05 09:18:09 -07:00
i40e_io.h
i40e_lan_hmc.c i40e: Remove circular header dependencies and fix headers 2023-10-05 09:18:09 -07:00
i40e_lan_hmc.h i40e: Remove circular header dependencies and fix headers 2023-10-05 09:18:09 -07:00
i40e_main.c net: intel: introduce {, Intel} Ethernet common library 2024-04-24 11:06:25 -07:00
i40e_nvm.c i40e: avoid forward declarations in i40e_nvm.c 2024-03-29 08:58:44 -07:00
i40e_prototype.h net: intel: introduce {, Intel} Ethernet common library 2024-04-24 11:06:25 -07:00
i40e_ptp.c i40e: field get conversion 2023-12-18 11:20:43 -08:00
i40e_register.h i40e: Enforce software interrupt during busy-poll exit 2024-03-26 08:34:40 -07:00
i40e_trace.h
i40e_txrx.c net: intel: introduce {, Intel} Ethernet common library 2024-04-24 11:06:25 -07:00
i40e_txrx.h i40e: Enforce software interrupt during busy-poll exit 2024-03-26 08:34:40 -07:00
i40e_txrx_common.h i40e: Remove circular header dependencies and fix headers 2023-10-05 09:18:09 -07:00
i40e_type.h net: intel: introduce {, Intel} Ethernet common library 2024-04-24 11:06:25 -07:00
i40e_virtchnl_pf.c i40e: Fix VF MAC filter removal 2024-04-01 21:33:08 -07:00
i40e_virtchnl_pf.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-01-04 18:06:46 -08:00
i40e_xsk.c net: remove gfp_mask from napi_alloc_skb() 2024-03-28 18:30:40 -07:00
i40e_xsk.h i40e: Remove circular header dependencies and fix headers 2023-10-05 09:18:09 -07:00
Makefile i40e: Add initial devlink support 2023-10-15 14:33:41 +01:00