Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1e5d9432 authored by Nogah Frankel's avatar Nogah Frankel Committed by David S. Miller
Browse files

mlxsw: spectrum: Extend port_orig_get for bridge devices



The function mlxsw_sp_port_orig_get returns the vport from the physical
port if needed, based on the original device.
This patch addresses the case where the original device is a bridge.
If it is vlan unaware bridge, it returns the matching vport. If it is vlan
aware bridge, there is no matching vport, and it returns the original port.

Signed-off-by: default avatarNogah Frankel <nogahf@mellanox.com>
Signed-off-by: default avatarYotam Gigi <yotamg@mellanox.com>
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8ecd4591
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -71,8 +71,21 @@ mlxsw_sp_port_orig_get(struct net_device *dev,
		       struct mlxsw_sp_port *mlxsw_sp_port)
{
	struct mlxsw_sp_port *mlxsw_sp_vport;
	struct mlxsw_sp_fid *fid;
	u16 vid;

	if (netif_is_bridge_master(dev)) {
		fid = mlxsw_sp_vfid_find(mlxsw_sp_port->mlxsw_sp,
					 dev);
		if (fid) {
			mlxsw_sp_vport =
				mlxsw_sp_port_vport_find_by_fid(mlxsw_sp_port,
								fid->fid);
			WARN_ON(!mlxsw_sp_vport);
			return mlxsw_sp_vport;
		}
	}

	if (!is_vlan_dev(dev))
		return mlxsw_sp_port;