Merge branch 'devlink-fixes'
Leon Romanovsky says: ==================== Batch of devlink related fixes I'm asking to apply this batch of devlink fixes to net-next and not to net, because most if not all fixes are for old code or/and can be considered as cleanup. It will cancel the need to deal with merge conflicts for my next devlink series :). ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
8fd8441502
@ -13370,7 +13370,9 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
}
|
||||
|
||||
bnxt_inv_fw_health_reg(bp);
|
||||
bnxt_dl_register(bp);
|
||||
rc = bnxt_dl_register(bp);
|
||||
if (rc)
|
||||
goto init_err_dl;
|
||||
|
||||
rc = register_netdev(dev);
|
||||
if (rc)
|
||||
@ -13390,6 +13392,7 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
|
||||
init_err_cleanup:
|
||||
bnxt_dl_unregister(bp);
|
||||
init_err_dl:
|
||||
bnxt_shutdown_tc(bp);
|
||||
bnxt_clear_int_mode(bp);
|
||||
|
||||
|
@ -134,7 +134,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp)
|
||||
{
|
||||
struct bnxt_fw_health *health = bp->fw_health;
|
||||
|
||||
if (!bp->dl || !health)
|
||||
if (!health)
|
||||
return;
|
||||
|
||||
if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET) || health->fw_reset_reporter)
|
||||
@ -188,7 +188,7 @@ void bnxt_dl_fw_reporters_destroy(struct bnxt *bp, bool all)
|
||||
{
|
||||
struct bnxt_fw_health *health = bp->fw_health;
|
||||
|
||||
if (!bp->dl || !health)
|
||||
if (!health)
|
||||
return;
|
||||
|
||||
if ((all || !(bp->fw_cap & BNXT_FW_CAP_HOT_RESET)) &&
|
||||
@ -736,9 +736,6 @@ static const struct devlink_param bnxt_dl_params[] = {
|
||||
NULL),
|
||||
};
|
||||
|
||||
static const struct devlink_param bnxt_dl_port_params[] = {
|
||||
};
|
||||
|
||||
static int bnxt_dl_params_register(struct bnxt *bp)
|
||||
{
|
||||
int rc;
|
||||
@ -753,14 +750,6 @@ static int bnxt_dl_params_register(struct bnxt *bp)
|
||||
rc);
|
||||
return rc;
|
||||
}
|
||||
rc = devlink_port_params_register(&bp->dl_port, bnxt_dl_port_params,
|
||||
ARRAY_SIZE(bnxt_dl_port_params));
|
||||
if (rc) {
|
||||
netdev_err(bp->dev, "devlink_port_params_register failed\n");
|
||||
devlink_params_unregister(bp->dl, bnxt_dl_params,
|
||||
ARRAY_SIZE(bnxt_dl_params));
|
||||
return rc;
|
||||
}
|
||||
devlink_params_publish(bp->dl);
|
||||
|
||||
return 0;
|
||||
@ -773,14 +762,13 @@ static void bnxt_dl_params_unregister(struct bnxt *bp)
|
||||
|
||||
devlink_params_unregister(bp->dl, bnxt_dl_params,
|
||||
ARRAY_SIZE(bnxt_dl_params));
|
||||
devlink_port_params_unregister(&bp->dl_port, bnxt_dl_port_params,
|
||||
ARRAY_SIZE(bnxt_dl_port_params));
|
||||
}
|
||||
|
||||
int bnxt_dl_register(struct bnxt *bp)
|
||||
{
|
||||
const struct devlink_ops *devlink_ops;
|
||||
struct devlink_port_attrs attrs = {};
|
||||
struct bnxt_dl *bp_dl;
|
||||
struct devlink *dl;
|
||||
int rc;
|
||||
|
||||
@ -795,7 +783,9 @@ int bnxt_dl_register(struct bnxt *bp)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
bnxt_link_bp_to_dl(bp, dl);
|
||||
bp->dl = dl;
|
||||
bp_dl = devlink_priv(dl);
|
||||
bp_dl->bp = bp;
|
||||
|
||||
/* Add switchdev eswitch mode setting, if SRIOV supported */
|
||||
if (pci_find_ext_capability(bp->pdev, PCI_EXT_CAP_ID_SRIOV) &&
|
||||
@ -826,7 +816,6 @@ int bnxt_dl_register(struct bnxt *bp)
|
||||
err_dl_port_unreg:
|
||||
devlink_port_unregister(&bp->dl_port);
|
||||
err_dl_free:
|
||||
bnxt_link_bp_to_dl(bp, NULL);
|
||||
devlink_free(dl);
|
||||
return rc;
|
||||
}
|
||||
@ -835,9 +824,6 @@ void bnxt_dl_unregister(struct bnxt *bp)
|
||||
{
|
||||
struct devlink *dl = bp->dl;
|
||||
|
||||
if (!dl)
|
||||
return;
|
||||
|
||||
if (BNXT_PF(bp)) {
|
||||
bnxt_dl_params_unregister(bp);
|
||||
devlink_port_unregister(&bp->dl_port);
|
||||
|
@ -20,19 +20,6 @@ static inline struct bnxt *bnxt_get_bp_from_dl(struct devlink *dl)
|
||||
return ((struct bnxt_dl *)devlink_priv(dl))->bp;
|
||||
}
|
||||
|
||||
/* To clear devlink pointer from bp, pass NULL dl */
|
||||
static inline void bnxt_link_bp_to_dl(struct bnxt *bp, struct devlink *dl)
|
||||
{
|
||||
bp->dl = dl;
|
||||
|
||||
/* add a back pointer in dl to bp */
|
||||
if (dl) {
|
||||
struct bnxt_dl *bp_dl = devlink_priv(dl);
|
||||
|
||||
bp_dl->bp = bp;
|
||||
}
|
||||
}
|
||||
|
||||
#define NVM_OFF_MSIX_VEC_PER_PF_MAX 108
|
||||
#define NVM_OFF_MSIX_VEC_PER_PF_MIN 114
|
||||
#define NVM_OFF_IGNORE_ARI 164
|
||||
|
@ -4593,9 +4593,6 @@ static void ice_remove(struct pci_dev *pdev)
|
||||
struct ice_pf *pf = pci_get_drvdata(pdev);
|
||||
int i;
|
||||
|
||||
if (!pf)
|
||||
return;
|
||||
|
||||
for (i = 0; i < ICE_MAX_RESET_WAIT; i++) {
|
||||
if (!ice_is_reset_in_progress(pf->state))
|
||||
break;
|
||||
|
@ -1176,19 +1176,17 @@ static int __qede_probe(struct pci_dev *pdev, u32 dp_module, u8 dp_level,
|
||||
edev->devlink = qed_ops->common->devlink_register(cdev);
|
||||
if (IS_ERR(edev->devlink)) {
|
||||
DP_NOTICE(edev, "Cannot register devlink\n");
|
||||
rc = PTR_ERR(edev->devlink);
|
||||
edev->devlink = NULL;
|
||||
/* Go on, we can live without devlink */
|
||||
goto err3;
|
||||
}
|
||||
} else {
|
||||
struct net_device *ndev = pci_get_drvdata(pdev);
|
||||
struct qed_devlink *qdl;
|
||||
|
||||
edev = netdev_priv(ndev);
|
||||
|
||||
if (edev->devlink) {
|
||||
struct qed_devlink *qdl = devlink_priv(edev->devlink);
|
||||
|
||||
qdl->cdev = cdev;
|
||||
}
|
||||
qdl = devlink_priv(edev->devlink);
|
||||
qdl->cdev = cdev;
|
||||
edev->cdev = cdev;
|
||||
memset(&edev->stats, 0, sizeof(edev->stats));
|
||||
memcpy(&edev->dev_info, &dev_info, sizeof(dev_info));
|
||||
|
@ -3416,7 +3416,9 @@ retry_probe:
|
||||
qedf->devlink = qed_ops->common->devlink_register(qedf->cdev);
|
||||
if (IS_ERR(qedf->devlink)) {
|
||||
QEDF_ERR(&qedf->dbg_ctx, "Cannot register devlink\n");
|
||||
rc = PTR_ERR(qedf->devlink);
|
||||
qedf->devlink = NULL;
|
||||
goto err2;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1653,12 +1653,6 @@ void devlink_param_unregister(struct devlink *devlink,
|
||||
const struct devlink_param *param);
|
||||
void devlink_params_publish(struct devlink *devlink);
|
||||
void devlink_params_unpublish(struct devlink *devlink);
|
||||
int devlink_port_params_register(struct devlink_port *devlink_port,
|
||||
const struct devlink_param *params,
|
||||
size_t params_count);
|
||||
void devlink_port_params_unregister(struct devlink_port *devlink_port,
|
||||
const struct devlink_param *params,
|
||||
size_t params_count);
|
||||
int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
|
||||
union devlink_param_value *init_val);
|
||||
int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
|
||||
|
@ -10118,54 +10118,25 @@ void devlink_params_unpublish(struct devlink *devlink)
|
||||
EXPORT_SYMBOL_GPL(devlink_params_unpublish);
|
||||
|
||||
/**
|
||||
* devlink_port_params_register - register port configuration parameters
|
||||
* devlink_param_driverinit_value_get - get configuration parameter
|
||||
* value for driver initializing
|
||||
*
|
||||
* @devlink_port: devlink port
|
||||
* @params: configuration parameters array
|
||||
* @params_count: number of parameters provided
|
||||
* @devlink: devlink
|
||||
* @param_id: parameter ID
|
||||
* @init_val: value of parameter in driverinit configuration mode
|
||||
*
|
||||
* Register the configuration parameters supported by the port.
|
||||
* This function should be used by the driver to get driverinit
|
||||
* configuration for initialization after reload command.
|
||||
*/
|
||||
int devlink_port_params_register(struct devlink_port *devlink_port,
|
||||
const struct devlink_param *params,
|
||||
size_t params_count)
|
||||
{
|
||||
return __devlink_params_register(devlink_port->devlink,
|
||||
devlink_port->index,
|
||||
&devlink_port->param_list, params,
|
||||
params_count,
|
||||
DEVLINK_CMD_PORT_PARAM_NEW,
|
||||
DEVLINK_CMD_PORT_PARAM_DEL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_port_params_register);
|
||||
|
||||
/**
|
||||
* devlink_port_params_unregister - unregister port configuration
|
||||
* parameters
|
||||
*
|
||||
* @devlink_port: devlink port
|
||||
* @params: configuration parameters array
|
||||
* @params_count: number of parameters provided
|
||||
*/
|
||||
void devlink_port_params_unregister(struct devlink_port *devlink_port,
|
||||
const struct devlink_param *params,
|
||||
size_t params_count)
|
||||
{
|
||||
return __devlink_params_unregister(devlink_port->devlink,
|
||||
devlink_port->index,
|
||||
&devlink_port->param_list,
|
||||
params, params_count,
|
||||
DEVLINK_CMD_PORT_PARAM_DEL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_port_params_unregister);
|
||||
|
||||
static int
|
||||
__devlink_param_driverinit_value_get(struct list_head *param_list, u32 param_id,
|
||||
union devlink_param_value *init_val)
|
||||
int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
|
||||
union devlink_param_value *init_val)
|
||||
{
|
||||
struct devlink_param_item *param_item;
|
||||
|
||||
param_item = devlink_param_find_by_id(param_list, param_id);
|
||||
if (!devlink_reload_supported(devlink->ops))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
param_item = devlink_param_find_by_id(&devlink->param_list, param_id);
|
||||
if (!param_item)
|
||||
return -EINVAL;
|
||||
|
||||
@ -10181,54 +10152,6 @@ __devlink_param_driverinit_value_get(struct list_head *param_list, u32 param_id,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
__devlink_param_driverinit_value_set(struct devlink *devlink,
|
||||
unsigned int port_index,
|
||||
struct list_head *param_list, u32 param_id,
|
||||
union devlink_param_value init_val,
|
||||
enum devlink_command cmd)
|
||||
{
|
||||
struct devlink_param_item *param_item;
|
||||
|
||||
param_item = devlink_param_find_by_id(param_list, param_id);
|
||||
if (!param_item)
|
||||
return -EINVAL;
|
||||
|
||||
if (!devlink_param_cmode_is_supported(param_item->param,
|
||||
DEVLINK_PARAM_CMODE_DRIVERINIT))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (param_item->param->type == DEVLINK_PARAM_TYPE_STRING)
|
||||
strcpy(param_item->driverinit_value.vstr, init_val.vstr);
|
||||
else
|
||||
param_item->driverinit_value = init_val;
|
||||
param_item->driverinit_value_valid = true;
|
||||
|
||||
devlink_param_notify(devlink, port_index, param_item, cmd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* devlink_param_driverinit_value_get - get configuration parameter
|
||||
* value for driver initializing
|
||||
*
|
||||
* @devlink: devlink
|
||||
* @param_id: parameter ID
|
||||
* @init_val: value of parameter in driverinit configuration mode
|
||||
*
|
||||
* This function should be used by the driver to get driverinit
|
||||
* configuration for initialization after reload command.
|
||||
*/
|
||||
int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id,
|
||||
union devlink_param_value *init_val)
|
||||
{
|
||||
if (!devlink_reload_supported(devlink->ops))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return __devlink_param_driverinit_value_get(&devlink->param_list,
|
||||
param_id, init_val);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_get);
|
||||
|
||||
/**
|
||||
@ -10246,10 +10169,24 @@ EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_get);
|
||||
int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id,
|
||||
union devlink_param_value init_val)
|
||||
{
|
||||
return __devlink_param_driverinit_value_set(devlink, 0,
|
||||
&devlink->param_list,
|
||||
param_id, init_val,
|
||||
DEVLINK_CMD_PARAM_NEW);
|
||||
struct devlink_param_item *param_item;
|
||||
|
||||
param_item = devlink_param_find_by_id(&devlink->param_list, param_id);
|
||||
if (!param_item)
|
||||
return -EINVAL;
|
||||
|
||||
if (!devlink_param_cmode_is_supported(param_item->param,
|
||||
DEVLINK_PARAM_CMODE_DRIVERINIT))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (param_item->param->type == DEVLINK_PARAM_TYPE_STRING)
|
||||
strcpy(param_item->driverinit_value.vstr, init_val.vstr);
|
||||
else
|
||||
param_item->driverinit_value = init_val;
|
||||
param_item->driverinit_value_valid = true;
|
||||
|
||||
devlink_param_notify(devlink, 0, param_item, DEVLINK_CMD_PARAM_NEW);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_set);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user