linux/drivers/net
David S. Miller aaa5570612 mlx5-updates-2021-10-18
Maor Maor Gottlieb says:
 ========================
 Use hash to select the affinity port in VF LAG
 
 Current VF LAG architecture is based on QP association with a port.
 QP must be created after LAG is enabled to allow association with non-native port.
 VM Packets going on slow-path to eSwicth manager (SW path or hairpin) will be transmitted
 through a different QP than the VM. This means that Different packets of the same flow might
 egress from different physical ports.
 
 This patch-set solves this issue by moving the port selection to be based on the hash function
 defined by the bond.
 
 When the device is moved to VF LAG mode, the driver creates TTC (traffic type classifier) flow
 tables in order to classify the packet and steer it to the relevant hash function. Similar to what
 is done in the mlx5 RSS implementation.
 
 Each rule in the TTC table, forwards the packet to port selection flow table which has one hash
 split flow group which contains two "catch all" flow table entries. Each entry point to the
 relative uplink port. As shown below:
 
 		-------------------
 		| FT              |
 TTC rule ->	|     ----------- |
 		|   FG|   FTE --|-|-----> uplink of port #1
 		|     |   FTE --|-|-----> uplink of port #2
 		|     ----------- |
 		-------------------
 
 Hash split flow group is flow group that created as type of HASH_SPLIT and associated with match definer.
 The match definer define the fields which included in the hash calculation.
 
 The driver creates the match definer according to the xmit hash policy of the bond driver.
 
 Patches overview:
 ========================
 
 Minor E-Switch updates:
 - Patch #12, dynamic  allocation of dest array
 - Patch #13, increase number of forward destinations to 32
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEGhZs6bAKwk/OTgTpSD+KveBX+j4FAmFuOPIACgkQSD+KveBX
 +j4Ejgf/ScZmLSMvPu8doQ+eLG6nSiA5EAXkJqx0dwZZzzB4hSJleYuTveab/rgA
 HNhSZiVI8YXrscqvBAWNVAE8wQ0DFgYtDFs5UfUc/Pd+dZsqk7+ecHlo+kBCkYSn
 3fNTKSkdzZsGz5hOu0eP3rteIvTf9JrtB07rfBLbma/nuTnSGxIFYQpDe7H52jW2
 pov9LEonara9kjJ7BFtaupQMwCpVwYuPkMPTnt/qO1IOE18GHnK5SXgdMSlLBdjY
 HKfBF6jXWooDlN9nAxvH+2RWsumng0pRyujw0uvHTQ6SDNoOKf1ucj8znOHCFC1h
 sTfzAX6jUdrRtJ6hWLo+p9YlkLtjSw==
 =TVAs
 -----END PGP SIGNATURE-----

Merge tag 'mlx5-updates-2021-10-18' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux

Saeed Mahameed says:

mlx5-updates-2021-10-18

Maor Maor Gottlieb says:
========================
Use hash to select the affinity port in VF LAG

Current VF LAG architecture is based on QP association with a port.
QP must be created after LAG is enabled to allow association with non-native port.
VM Packets going on slow-path to eSwicth manager (SW path or hairpin) will be transmitted
through a different QP than the VM. This means that Different packets of the same flow might
egress from different physical ports.

This patch-set solves this issue by moving the port selection to be based on the hash function
defined by the bond.

When the device is moved to VF LAG mode, the driver creates TTC (traffic type classifier) flow
tables in order to classify the packet and steer it to the relevant hash function. Similar to what
is done in the mlx5 RSS implementation.

Each rule in the TTC table, forwards the packet to port selection flow table which has one hash
split flow group which contains two "catch all" flow table entries. Each entry point to the
relative uplink port. As shown below:

		-------------------
		| FT              |
TTC rule ->	|     ----------- |
		|   FG|   FTE --|-|-----> uplink of port #1
		|     |   FTE --|-|-----> uplink of port #2
		|     ----------- |
		-------------------

Hash split flow group is flow group that created as type of HASH_SPLIT and associated with match definer.
The match definer define the fields which included in the hash calculation.

The driver creates the match definer according to the xmit hash policy of the bond driver.

Patches overview:
========================

Minor E-Switch updates:
- Patch #12, dynamic  allocation of dest array
- Patch #13, increase number of forward destinations to 32

Signed-off-by: David S. Miller <davem@davemloft.net>
2021-10-19 12:16:34 +01: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: 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: qca8k: fix delay applied to wrong cpu in parse_port_config 2021-10-18 14:22:28 +01:00
ethernet mlx5-updates-2021-10-18 2021-10-19 12:16:34 +01:00
fddi fddi: use eth_hw_addr_set() 2021-10-02 14:18:26 +01:00
fjes
hamradio hamradio: use dev_addr_set() for setting device address 2021-10-13 09:41:37 -07:00
hippi
hyperv hv_netvsc: Add comment of netvsc_xdp_xmit() 2021-10-14 19:17:57 -07:00
ieee802154
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 net: mdio-ipq4019: Fix the error for an optional regs resource 2021-09-28 17:28:54 -07:00
netdevsim devlink: Delete reload enable/disable interface 2021-10-12 16:29:17 -07:00
pcs net: pcs: xpcs: fix incorrect steps on disable EEE 2021-10-06 11:18:27 +01:00
phy net: phy: realtek: add support for RTL8365MB-VC internal PHYs 2021-10-18 14:02:56 +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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07: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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
wwan net: wwan: iosm: correct devlink extra params 2021-10-02 16:05:20 +01:00
xen-netback xen-netback: Remove redundant initialization of variable err 2021-10-15 11:02:36 +01:00
Kconfig
LICENSE.SRC
Makefile
Space.c
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 netfilter: Introduce egress hook 2021-10-14 23:06:28 +02:00
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 net: macvtap: fix template string argument of device_create() call 2021-10-16 08:51:21 +01:00
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
sungem_phy.c
tap.c
thunderbolt.c
tun.c
veth.c
virtio_net.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07: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