linux_dsm_epyc7002/drivers/net/ethernet
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
..
3com drivers/net: fix eisa_driver probe section mismatch 2015-12-14 00:24:22 -05:00
8390 net: mac8390: Allow modular build 2015-09-29 21:11:12 -07:00
adaptec
adi net: bfin_mac: Use platform_register/unregister_drivers() 2015-12-03 15:14:58 -05:00
aeroflex drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
agere
allwinner net: sun4i-emac: Properly free resources on probe failure and remove 2015-10-21 19:47:45 -07:00
alteon
altera net: eth: altera: Fix the initial device operstate 2015-09-09 12:10:15 -07:00
amd Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
apm drivers: net: xgene: constify xgene_mac_ops and xgene_port_ops structures 2015-12-08 21:39:32 -05:00
apple net: macmace: Allow modular build 2015-09-29 21:11:13 -07:00
arc net: arc: Fix module autoload for OF platform driver 2015-09-21 16:08:20 -07:00
atheros Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
aurora net: ethernet: add driver for Aurora VLSI NB8800 Ethernet controller 2015-11-20 11:47:02 -05:00
broadcom bnx2x: remove rx_pkt/rx_calls 2015-12-08 22:59:22 -05:00
brocade bna: fix error handling 2015-09-29 13:49:53 -07:00
cadence net/macb: add support for resetting PHY using GPIO 2015-12-14 22:04:12 -05:00
calxeda
cavium net: thunderx: Enable CQE count threshold interrupt 2015-12-11 23:38:17 -05:00
chelsio cxgb4: Handle clip return values 2015-12-11 20:15:23 -05:00
cirrus
cisco net: provide generic busy polling to all NAPI drivers 2015-11-18 16:17:42 -05:00
davicom
dec drivers/net: fix eisa_driver probe section mismatch 2015-12-14 00:24:22 -05:00
dlink dl2k: Implement suspend 2015-11-20 14:48:27 -05:00
emulex net: provide generic busy polling to all NAPI drivers 2015-11-18 16:17:42 -05:00
ezchip
faraday
freescale Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
fujitsu
hisilicon net: hns: optimize XGE capability by reducing cpu usage 2015-12-08 22:06:40 -05:00
hp drivers/net: fix eisa_driver probe section mismatch 2015-12-14 00:24:22 -05:00
i825xx
ibm drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
intel e1000e: Fix msi-x interrupt automask 2015-12-14 20:19:47 -08:00
marvell net: mvneta: Configure XPS support 2015-12-11 20:28:20 -05:00
mellanox mlxsw: spectrum: Split vFID range in two 2015-12-15 11:58:21 -05:00
micrel Merge remote-tracking branches 'spi/topic/omap-100k', 'spi/topic/omap-uwire', 'spi/topic/owner', 'spi/topic/pxa' and 'spi/topic/pxa2xx' into spi-next 2015-11-04 11:02:12 +00:00
microchip net: encx24j600: move rev announcement to probe function 2015-11-20 10:45:20 -05:00
moxa net: moxa: Fix module autoload for OF platform driver 2015-09-21 16:09:02 -07:00
myricom net: provide generic busy polling to all NAPI drivers 2015-11-18 16:17:42 -05:00
natsemi
neterion drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
netronome net: add driver for Netronome NFP4000/NFP6000 NIC VFs 2015-12-03 14:17:51 -05:00
nuvoton
nvidia forcedeth: fix unilateral interrupt disabling in netpoll path 2015-10-27 19:45:23 -07:00
nxp net: lpc_eth: remove irq > NR_IRQS check from probe() 2015-12-03 15:02:24 -05:00
octeon drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
oki-semi drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
packetengines
pasemi
qlogic qede: Add support for {get, set}_pauseparam 2015-12-01 16:02:40 -05:00
qualcomm spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rdc
realtek r8169: fix kasan reported skb use-after-free. 2015-11-12 13:51:01 -05:00
renesas ravb: clear RIC1 in init instead of stop 2015-12-14 14:33:09 -05:00
rocker net: add netif_tx_napi_add() 2015-11-18 16:17:41 -05:00
samsung
seeq
sfc sfc: check warm_boot_count after other functions have been reset 2015-12-05 17:59:10 -05:00
sgi
silan
sis
smsc net: smsc911x: Reset PHY during initialization 2015-11-16 14:43:14 -05:00
stmicro Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
sun drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
synopsys dwc_eth_qos: Delete an unnecessary check before the function call "of_node_put" 2015-11-07 13:17:32 -05:00
tehuti drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
ti netcp: add more __le32 annotations 2015-12-11 19:34:39 -05:00
tile
toshiba
tundra
via via-velocity: unconditionally drop frames with bad l2 length 2015-11-17 14:37:16 -05:00
wiznet
xilinx drivers/net: get rid of unnecessary initializations in .get_drvinfo() 2015-10-16 00:24:10 -07:00
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c net/ethoc: support big-endian register layout 2015-09-23 15:33:15 -07:00
fealnx.c
jme.c net: jme: use kzalloc() instead of kmalloc+memset 2015-09-09 17:06:00 -07:00
jme.h
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
korina.c
lantiq_etop.c
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
netx-eth.c