• I
    mlxsw: spectrum: Split vFID range in two · 7f71eb46
    Ido Schimmel 提交于
    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: NIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: NJiri Pirko <jiri@mellanox.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    7f71eb46
spectrum.c 65.4 KB