1. 25 3月, 2017 2 次提交
  2. 22 3月, 2017 1 次提交
  3. 17 3月, 2017 6 次提交
  4. 11 3月, 2017 6 次提交
  5. 02 3月, 2017 1 次提交
  6. 11 2月, 2017 3 次提交
    • I
      mlxsw: spectrum_router: Add support for route replace · 599cf8f9
      Ido Schimmel 提交于
      Upon the reception of an ENTRY_REPLACE notification, resolve the FIB
      node corresponding to the prefix and length and insert the new route
      before the first matching entry.
      
      Since the notification also signals the deletion of the replaced route,
      delete it from the driver's 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>
      599cf8f9
    • I
      mlxsw: spectrum_router: Add support for route append · 4283bce5
      Ido Schimmel 提交于
      When a new route is appended, it's placed after existing routes sharing
      the same parameters (prefix, length, table ID, TOS and priority).
      
      While the device supports only one route with the same prefix and length
      in a single table, it's important to correctly place the appended route
      in the driver's cache, as when a route is deleted the next one is
      programmed into the device.
      
      Following the reception of an ENTRY_APPEND notification, resolve the
      FIB node corresponding to the prefix and length and correctly place the
      new entry in its entry list.
      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>
      4283bce5
    • I
      mlxsw: spectrum_router: Correctly handle identical routes · 9aecce1c
      Ido Schimmel 提交于
      In the device, routes are indexed in a routing table based on the prefix
      and its length. This is in contrast to the kernel's FIB where several
      FIB aliases can exist with these parameters being identical. In such
      cases, the routes will be sorted by table ID (LOCAL first, then MAIN),
      TOS and finally priority (metric).
      
      During lookup, these routes will be evaluated in order. In case the
      packet's TOS field is non-zero and a FIB alias with a matching TOS is
      found, then it's selected. Otherwise, the lookup defaults to the route
      with TOS 0 (if it exists). However, if the requested scope is narrower
      than the one found, then the lookup continues.
      
      To best reflect the kernel's datapath we should take the above into
      account. Given a prefix and its length, the reflected route will always
      be the first one in the FIB alias list. However, if the route has a
      non-zero TOS then its action will be converted to trap instead of
      forward, since we currently don't support TOS-based routing. If this
      turns out to be a real issue, we can add support for that using
      policy-based switching.
      
      The route's scope can be effectively ignored as any packet being routed
      by the device would've been looked-up using the widest scope (UNIVERSE).
      
      To achieve that we need to do two changes. Firstly, we need to create
      another struct (FIB node) that will hold the list of FIB entries sharing
      the same prefix and length. This struct will be hashed using these two
      parameters.
      
      Secondly, we need to change the route reflection to match the above
      logic, so that the first FIB entry in the list will be programmed into
      the device while the rest will remain in the driver's cache in case of
      subsequent changes.
      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>
      9aecce1c
  7. 09 2月, 2017 14 次提交
  8. 07 2月, 2017 7 次提交