In recent months we fixed several bugs in the driver that could have
been avoided by re-evaluating some of the involved code paths and by
introducing relevant and comprehensive test cases.

This patchset tries to do that by introducing a set of small and mostly
non-functional changes in addition to a new test. I have further
improvements in mind, but they can be done in a different set.

Patch #1 makes sure we correctly sanitize upper devices of a VLAN
interface.

Patch #2 removes an unexpected behavior from the driver, in which routes
configured on a VLAN interface will cease being offloaded after certain
operations.

Patch #3 is a small cleanup.

Patch #4 simplifies the driver by removing reference counting from VLAN
entries configured on a port.

Patches #5-#6 simplify linking/unlinking from a bridge, especially when
LAG and VLAN devices are involved. They make both operations symmetric
even when ports are unlinked from a bridged LAG device.

Patch #7-#9 make router interface (RIF) deletion more robust by removing
reliance on device chain to indicate whether a NETDEV_DOWN event in the
inet{,6}addr notification chains should be processed. This is due to the
fact that IP addresses can be flushed from a netdev after it was
unlinked from its lower device.

Patch #10 adds a new test to for valid and invalid configurations over
mlxsw ports. Some of the test cases are derived from recent fixes. I
expect that more test cases will be added over time.

Ido Schimmel (10):
  mlxsw: spectrum: Sanitize VLAN interface's uppers
  mlxsw: spectrum_router: Do not destroy RIFs based on FID's reference
    count
  mlxsw: spectrum_fid: Remove unused function
  mlxsw: spectrum: Handle VLAN device unlinking
  mlxsw: spectrum: Remove reference count from VLAN entries
  mlxsw: spectrum: Properly cleanup LAG uppers when removing port from
    LAG
  mlxsw: spectrum_router: Propagate 'struct mlxsw_sp' further
  mlxsw: spectrum_router: Make RIF deletion more robust
  mlxsw: spectrum_router: Hold a reference on RIF's netdev
  selftests: mlxsw: Add rtnetlink tests

 .../net/ethernet/mellanox/mlxsw/spectrum.c    | 150 ++++---
 .../net/ethernet/mellanox/mlxsw/spectrum.h    |  12 +-
 .../ethernet/mellanox/mlxsw/spectrum_fid.c    |  34 +-
 .../ethernet/mellanox/mlxsw/spectrum_router.c | 166 +++++---
 .../mellanox/mlxsw/spectrum_switchdev.c       |  68 ++-
 .../selftests/drivers/net/mlxsw/rtnetlink.sh  | 392 ++++++++++++++++++
 6 files changed, 639 insertions(+), 183 deletions(-)

-- 
2.20.0

Reply via email to