Skip to content

Commit 17eda11

Browse files
pmachatakuba-moo
authored andcommitted
mlxsw: spectrum_fid: Make mlxsw_sp_fid_ops.setup return an int
This operation will be fallible for rFIDs in CFF mode, which will be introduced in follow-up patches. Have it return an int, and handle the failures in the caller. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Amit Cohen <amcohen@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Link: https://lore.kernel.org/r/75f1b85c0cb86bea5501fcc8657042f221a78b32.1701183892.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 82ff7a1 commit 17eda11

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

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

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ struct mlxsw_sp_flood_table {
7676
};
7777

7878
struct mlxsw_sp_fid_ops {
79-
void (*setup)(struct mlxsw_sp_fid *fid, const void *arg);
79+
int (*setup)(struct mlxsw_sp_fid *fid, const void *arg);
8080
int (*configure)(struct mlxsw_sp_fid *fid);
8181
void (*deconfigure)(struct mlxsw_sp_fid *fid);
8282
int (*index_alloc)(struct mlxsw_sp_fid *fid, const void *arg,
@@ -417,12 +417,13 @@ u16 mlxsw_sp_fid_8021q_vid(const struct mlxsw_sp_fid *fid)
417417
return mlxsw_sp_fid_8021q_fid(fid)->vid;
418418
}
419419

420-
static void mlxsw_sp_fid_8021q_setup(struct mlxsw_sp_fid *fid, const void *arg)
420+
static int mlxsw_sp_fid_8021q_setup(struct mlxsw_sp_fid *fid, const void *arg)
421421
{
422422
u16 vid = *(u16 *) arg;
423423

424424
mlxsw_sp_fid_8021q_fid(fid)->vid = vid;
425425
fid->fid_offset = fid->fid_index - fid->fid_family->start_index;
426+
return 0;
426427
}
427428

428429
static enum mlxsw_reg_sfmr_op mlxsw_sp_sfmr_op(bool valid)
@@ -785,12 +786,13 @@ mlxsw_sp_fid_8021d_fid(const struct mlxsw_sp_fid *fid)
785786
return container_of(fid, struct mlxsw_sp_fid_8021d, common);
786787
}
787788

788-
static void mlxsw_sp_fid_8021d_setup(struct mlxsw_sp_fid *fid, const void *arg)
789+
static int mlxsw_sp_fid_8021d_setup(struct mlxsw_sp_fid *fid, const void *arg)
789790
{
790791
int br_ifindex = *(int *) arg;
791792

792793
mlxsw_sp_fid_8021d_fid(fid)->br_ifindex = br_ifindex;
793794
fid->fid_offset = fid->fid_index - fid->fid_family->start_index;
795+
return 0;
794796
}
795797

796798
static int mlxsw_sp_fid_8021d_configure(struct mlxsw_sp_fid *fid)
@@ -1127,11 +1129,12 @@ mlxsw_sp_fid_8021q_fdb_clear_offload(const struct mlxsw_sp_fid *fid,
11271129
br_fdb_clear_offload(nve_dev, mlxsw_sp_fid_8021q_vid(fid));
11281130
}
11291131

1130-
static void mlxsw_sp_fid_rfid_setup_ctl(struct mlxsw_sp_fid *fid,
1131-
const void *arg)
1132+
static int mlxsw_sp_fid_rfid_setup_ctl(struct mlxsw_sp_fid *fid,
1133+
const void *arg)
11321134
{
11331135
/* In controlled mode, the FW takes care of FID placement. */
11341136
fid->fid_offset = 0;
1137+
return 0;
11351138
}
11361139

11371140
static int mlxsw_sp_fid_rfid_configure(struct mlxsw_sp_fid *fid)
@@ -1272,9 +1275,10 @@ static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_rfid_ops_ctl = {
12721275
.vid_to_fid_rif_update = mlxsw_sp_fid_rfid_vid_to_fid_rif_update,
12731276
};
12741277

1275-
static void mlxsw_sp_fid_dummy_setup(struct mlxsw_sp_fid *fid, const void *arg)
1278+
static int mlxsw_sp_fid_dummy_setup(struct mlxsw_sp_fid *fid, const void *arg)
12761279
{
12771280
fid->fid_offset = 0;
1281+
return 0;
12781282
}
12791283

12801284
static int mlxsw_sp_fid_dummy_configure(struct mlxsw_sp_fid *fid)
@@ -1590,7 +1594,9 @@ static struct mlxsw_sp_fid *mlxsw_sp_fid_get(struct mlxsw_sp *mlxsw_sp,
15901594
fid->fid_index = fid_index;
15911595
__set_bit(fid_index - fid_family->start_index, fid_family->fids_bitmap);
15921596

1593-
fid->fid_family->ops->setup(fid, arg);
1597+
err = fid->fid_family->ops->setup(fid, arg);
1598+
if (err)
1599+
goto err_setup;
15941600

15951601
err = fid->fid_family->ops->configure(fid);
15961602
if (err)
@@ -1608,6 +1614,7 @@ static struct mlxsw_sp_fid *mlxsw_sp_fid_get(struct mlxsw_sp *mlxsw_sp,
16081614
err_rhashtable_insert:
16091615
fid->fid_family->ops->deconfigure(fid);
16101616
err_configure:
1617+
err_setup:
16111618
__clear_bit(fid_index - fid_family->start_index,
16121619
fid_family->fids_bitmap);
16131620
err_index_alloc:

0 commit comments

Comments
 (0)