1. 18 5月, 2017 5 次提交
  2. 01 5月, 2017 1 次提交
    • I
      mlxsw: spectrum_router: Simplify VRF enslavement · b1e45526
      Ido Schimmel 提交于
      When a netdev is enslaved to a VRF master, its router interface (RIF)
      needs to be destroyed (if exists) and a new one created using the
      corresponding virtual router (VR).
      
      >From the driver's perspective, the above is equivalent to an inetaddr
      event sent for this netdev. Therefore, when a port netdev (or its
      uppers) are enslaved to a VRF master, call the same function that
      would've been called had a NETDEV_UP was sent for this netdev in the
      inetaddr notification chain.
      
      This patch also fixes a bug when a LAG netdev with an existing RIF is
      enslaved to a VRF. Before this patch, each LAG port would drop the
      reference on the RIF, but would re-join the same one (in the wrong VR)
      soon after. With this patch, the corresponding RIF is first destroyed
      and a new one is created using the correct VR.
      
      Fixes: 7179eb5a ("mlxsw: spectrum_router: Add support for VRFs")
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Reviewed-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b1e45526
  3. 21 4月, 2017 5 次提交
  4. 29 3月, 2017 1 次提交
  5. 25 3月, 2017 3 次提交
  6. 22 3月, 2017 2 次提交
  7. 17 3月, 2017 2 次提交
  8. 13 3月, 2017 3 次提交
  9. 11 3月, 2017 5 次提交
  10. 09 3月, 2017 1 次提交
  11. 15 2月, 2017 1 次提交
  12. 11 2月, 2017 2 次提交
  13. 09 2月, 2017 1 次提交
    • I
      mlxsw: spectrum_router: Flush resources when RIF is deleted · 9665b745
      Ido Schimmel 提交于
      When the last IP address is removed from a netdev, its RIF is deleted.
      However, if user didn't first remove neighbours and nexthops using this
      interface, then they would still be present in the device's tables.
      
      Therefore, whenever a RIF is deleted, make sure all the neighbours and
      nexthops (adjacency entries) using it are removed from the relevant
      tables as well.
      
      The action associated with any route using this RIF would be refreshed,
      most likely to trap. If the kernel decides to remove the route (f.e.,
      because all the nexthops are now DEAD), then an event would be sent,
      causing the route to be removed from the device.
      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>
      9665b745
  14. 07 2月, 2017 1 次提交
    • I
      mlxsw: spectrum_router: Simplify neighbour reflection · 5c8802f1
      Ido Schimmel 提交于
      Up until now we had two interfaces for neighbour related configuration:
      ndo_neigh_{construct,destroy} and NEIGH_UPDATE netevents. The ndos were
      used to add and remove neighbours from the driver's cache, whereas the
      netevent was used to reflect the neighbours into the device's tables.
      
      However, if the NUD state of a neighbour isn't NUD_VALID or if the
      neighbour is dead, then there's really no reason for us to keep it
      inside our cache. The only exception to this rule are neighbours that
      are also used for nexthops, which we periodically refresh to get them
      resolved.
      
      We can therefore eliminate the ndo entry point into the driver and
      simplify the code, making it similar to the FIB reflection, which is
      based solely on events. This also helps us avoid a locking issue, in
      which the RIF cache was traversed without proper locking during
      insertion into the neigh entry cache.
      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>
      5c8802f1
  15. 04 2月, 2017 2 次提交
  16. 25 1月, 2017 1 次提交
  17. 12 1月, 2017 1 次提交
  18. 10 1月, 2017 3 次提交