1. 16 12月, 2015 5 次提交
    • 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
    • I
      mlxsw: spectrum: Allocate active VLANs only for port netdevs · bd40e9d6
      Ido Schimmel 提交于
      When adding support for bridges between VLAN interfaces, we'll introduce
      a new entity called a vPort, which is a represntation of the VLAN
      interface in the hardware.
      
      The main difference between a vPort and a physical port is that several
      FIDs can be bound to the latter, whereas only one (called a vFID) can be
      bound to the first.
      
      Therefore, it makes sense to use the same struct to represent the two,
      but to only allocate the 'active_vlans' bitmap in case of a physical
      port.
      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>
      bd40e9d6
    • I
      switchdev: Pass original device to port netdev driver · 6ff64f6f
      Ido Schimmel 提交于
      switchdev drivers need to know the netdev on which the switchdev op was
      invoked. For example, the STP state of a VLAN interface configured on top
      of a port can change while being member in a bridge. In this case, the
      underlying driver should only change the STP state of that particular
      VLAN and not of all the VLANs configured on the port.
      
      However, current switchdev infrastructure only passes the port netdev down
      to the driver. Solve that by passing the original device down to the
      driver as part of the required switchdev object / attribute.
      
      This doesn't entail any change in current switchdev drivers. It simply
      enables those supporting stacked devices to know the originating device
      and act accordingly.
      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>
      6ff64f6f
    • I
      switchdev: vlan: Use switchdev_port* in vlan_netdev_ops · 9d547833
      Ido Schimmel 提交于
      We need to be able to propagate static FDB entries and certain bridge
      port attributes (e.g. learning, flooding) down to the port netdev
      driver when bridge port is a VLAN interface.
      
      Achieve that by setting ndo_bridge* and ndo_fdb* in vlan_netdev_ops to
      the corresponding switchdev_port* functions. This is consistent with
      team and bond devices.
      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>
      9d547833
    • D
      Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 335b3209
      David S. Miller 提交于
      Jeff Kirsher says:
      
      ====================
      1GbE Intel Wired LAN Driver Updates 2015-12-14
      
      This series contains updates to e1000e and igb.
      
      Alex Duyck changes e1000_up() to void since it always returned 0, also
      by making it void, we can drop some code since we no longer have to worry
      about non-zero return values.
      
      Aaron Sierra removes GS40G specific defines and functions since the i210
      internal PHY can be accessed with the access functions shared by 82580,
      i350 and i354 devices.  Also removes the code to add the PHY address into
      the PCDL register address, since there is no real reason to do so.
      
      Joe updates the cable length function reports all four pairs true min, max
      and average cable length for i210.  Also updated ethtool to use enum-based
      labels instead of hard coded values.
      
      Benjamin Poirier cleans up code that is never reachable since MSI-X
      interrupts are not shared in e1000e.  Also removes the ICR read in the
      other interrupt handler, since the information is not needed and IMS is
      configured such that the only link status change can trigger the other
      interrupt handler.  Fixed in MSI-X mode, there is no handler for the LSC
      interrupt so there is no point in writing that to ICS now that we always
      assume other interrupts are caused by LSC.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      335b3209
  2. 15 12月, 2015 28 次提交
  3. 14 12月, 2015 7 次提交