mlxsw: spectrum_router: Skip loopback RIFs during MAC validation
authorAmit Cohen <amitc@mellanox.com>
Sun, 29 Dec 2019 11:40:22 +0000 (13:40 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 29 Dec 2019 20:29:13 +0000 (12:29 -0800)
commit314bd842d98e1035cc40b671a71e07f48420e58f
treeb015f7574b61566577129718c492fc8a7fde0b30
parentbd6f48546b9cb7a785344fc78058c420923d7ed8
mlxsw: spectrum_router: Skip loopback RIFs during MAC validation

When a router interface (RIF) is created the MAC address of the backing
netdev is verified to have the same MSBs as existing RIFs. This is
required in order to avoid changing existing RIF MAC addresses that all
share the same MSBs.

Loopback RIFs are special in this regard as they do not have a MAC
address, given they are only used to loop packets from the overlay to
the underlay.

Without this change, an error is returned when trying to create a RIF
after the creation of a GRE tunnel that is represented by a loopback
RIF. 'rif->dev->dev_addr' points to the GRE device's local IP, which
does not share the same MSBs as physical interfaces. Adding an IP
address to any physical interface results in:

Error: mlxsw_spectrum: All router interface MAC addresses must have the
same prefix.

Fix this by skipping loopback RIFs during MAC validation.

Fixes: 74bc99397438 ("mlxsw: spectrum_router: Veto unsupported RIF MAC addresses")
Signed-off-by: Amit Cohen <amitc@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c