linux/drivers/net
Ariel Levkovich 4f4edcc2b8 net/mlx5: E-Switch, Add ovs internal port mapping to metadata support
Adding infrastructure to map ovs internal port device to vport
match metadata to support offload of rules with internal port as
the filter device or as the destination device.

The infrastructure allows adding and removing internal port device
to an eswitch database and getting a unique vport metadata value to
be placed and match on in reg_c0 when offloading rules that are coming
from or going to an internal port.

The new int port metadata can be written to the source port register
in HW to indicate that current source port of the packet is the
internal port and not one of the actual HW vports (uplink or VF).
Using this method, it is possible to offload TC rules with an OVS
internal port as their destination port (overwriting the src vport
register) or as the filter port (matching on the value of the src
vport register and making sure it matches to the internal port's
value).

There is also a need to handle a miss case where the packet's
src port value was changed in HW to an internal port but a following
rule which matches on this new src port value wasn't found in HW.

In such case, the packet will be forwarded to the driver with
metadata which allows driver to restore the info of the internal
port's netdevice. Once this info is restored, the uplink driver
can forward the packet to the relevant netdevice in SW.

Signed-off-by: Ariel Levkovich <lariel@nvidia.com>
Reviewed-by: Vlad Buslov <vladbu@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
2021-10-29 13:53:29 -07:00
..
appletalk net: remove single-byte netdev->dev_addr writes 2021-10-13 10:03:59 -07:00
arcnet net: remove single-byte netdev->dev_addr writes 2021-10-13 10:03:59 -07:00
bonding net: bonding: constify and use dev_addr_set() 2021-10-24 13:59:44 +01:00
caif
can can: xilinx_can: xcan_remove(): remove redundant netif_napi_del() 2021-10-24 16:26:05 +02:00
dsa net: dsa: lantiq_gswip: serialize access to the PCE registers 2021-10-25 12:59:42 +01:00
ethernet net/mlx5: E-Switch, Add ovs internal port mapping to metadata support 2021-10-29 13:53:29 -07:00
fddi fddi: defza: add missing pointer type cast 2021-10-25 10:28:47 -07:00
fjes net: fjes: constify and use eth_hw_addr_set() 2021-10-22 10:16:07 -07:00
hamradio Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-22 11:41:16 +01:00
hippi net: hippi: use dev_addr_set() 2021-10-22 10:16:09 -07:00
hyperv hv_netvsc: Add comment of netvsc_xdp_xmit() 2021-10-14 19:17:57 -07:00
ieee802154 ieee802154: Remove redundant 'flush_workqueue()' calls 2021-10-19 13:23:38 +01:00
ipa asm-generic: build fixes for v5.15 2021-10-08 11:57:54 -07:00
ipvlan net: ipvtap: fix template string argument of device_create() call 2021-10-16 08:51:22 +01:00
mctp
mdio
netdevsim devlink: Delete reload enable/disable interface 2021-10-12 16:29:17 -07:00
pcs net: convert users of bitmap_foo() to linkmode_foo() 2021-10-24 13:58:52 +01:00
phy Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-28 10:43:58 -07:00
plip net: plip: use eth_hw_addr_set() 2021-10-22 10:16:14 -07:00
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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-28 10:43:58 -07:00
vmxnet3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-28 10:43:58 -07:00
wan net: hldc_fr: use dev_addr_set() 2021-10-22 10:16:18 -07:00
wireguard
wireless iwlwifi patches for v5.16 2021-10-28 16:29:15 +03:00
wwan
xen-netback net: xen: use eth_hw_addr_set() 2021-10-22 10:15:54 -07:00
bareudp.c net: bareudp: fix duplicate checks of data[] expressions 2021-10-29 13:41:28 +01:00
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 ifb: fix building without CONFIG_NET_CLS_ACT 2021-10-29 14:01:11 +01:00
Kconfig ifb: Depend on netfilter alternatively to tc 2021-10-26 15:03:37 +01:00
LICENSE.SRC
loopback.c
macsec.c net: drivers: get ready for const netdev->dev_addr 2021-10-24 13:59:45 +01:00
macvlan.c net: drivers: get ready for const netdev->dev_addr 2021-10-24 13:59:45 +01:00
macvtap.c net: macvtap: fix template string argument of device_create() call 2021-10-16 08:51:21 +01:00
Makefile
mdio.c
mhi_net.c
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 net: sb1000,rionet: use eth_hw_addr_set() 2021-10-22 10:16:16 -07:00
sb1000.c net: sb1000,rionet: use eth_hw_addr_set() 2021-10-22 10:16:16 -07:00
Space.c
sungem_phy.c
tap.c
thunderbolt.c net: thunderbolt: use eth_hw_addr_set() 2021-10-27 17:13:36 -07:00
tun.c
veth.c
virtio_net.c net: virtio: use eth_hw_addr_set() 2021-10-28 07:47:30 -07:00
vrf.c vrf: run conntrack only in context of lower/physdev for locally generated packets 2021-10-26 13:21:10 +01:00
vsockmon.c
vxlan.c
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-28 10:43:58 -07:00