The driver is using 802.1Q filtering identifiers (FIDs) to represent the different VLANs in the VLAN-aware bridge (only one is supported).
However, the device cannot assign a VNI to such FIDs, which prevents the driver from supporting the enslavement of VxLAN devices to the VLAN-aware bridge. This patchset works around this limitation by emulating 802.1Q FIDs using 802.1D FIDs, which can be assigned a VNI and so far have only been used in conjunction with VLAN-unaware bridges. The downside of this approach is that multiple {Port,VID}->FID entries are required, whereas a single VID->FID entry is required with "true" 802.1Q FIDs. First four patches introduce the new FID family of emulated 802.1Q FIDs and the associated type of router interfaces (RIFs). Last patch flips the driver to use this new FID family. The diff is relatively small because the internal implementation of each FID family is contained and hidden in spectrum_fid.c. Different internal users (e.g., bridge, router) are aware of the different FID types, but do not care about their internal implementation. This makes it trivial to swap the current implementation of 802.1Q FIDs with the new one, using 802.1D FIDs. Ido Schimmel (5): mlxsw: spectrum_switchdev: Do not set field when it is reserved mlxsw: spectrum_fid: Make flood index calculation more robust mlxsw: spectrum_fid: Introduce emulated 802.1Q FIDs mlxsw: spectrum_router: Introduce emulated VLAN RIFs mlxsw: spectrum: Flip driver to use emulated 802.1Q FIDs .../net/ethernet/mellanox/mlxsw/spectrum.c | 14 +++--- .../net/ethernet/mellanox/mlxsw/spectrum.h | 1 + .../ethernet/mellanox/mlxsw/spectrum_fid.c | 44 ++++++++++++++++++- .../ethernet/mellanox/mlxsw/spectrum_router.c | 11 ++++- .../mellanox/mlxsw/spectrum_switchdev.c | 3 +- 5 files changed, 63 insertions(+), 10 deletions(-) -- 2.19.1