From: Jiri Pirko <j...@mellanox.com>

Ido says:

The kernel can store several FIB aliases that share the same prefix and
length. These aliases can differ in other parameters such as TOS and
metric, which are taken into account during lookup.

Offloading devices might not have the same flexibility, allowing only a
single route with the same prefix and length to be reflected. mlxsw is
one such device.

This patchset aims to correctly handle this situation in the mlxsw
driver. The first four patches introduce small changes in the IPv4 FIB
code, so that listeners of the FIB notification chain will be able to
correctly handle identical routes.

The last three patches build on top of previous work and introduce the
necessary changes in the mlxsw driver. The biggest change is the
introduction of a FIB node, where identical routes are chained, instead
of a primitive reference counting. This is explained in detail in the
fifth patch.

Ido Schimmel (7):
  ipv4: fib: Only flush FIB aliases belonging to currently flushed table
  ipv4: fib: Send deletion notification with actual FIB alias type
  ipv4: fib: Send notification before deleting FIB alias
  ipv4: fib: Add events for FIB replace and append
  mlxsw: spectrum_router: Correctly handle identical routes
  mlxsw: spectrum_router: Add support for route append
  mlxsw: spectrum_router: Add support for route replace

 .../net/ethernet/mellanox/mlxsw/spectrum_router.c  | 644 +++++++++++++++------
 include/net/ip_fib.h                               |   3 +-
 net/ipv4/fib_trie.c                                |  42 +-
 3 files changed, 489 insertions(+), 200 deletions(-)

-- 
2.7.4

Reply via email to