@@ -1500,6 +1500,9 @@ static const struct devlink_param rvu_af_dl_params[] = {
1500
1500
BIT (DEVLINK_PARAM_CMODE_RUNTIME ),
1501
1501
rvu_af_dl_dwrr_mtu_get , rvu_af_dl_dwrr_mtu_set ,
1502
1502
rvu_af_dl_dwrr_mtu_validate ),
1503
+ };
1504
+
1505
+ static const struct devlink_param rvu_af_dl_param_exact_match [] = {
1503
1506
DEVLINK_PARAM_DRIVER (RVU_AF_DEVLINK_PARAM_ID_NPC_EXACT_FEATURE_DISABLE ,
1504
1507
"npc_exact_feature_disable" , DEVLINK_PARAM_TYPE_STRING ,
1505
1508
BIT (DEVLINK_PARAM_CMODE_RUNTIME ),
@@ -1556,7 +1559,6 @@ int rvu_register_dl(struct rvu *rvu)
1556
1559
{
1557
1560
struct rvu_devlink * rvu_dl ;
1558
1561
struct devlink * dl ;
1559
- size_t size ;
1560
1562
int err ;
1561
1563
1562
1564
dl = devlink_alloc (& rvu_devlink_ops , sizeof (struct rvu_devlink ),
@@ -1578,21 +1580,32 @@ int rvu_register_dl(struct rvu *rvu)
1578
1580
goto err_dl_health ;
1579
1581
}
1580
1582
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
+
1581
1590
/* Register exact match devlink only for CN10K-B */
1582
- size = ARRAY_SIZE (rvu_af_dl_params );
1583
1591
if (!rvu_npc_exact_has_match_table (rvu ))
1584
- size -= 1 ;
1592
+ goto done ;
1585
1593
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 ));
1587
1596
if (err ) {
1588
1597
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 ;
1591
1600
}
1592
1601
1602
+ done :
1593
1603
devlink_register (dl );
1594
1604
return 0 ;
1595
1605
1606
+ err_dl_exact_match :
1607
+ devlink_params_unregister (dl , rvu_af_dl_params , ARRAY_SIZE (rvu_af_dl_params ));
1608
+
1596
1609
err_dl_health :
1597
1610
rvu_health_reporters_destroy (rvu );
1598
1611
devlink_free (dl );
@@ -1605,8 +1618,14 @@ void rvu_unregister_dl(struct rvu *rvu)
1605
1618
struct devlink * dl = rvu_dl -> dl ;
1606
1619
1607
1620
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
+
1610
1629
rvu_health_reporters_destroy (rvu );
1611
1630
devlink_free (dl );
1612
1631
}
0 commit comments