linux_dsm_epyc7002/drivers/net
Ido Schimmel 7f71eb46a4 mlxsw: spectrum: Split vFID range in two
Up until now we used a 1:1 mapping - based on VID - to map a VLAN
interface to a vFID. However, a different scheme is needed in order to
support bridges between VLAN interfaces, as all the member interfaces -
which can have different VIDs - need to share the same vFID.

Solve that by splitting the vFID range in two:
 1. Non-bridged VLAN interfaces
 2. Bridged VLAN interfaces

When a VLAN interface is created, assign it the next available vFID in
the first range, unless one already exists for that VID or number of
vFIDs in the range was exceeded. When interface is removed, free the
vFID, unless other interfaces are mapped to it.

To accomplish the above:
 1. Store the VID to vFID mapping in a new struct (mlxsw_sp_vfid), which
    has a global context and holds a reference count.
 2. Create a vPort (dummy in case of bridge SELF invocation) on top of
    of the physical port and hold a reference to the associated vFID.

	     vfid                    vfid
	+-------------+	        +-------------+
	| vfid        |         | vfid        |
	| vid         +---> ... | vid         |
	| nr_vports   |         | nr_vports   |
	+------+------+         +------+------+
				       |
	       +-----------------------+-------+
	       |			       |
	     vport			     vport
	+-------------+         	+-------------+
	| ...	      |         	| ...	      |
	| *vfid	      +---> ... 	| *vfid	      +---> ...
	| ...	      |         	| ...	      |
	+------+------+         	+------+------+
	       |                               |
	     port			     port
	+-------------+         	+-------------+
	| ...         |         	| ...         |
	| vports_list |         	| vports_list |
	| ...         |         	| ...         |
	+-------------+         	+-------------+
	     swXpY			     swXpZ

Next patches in the series will add the missing infrastructure for the
second range and transfer vPorts between the two ranges according to the
received notifications.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-12-15 11:58:21 -05:00
..
appletalk
arcnet
bonding net: bonding: remove redudant brackets 2015-12-04 00:07:14 -05:00
caif
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
cris
dsa dsa: mv88e6xxx.c: Hardware reset the chip if available 2015-11-23 11:53:10 -05:00
ethernet mlxsw: spectrum: Split vFID range in two 2015-12-15 11:58:21 -05:00
fddi
fjes
hamradio
hippi
hyperv hv_netvsc: Fix race condition on Multi-Send Data field 2015-12-14 00:02:06 -05:00
ieee802154 ieee802154/adf7242: Driver for ADF7242 MAC IEEE802154 2015-12-11 11:27:22 +01:00
ipvlan
irda
phy PHY: DP83867: Remove looking in parent device for OF properties 2015-12-06 23:05:56 -05:00
plip
ppp ppp: declare ppp devices as enumerated interfaces 2015-12-14 16:20:57 -05:00
slip
team team: implement lower state change propagation 2015-12-03 11:49:27 -05:00
usb net: cdc_ncm: add "ndp_to_end" sysfs attribute 2015-12-06 22:52:18 -05:00
vmxnet3 vmxnet3: fix checks for dma mapping errors 2015-12-01 15:19:16 -05:00
wan wan: wanxl: add pci_disable_device in case of error 2015-12-14 16:21:58 -05:00
wimax
wireless brcfmac 2015-12-08 12:39:15 -05:00
xen-netback
dummy.c
eql.c
geneve.c geneve: UDP checksum configuration via netlink 2015-12-13 23:58:03 -05:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macvlan.c
macvtap.c net: rename SOCK_ASYNC_NOSPACE and SOCK_ASYNC_WAITDATA 2015-12-01 15:45:05 -05:00
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c net: rename SOCK_ASYNC_NOSPACE and SOCK_ASYNC_WAITDATA 2015-12-01 15:45:05 -05:00
veth.c
virtio_net.c net: provide generic busy polling to all NAPI drivers 2015-11-18 16:17:42 -05:00
vrf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
vxlan.c
xen-netfront.c