Skip to content

Commit 917d5e0

Browse files
rkannoth1kuba-moo
authored andcommitted
octeontx2-af: Fix devlink unregister
Exact match feature is only available in CN10K-B. Unregister exact match devlink entry only for this silicon variant. Fixes: 87e4ea2 ("octeontx2-af: Debugsfs support for exact match.") Signed-off-by: Ratheesh Kannoth <[email protected]> Reviewed-by: Leon Romanovsky <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent a2df846 commit 917d5e0

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,6 +1500,9 @@ static const struct devlink_param rvu_af_dl_params[] = {
15001500
BIT(DEVLINK_PARAM_CMODE_RUNTIME),
15011501
rvu_af_dl_dwrr_mtu_get, rvu_af_dl_dwrr_mtu_set,
15021502
rvu_af_dl_dwrr_mtu_validate),
1503+
};
1504+
1505+
static const struct devlink_param rvu_af_dl_param_exact_match[] = {
15031506
DEVLINK_PARAM_DRIVER(RVU_AF_DEVLINK_PARAM_ID_NPC_EXACT_FEATURE_DISABLE,
15041507
"npc_exact_feature_disable", DEVLINK_PARAM_TYPE_STRING,
15051508
BIT(DEVLINK_PARAM_CMODE_RUNTIME),
@@ -1556,7 +1559,6 @@ int rvu_register_dl(struct rvu *rvu)
15561559
{
15571560
struct rvu_devlink *rvu_dl;
15581561
struct devlink *dl;
1559-
size_t size;
15601562
int err;
15611563

15621564
dl = devlink_alloc(&rvu_devlink_ops, sizeof(struct rvu_devlink),
@@ -1578,21 +1580,32 @@ int rvu_register_dl(struct rvu *rvu)
15781580
goto err_dl_health;
15791581
}
15801582

1583+
err = devlink_params_register(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));
1584+
if (err) {
1585+
dev_err(rvu->dev,
1586+
"devlink params register failed with error %d", err);
1587+
goto err_dl_health;
1588+
}
1589+
15811590
/* Register exact match devlink only for CN10K-B */
1582-
size = ARRAY_SIZE(rvu_af_dl_params);
15831591
if (!rvu_npc_exact_has_match_table(rvu))
1584-
size -= 1;
1592+
goto done;
15851593

1586-
err = devlink_params_register(dl, rvu_af_dl_params, size);
1594+
err = devlink_params_register(dl, rvu_af_dl_param_exact_match,
1595+
ARRAY_SIZE(rvu_af_dl_param_exact_match));
15871596
if (err) {
15881597
dev_err(rvu->dev,
1589-
"devlink params register failed with error %d", err);
1590-
goto err_dl_health;
1598+
"devlink exact match params register failed with error %d", err);
1599+
goto err_dl_exact_match;
15911600
}
15921601

1602+
done:
15931603
devlink_register(dl);
15941604
return 0;
15951605

1606+
err_dl_exact_match:
1607+
devlink_params_unregister(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));
1608+
15961609
err_dl_health:
15971610
rvu_health_reporters_destroy(rvu);
15981611
devlink_free(dl);
@@ -1605,8 +1618,14 @@ void rvu_unregister_dl(struct rvu *rvu)
16051618
struct devlink *dl = rvu_dl->dl;
16061619

16071620
devlink_unregister(dl);
1608-
devlink_params_unregister(dl, rvu_af_dl_params,
1609-
ARRAY_SIZE(rvu_af_dl_params));
1621+
1622+
devlink_params_unregister(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));
1623+
1624+
/* Unregister exact match devlink only for CN10K-B */
1625+
if (rvu_npc_exact_has_match_table(rvu))
1626+
devlink_params_unregister(dl, rvu_af_dl_param_exact_match,
1627+
ARRAY_SIZE(rvu_af_dl_param_exact_match));
1628+
16101629
rvu_health_reporters_destroy(rvu);
16111630
devlink_free(dl);
16121631
}

0 commit comments

Comments
 (0)