mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 00:56:49 +07:00
mlxsw: Adding VID to FID translatation
Adding a generic function that translate VID to FID. Signed-off-by: Elad Raz <eladr@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
53ae628316
commit
e4b6f6931c
@ -51,6 +51,23 @@
|
||||
#include "core.h"
|
||||
#include "reg.h"
|
||||
|
||||
static u16 mlxsw_sp_port_vid_to_fid_get(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
u16 vid)
|
||||
{
|
||||
u16 fid = vid;
|
||||
|
||||
if (mlxsw_sp_port_is_vport(mlxsw_sp_port)) {
|
||||
u16 vfid = mlxsw_sp_vport_vfid_get(mlxsw_sp_port);
|
||||
|
||||
fid = mlxsw_sp_vfid_to_fid(vfid);
|
||||
}
|
||||
|
||||
if (!fid)
|
||||
fid = mlxsw_sp_port->pvid;
|
||||
|
||||
return fid;
|
||||
}
|
||||
|
||||
static struct mlxsw_sp_port *
|
||||
mlxsw_sp_port_orig_get(struct net_device *dev,
|
||||
struct mlxsw_sp_port *mlxsw_sp_port)
|
||||
@ -641,22 +658,16 @@ mlxsw_sp_port_fdb_static_add(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
const struct switchdev_obj_port_fdb *fdb,
|
||||
struct switchdev_trans *trans)
|
||||
{
|
||||
u16 fid = fdb->vid;
|
||||
u16 fid = mlxsw_sp_port_vid_to_fid_get(mlxsw_sp_port, fdb->vid);
|
||||
u16 lag_vid = 0;
|
||||
|
||||
if (switchdev_trans_ph_prepare(trans))
|
||||
return 0;
|
||||
|
||||
if (mlxsw_sp_port_is_vport(mlxsw_sp_port)) {
|
||||
u16 vfid = mlxsw_sp_vport_vfid_get(mlxsw_sp_port);
|
||||
|
||||
fid = mlxsw_sp_vfid_to_fid(vfid);
|
||||
lag_vid = mlxsw_sp_vport_vid_get(mlxsw_sp_port);
|
||||
}
|
||||
|
||||
if (!fid)
|
||||
fid = mlxsw_sp_port->pvid;
|
||||
|
||||
if (!mlxsw_sp_port->lagged)
|
||||
return mlxsw_sp_port_fdb_uc_op(mlxsw_sp_port->mlxsw_sp,
|
||||
mlxsw_sp_port->local_port,
|
||||
@ -787,13 +798,10 @@ static int
|
||||
mlxsw_sp_port_fdb_static_del(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
const struct switchdev_obj_port_fdb *fdb)
|
||||
{
|
||||
u16 fid = fdb->vid;
|
||||
u16 fid = mlxsw_sp_port_vid_to_fid_get(mlxsw_sp_port, fdb->vid);
|
||||
u16 lag_vid = 0;
|
||||
|
||||
if (mlxsw_sp_port_is_vport(mlxsw_sp_port)) {
|
||||
u16 vfid = mlxsw_sp_vport_vfid_get(mlxsw_sp_port);
|
||||
|
||||
fid = mlxsw_sp_vfid_to_fid(vfid);
|
||||
lag_vid = mlxsw_sp_vport_vid_get(mlxsw_sp_port);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user