Skip to content

Commit 048fcbb

Browse files
Amit Cohendavem330
authored andcommitted
mlxsw: spectrum_fid: Implement missing operations for rFID and dummy FID
rFID and dummy FID do not support FID->VNI mapping. Currently, these families do not implement the vni_{set, clear}() operations. Instead, there is a check if these functions are implemented. Similarly, 'SFMR.nve_tunnel_flood_ptr' is not relevant for rFID and dummy FID, therefore, these families do not implement nve_flood_index_{set, clear}(). Align the behavior to other unsupported operations, implement the functions and just return an error or warn. Then, checks like '!ops->vni_set' can be removed. Signed-off-by: Amit Cohen <[email protected]> Signed-off-by: Ido Schimmel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 784763e commit 048fcbb

File tree

1 file changed

+54
-4
lines changed

1 file changed

+54
-4
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ int mlxsw_sp_fid_nve_flood_index_set(struct mlxsw_sp_fid *fid,
201201
const struct mlxsw_sp_fid_ops *ops = fid_family->ops;
202202
int err;
203203

204-
if (WARN_ON(!ops->nve_flood_index_set || fid->nve_flood_index_valid))
204+
if (WARN_ON(fid->nve_flood_index_valid))
205205
return -EINVAL;
206206

207207
err = ops->nve_flood_index_set(fid, nve_flood_index);
@@ -219,7 +219,7 @@ void mlxsw_sp_fid_nve_flood_index_clear(struct mlxsw_sp_fid *fid)
219219
struct mlxsw_sp_fid_family *fid_family = fid->fid_family;
220220
const struct mlxsw_sp_fid_ops *ops = fid_family->ops;
221221

222-
if (WARN_ON(!ops->nve_flood_index_clear || !fid->nve_flood_index_valid))
222+
if (WARN_ON(!fid->nve_flood_index_valid))
223223
return;
224224

225225
fid->nve_flood_index_valid = false;
@@ -239,7 +239,7 @@ int mlxsw_sp_fid_vni_set(struct mlxsw_sp_fid *fid, enum mlxsw_sp_nve_type type,
239239
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
240240
int err;
241241

242-
if (WARN_ON(!ops->vni_set || fid->vni_valid))
242+
if (WARN_ON(fid->vni_valid))
243243
return -EINVAL;
244244

245245
fid->nve_type = type;
@@ -271,7 +271,7 @@ void mlxsw_sp_fid_vni_clear(struct mlxsw_sp_fid *fid)
271271
const struct mlxsw_sp_fid_ops *ops = fid_family->ops;
272272
struct mlxsw_sp *mlxsw_sp = fid_family->mlxsw_sp;
273273

274-
if (WARN_ON(!ops->vni_clear || !fid->vni_valid))
274+
if (WARN_ON(!fid->vni_valid))
275275
return;
276276

277277
fid->vni_valid = false;
@@ -820,6 +820,27 @@ mlxsw_sp_fid_rfid_port_vid_unmap(struct mlxsw_sp_fid *fid,
820820
mlxsw_sp->fid_core->port_fid_mappings[local_port]--;
821821
}
822822

823+
static int mlxsw_sp_fid_rfid_vni_set(struct mlxsw_sp_fid *fid, __be32 vni)
824+
{
825+
return -EOPNOTSUPP;
826+
}
827+
828+
static void mlxsw_sp_fid_rfid_vni_clear(struct mlxsw_sp_fid *fid)
829+
{
830+
WARN_ON_ONCE(1);
831+
}
832+
833+
static int mlxsw_sp_fid_rfid_nve_flood_index_set(struct mlxsw_sp_fid *fid,
834+
u32 nve_flood_index)
835+
{
836+
return -EOPNOTSUPP;
837+
}
838+
839+
static void mlxsw_sp_fid_rfid_nve_flood_index_clear(struct mlxsw_sp_fid *fid)
840+
{
841+
WARN_ON_ONCE(1);
842+
}
843+
823844
static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_rfid_ops = {
824845
.setup = mlxsw_sp_fid_rfid_setup,
825846
.configure = mlxsw_sp_fid_rfid_configure,
@@ -828,6 +849,10 @@ static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_rfid_ops = {
828849
.compare = mlxsw_sp_fid_rfid_compare,
829850
.port_vid_map = mlxsw_sp_fid_rfid_port_vid_map,
830851
.port_vid_unmap = mlxsw_sp_fid_rfid_port_vid_unmap,
852+
.vni_set = mlxsw_sp_fid_rfid_vni_set,
853+
.vni_clear = mlxsw_sp_fid_rfid_vni_clear,
854+
.nve_flood_index_set = mlxsw_sp_fid_rfid_nve_flood_index_set,
855+
.nve_flood_index_clear = mlxsw_sp_fid_rfid_nve_flood_index_clear,
831856
};
832857

833858
#define MLXSW_SP_RFID_BASE (15 * 1024)
@@ -874,12 +899,37 @@ static bool mlxsw_sp_fid_dummy_compare(const struct mlxsw_sp_fid *fid,
874899
return true;
875900
}
876901

902+
static int mlxsw_sp_fid_dummy_vni_set(struct mlxsw_sp_fid *fid, __be32 vni)
903+
{
904+
return -EOPNOTSUPP;
905+
}
906+
907+
static void mlxsw_sp_fid_dummy_vni_clear(struct mlxsw_sp_fid *fid)
908+
{
909+
WARN_ON_ONCE(1);
910+
}
911+
912+
static int mlxsw_sp_fid_dummy_nve_flood_index_set(struct mlxsw_sp_fid *fid,
913+
u32 nve_flood_index)
914+
{
915+
return -EOPNOTSUPP;
916+
}
917+
918+
static void mlxsw_sp_fid_dummy_nve_flood_index_clear(struct mlxsw_sp_fid *fid)
919+
{
920+
WARN_ON_ONCE(1);
921+
}
922+
877923
static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_dummy_ops = {
878924
.setup = mlxsw_sp_fid_dummy_setup,
879925
.configure = mlxsw_sp_fid_dummy_configure,
880926
.deconfigure = mlxsw_sp_fid_dummy_deconfigure,
881927
.index_alloc = mlxsw_sp_fid_dummy_index_alloc,
882928
.compare = mlxsw_sp_fid_dummy_compare,
929+
.vni_set = mlxsw_sp_fid_dummy_vni_set,
930+
.vni_clear = mlxsw_sp_fid_dummy_vni_clear,
931+
.nve_flood_index_set = mlxsw_sp_fid_dummy_nve_flood_index_set,
932+
.nve_flood_index_clear = mlxsw_sp_fid_dummy_nve_flood_index_clear,
883933
};
884934

885935
static const struct mlxsw_sp_fid_family mlxsw_sp_fid_dummy_family = {

0 commit comments

Comments
 (0)