1. 14 9月, 2016 4 次提交
  2. 10 9月, 2016 1 次提交
  3. 02 9月, 2016 2 次提交
  4. 27 8月, 2016 3 次提交
  5. 25 8月, 2016 3 次提交
  6. 18 8月, 2016 8 次提交
  7. 09 8月, 2016 1 次提交
  8. 26 7月, 2016 1 次提交
  9. 25 7月, 2016 2 次提交
  10. 21 7月, 2016 2 次提交
  11. 16 7月, 2016 2 次提交
  12. 06 7月, 2016 2 次提交
  13. 05 7月, 2016 6 次提交
    • I
      mlxsw: spectrum: Enable L3 interfaces on top of bridge devices · 99f44bb3
      Ido Schimmel 提交于
      As with the previously introduced L3 interfaces, listen to 'inetaddr'
      notifications sent for bridges devices configured on top of the port
      netdevs and create / destroy router interfaces (RIFs) accordingly.
      This also includes VLAN devices configured on top of the VLAN-aware
      bridge.
      
      The RIFs will be destroyed either when the last IP address is removed or
      when the underlying FID is is destroyed.
      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>
      99f44bb3
    • I
      mlxsw: spectrum: Configure FIDs based on bridge events · 701b186e
      Ido Schimmel 提交于
      Before introducing support for L3 interfaces on top of the VLAN-aware
      bridge we need to add some missing infrastructure.
      
      Such an interface can either be the bridge device itself or a VLAN
      device on top of it. In the first case the router interface (RIF) is
      associated with FID 1, which is created whenever the first port netdev
      joins the bridge. We currently assume the default PVID is 1 and that
      it's already created, as it seems reasonable. This can be extended in
      the future.
      
      However, in the second case it's entirely possible we've yet to create a
      matching FID. This can happen if the VLAN device was configured before
      making any bridge port member in the VLAN.
      
      Prevent such ordering problems by using the VLAN device's CHANGEUPPER
      event to configure the FID. Make the VLAN device hold a reference to the
      FID and prevent it from being destroyed even if none of the port netdevs
      is using it.
      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>
      701b186e
    • I
      mlxsw: spectrum: Unsplit the vFID range · 3ba2ebf4
      Ido Schimmel 提交于
      Previous commit deprecated the vFIDs used to get traffic to the CPU
      ('port_vfids'). Thus, we now use the vFIDs as god intended and the
      artificial split is no longer needed.
      
      Rename functions and variables to reflect that.
      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>
      3ba2ebf4
    • I
      mlxsw: spectrum: Introduce support for router interfaces · 99724c18
      Ido Schimmel 提交于
      Up until now we only supported bridged interfaces. Packets ingressing
      through the switch ports were either classified to FIDs (in the case of
      the VLAN-aware bridge) or vFIDs (in the case of VLAN-unaware bridges).
      The packets were then forwarded according to the FDB. Routing was done
      entirely in slowpath, by splitting the vFID range in two and using the
      lower 0.5K vFIDs as dummy bridges that simply flooded all incoming
      traffic to the CPU.
      
      Instead, allow packets to be routed in the device by creating router
      interfaces (RIFs) that will direct them to the router block.
      Specifically, the RIFs introduced here are Sub-port RIFs used for VLAN
      devices and port netdevs. Packets ingressing from the {Port / LAG ID, VID}
      with which the RIF was programmed with will be assigned to a special
      kind of FIDs called rFIDs and from there directed to the router.
      
      Create a RIF whenever the first IPv4 address was programmed on a VLAN /
      LAG / port netdev. Destroy it upon removal of the last IPv4 address.
      Receive these notifications by registering for the 'inetaddr'
      notification chain. A non-zero (10) priority is used for the
      notification block, so that RIFs will be created before routes are
      offloaded via FIB code.
      
      Note that another trigger for RIF destruction are CHANGEUPPER
      notifications causing the underlying FID's reference count to go down to
      zero. This can happen, for example, when a VLAN netdev with an IP address
      is put under bridge. While this configuration doesn't make sense it does
      cause the device and the kernel to get out of sync when the netdev is
      unbridged. We intend to address this in the future, hopefully in current
      cycle.
      
      Finally, Remove the lower 0.5K vFIDs, as they are deprecated by the RIFs,
      which will trap packets according to their DIP.
      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>
      99724c18
    • I
      mlxsw: spectrum: Edit RIF properties based on netdev events · 6e095fd4
      Ido Schimmel 提交于
      We are just about to introduce router interfaces (RIFs), but before that
      we need to be able update the device with the correct RIF attributes
      whenever they change for the netdev the RIF is backing. Two such
      attributes are MTU and MAC.
      
      The MAC is used both to set the source MAC of packets egressing from the
      RIF and also to program an FDB rule that will direct packets to the
      router block.
      
      Use the existing netdevice notification block and respond to CHANGEADDR
      and CHANGEMTU accordingly. Store both attributes in the RIF struct
      in case we need to revert to old attributes following a failed update.
      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>
      6e095fd4
    • J
      mlxsw: spectrum: Add couple of lower device helper functions · 7ce856aa
      Jiri Pirko 提交于
      Add functions that iterate over lower devices and find port device.
      As a dependency add netdev_for_each_all_lower_dev and
      netdev_for_each_all_lower_dev_rcu macro with
      netdev_all_lower_get_next and netdev_all_lower_get_next_rcu shelpers.
      
      Also, add functions to return mlxsw struct according to lower device
      found and mlxsw_port struct with a reference to lower device.
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Reviewed-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7ce856aa
  14. 03 7月, 2016 3 次提交
    • J
      mlxsw: spectrum: Add traps needed for router implementation · 7b27ce7b
      Jiri Pirko 提交于
      ip2me:
      To instruct HW to send trapped ip2me traffic to kernel, we have to add
      this trap. Selection ip2me traffic is introduced later on in this set.
      
      ARPs:
      We are going to stop flooding to CPU port when netdev isn't bridged and
      only get packets destined to the netdev's IP address and certain control
      packets.
      
      Add traps for ARP request (broadcast) and response (unicast) in order to
      get these to the CPU and resolve neighbours.
      
      host miss:
      If a packet is routed through a directly connected route and its
      destination IP is not in the device's neighbour table, then we need to
      trap it to CPU. This will cause the host to resolve the MAC of the
      neighbour, which will be eventually programmed to the device's table.
      
      router ingress:
      In order to trap packets in router part.
      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>
      7b27ce7b
    • I
      mlxsw: spectrum: Use action 'discard' when removing traps · 10f00aa1
      Ido Schimmel 提交于
      When removing packet traps we should use action 'discard' instead of
      'forward', as some trap IDs we'll add cannot be configured with the
      later. However, result is the same, as packets are not trapped to the
      CPU.
      
      In the future we will be able to reverse the operation properly by
      detaching the trap group from the CPU.
      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>
      10f00aa1
    • I
      mlxsw: spectrum: Add router interface struct · fa3054f5
      Ido Schimmel 提交于
      When enabling the router in the device we will represent L3 netdevs
      using router interfaces (RIFs). These will be specified whenever
      programming routes or neighbours on the netdev.
      
      Introduce the basic RIF infrastructure which allows one to lookup a RIF
      by its netdev. Later patches in the series will extend this, but the
      basic routines are needed now in order to direct traffic to CPU.
      
      Pointers to the RIF structs are stored in an array indexed by the RIF's
      number. This will allow us to efficiently update the kernel's neighbour
      table when regularly dumping the device's table.
      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>
      fa3054f5