Skip to content

Commit 0cb0941

Browse files
rkannoth1gregkh
authored andcommitted
octeontx2-af: Fix devlink unregister
[ Upstream commit 917d5e0 ] 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]> Signed-off-by: Sasha Levin <[email protected]>
1 parent adf848e commit 0cb0941

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),
@@ -1563,7 +1566,6 @@ int rvu_register_dl(struct rvu *rvu)
15631566
{
15641567
struct rvu_devlink *rvu_dl;
15651568
struct devlink *dl;
1566-
size_t size;
15671569
int err;
15681570

15691571
dl = devlink_alloc(&rvu_devlink_ops, sizeof(struct rvu_devlink),
@@ -1585,21 +1587,32 @@ int rvu_register_dl(struct rvu *rvu)
15851587
goto err_dl_health;
15861588
}
15871589

1590+
err = devlink_params_register(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));
1591+
if (err) {
1592+
dev_err(rvu->dev,
1593+
"devlink params register failed with error %d", err);
1594+
goto err_dl_health;
1595+
}
1596+
15881597
/* Register exact match devlink only for CN10K-B */
1589-
size = ARRAY_SIZE(rvu_af_dl_params);
15901598
if (!rvu_npc_exact_has_match_table(rvu))
1591-
size -= 1;
1599+
goto done;
15921600

1593-
err = devlink_params_register(dl, rvu_af_dl_params, size);
1601+
err = devlink_params_register(dl, rvu_af_dl_param_exact_match,
1602+
ARRAY_SIZE(rvu_af_dl_param_exact_match));
15941603
if (err) {
15951604
dev_err(rvu->dev,
1596-
"devlink params register failed with error %d", err);
1597-
goto err_dl_health;
1605+
"devlink exact match params register failed with error %d", err);
1606+
goto err_dl_exact_match;
15981607
}
15991608

1609+
done:
16001610
devlink_register(dl);
16011611
return 0;
16021612

1613+
err_dl_exact_match:
1614+
devlink_params_unregister(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));
1615+
16031616
err_dl_health:
16041617
rvu_health_reporters_destroy(rvu);
16051618
devlink_free(dl);
@@ -1612,8 +1625,14 @@ void rvu_unregister_dl(struct rvu *rvu)
16121625
struct devlink *dl = rvu_dl->dl;
16131626

16141627
devlink_unregister(dl);
1615-
devlink_params_unregister(dl, rvu_af_dl_params,
1616-
ARRAY_SIZE(rvu_af_dl_params));
1628+
1629+
devlink_params_unregister(dl, rvu_af_dl_params, ARRAY_SIZE(rvu_af_dl_params));
1630+
1631+
/* Unregister exact match devlink only for CN10K-B */
1632+
if (rvu_npc_exact_has_match_table(rvu))
1633+
devlink_params_unregister(dl, rvu_af_dl_param_exact_match,
1634+
ARRAY_SIZE(rvu_af_dl_param_exact_match));
1635+
16171636
rvu_health_reporters_destroy(rvu);
16181637
devlink_free(dl);
16191638
}

0 commit comments

Comments
 (0)