@@ -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 ),
@@ -1563,7 +1566,6 @@ int rvu_register_dl(struct rvu *rvu)
1563
1566
{
1564
1567
struct rvu_devlink * rvu_dl ;
1565
1568
struct devlink * dl ;
1566
- size_t size ;
1567
1569
int err ;
1568
1570
1569
1571
dl = devlink_alloc (& rvu_devlink_ops , sizeof (struct rvu_devlink ),
@@ -1585,21 +1587,32 @@ int rvu_register_dl(struct rvu *rvu)
1585
1587
goto err_dl_health ;
1586
1588
}
1587
1589
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
+
1588
1597
/* Register exact match devlink only for CN10K-B */
1589
- size = ARRAY_SIZE (rvu_af_dl_params );
1590
1598
if (!rvu_npc_exact_has_match_table (rvu ))
1591
- size -= 1 ;
1599
+ goto done ;
1592
1600
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 ));
1594
1603
if (err ) {
1595
1604
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 ;
1598
1607
}
1599
1608
1609
+ done :
1600
1610
devlink_register (dl );
1601
1611
return 0 ;
1602
1612
1613
+ err_dl_exact_match :
1614
+ devlink_params_unregister (dl , rvu_af_dl_params , ARRAY_SIZE (rvu_af_dl_params ));
1615
+
1603
1616
err_dl_health :
1604
1617
rvu_health_reporters_destroy (rvu );
1605
1618
devlink_free (dl );
@@ -1612,8 +1625,14 @@ void rvu_unregister_dl(struct rvu *rvu)
1612
1625
struct devlink * dl = rvu_dl -> dl ;
1613
1626
1614
1627
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
+
1617
1636
rvu_health_reporters_destroy (rvu );
1618
1637
devlink_free (dl );
1619
1638
}
0 commit comments