linux/drivers/net
Dan Nowlin fd2a6b71e3 ice: create advanced switch recipe
These changes introduce code for creating advanced recipes for the
switch in hardware.

There are a couple of recipes already defined in the HW. They apply to
matching on basic protocol headers, like MAC, VLAN, MACVLAN,
ethertype or direction (promiscuous), etc.. If the user wants to match on
other protocol headers (eg. ip address, src/dst port etc.) or different
variation of already supported protocols, there is a need to create
new, more complex recipe. That new recipe is referred as
'advanced recipe', and the filtering rule created on top of that recipe
is called 'advanced rule'.

One recipe can have up to 5 words, but the first word is always reserved
for match on switch id, so the driver can define up to 4 words for one
recipe. To support recipes with more words up to 5 recipes can be
chained, so 20 words can be programmed for look up.

Input for adding recipe function is a list of protocols to support. Based
on this list correct profile is being chosen. Correct profile means
that it contains all protocol types from a list. Each profile have up to
48 field vector words and each of this word have protocol id and offset.
These two fields need to match with input data for adding recipe
function. If the correct profile can't be found the function returns an
error.

The next step after finding the correct profile is grouping words into
groups. One group can have up to 4 words. This is done to simplify
sending recipes to HW (because recipe also can have up to 4 words).

In case of chaining (so when look up consists of more than 4 words) last
recipe will always have results from the previous recipes used as words.

A recipe to profile map is used to store information about which profile
is associate with this recipe. This map is an array of 64 elements (max
number of recipes) and each element is a 256 bits bitmap (max number of
profiles)

Profile to recipe map is used to store information about which recipe is
associate with this profile. This map is an array of 256 elements (max
number of profiles) and each element is a 64 bits bitmap (max number of
recipes)

Signed-off-by: Dan Nowlin <dan.nowlin@intel.com>
Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com>
Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2021-10-11 08:38:27 -07:00
..
appletalk
arcnet
bonding net: use dev_addr_set() 2021-10-09 11:55:01 +01:00
caif
can can: c_can: fix null-ptr-deref on ioctl() 2021-09-07 08:46:58 +02:00
dsa net: dsa: rtl8366rb: remove unneeded semicolon 2021-10-08 15:08:49 +01:00
ethernet ice: create advanced switch recipe 2021-10-11 08:38:27 -07:00
fddi fddi: use eth_hw_addr_set() 2021-10-02 14:18:26 +01:00
fjes
hamradio net: use dev_addr_set() 2021-10-09 11:55:01 +01:00
hippi
hyperv hv_netvsc: use netif_is_bond_master() instead of open code 2021-10-10 11:18:48 +01:00
ieee802154
ipa net: ipa: initialize all filter table slots 2021-09-08 12:10:33 +01:00
ipvlan net: use eth_hw_addr_set() instead of ether_addr_copy() 2021-10-02 14:18:25 +01:00
mctp
mdio net: mdio-ipq4019: Fix the error for an optional regs resource 2021-09-28 17:28:54 -07:00
netdevsim netdevsim: Move devlink registration to be last devlink command 2021-09-27 16:31:59 +01:00
pcs net: pcs: xpcs: fix incorrect steps on disable EEE 2021-10-06 11:18:27 +01:00
phy net: phy: at803x: better describe debug regs 2021-10-10 11:27:42 +01:00
plip
ppp ppp: use the correct function to check if a netdev name is in use 2021-10-08 17:02:35 +01:00
slip
team net: use dev_addr_set() 2021-10-09 11:55:01 +01:00
usb ethernet: use platform_get_ethdev_address() 2021-10-08 14:54:34 +01:00
vmxnet3 net: use dev_addr_set() 2021-10-09 11:55:01 +01:00
wan net: use dev_addr_set() 2021-10-09 11:55:01 +01:00
wireguard
wireless ath11k: fix m68k and xtensa build failure in ath11k_peer_assoc_h_smps() 2021-10-08 16:13:53 +01:00
wwan net: wwan: iosm: correct devlink extra params 2021-10-02 16:05:20 +01:00
xen-netback xen-netback: correct success/error reporting for the SKB-with-fraglist case 2021-09-19 12:10:26 +01:00
bareudp.c
dummy.c
eql.c
geneve.c
gtp.c gtp: use skb_dst_update_pmtu_no_confirm() instead of direct call 2021-10-06 15:19:37 +01:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c net: use eth_hw_addr_set() instead of ether_addr_copy() 2021-10-02 14:18:25 +01:00
macvlan.c net: use eth_hw_addr_set() instead of ether_addr_copy() 2021-10-02 14:18:25 +01:00
macvtap.c
Makefile
mdio.c
mhi_net.c drivers: net: mhi: fix error path in mhi_net_newlink 2021-09-24 14:25:05 +01:00
mii.c
net_failover.c net: use dev_addr_set() 2021-10-09 11:55:01 +01:00
netconsole.c
nlmon.c
ntb_netdev.c net: use dev_addr_set() 2021-10-09 11:55:01 +01:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c ethtool: extend coalesce setting uAPI with CQE mode 2021-08-24 07:38:29 -07:00
veth.c
virtio_net.c virtio_net: skip RCU read lock by checking xdp_enabled of vi 2021-10-10 11:31:09 +01:00
vrf.c
vsockmon.c
vxlan.c nexthop: Fix memory leaks in nexthop notification chain listeners 2021-09-23 12:33:22 +01:00
xen-netfront.c xen/netfront: don't trust the backend response data blindly 2021-08-25 10:43:21 +01:00