Skip to content

Commit

Permalink
nfp: correct cleanup related to DCB resources
Browse files Browse the repository at this point in the history
This patch corrects two oversights relating to releasing resources
and DCB initialisation.

1. If mapping of the dcbcfg_tbl area fails: an error should be
   propagated, allowing partial initialisation (probe) to be unwound.

2. Conversely, if where dcbcfg_tbl is successfully mapped: it should
   be unmapped in nfp_nic_dcb_clean() which is called via various error
   cleanup paths, and shutdown or removal of the PCIE device.

Fixes: 9b7fe80 ("nfp: add DCB IEEE support")
Signed-off-by: Huayu Chen <huayu.chen@corigine.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>
Signed-off-by: Simon Horman <simon.horman@corigine.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Link: https://lore.kernel.org/r/20230131163033.981937-1-simon.horman@corigine.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Huayu Chen authored and Jakub Kicinski committed Feb 2, 2023
1 parent bc61761 commit ca3daf4
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
8 changes: 6 additions & 2 deletions drivers/net/ethernet/netronome/nfp/nic/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ static void nfp_nic_sriov_disable(struct nfp_app *app)

static int nfp_nic_vnic_init(struct nfp_app *app, struct nfp_net *nn)
{
nfp_nic_dcb_init(nn);
return nfp_nic_dcb_init(nn);
}

return 0;
static void nfp_nic_vnic_clean(struct nfp_app *app, struct nfp_net *nn)
{
nfp_nic_dcb_clean(nn);
}

static int nfp_nic_vnic_alloc(struct nfp_app *app, struct nfp_net *nn,
Expand Down Expand Up @@ -72,4 +75,5 @@ const struct nfp_app_type app_nic = {
.sriov_disable = nfp_nic_sriov_disable,

.vnic_init = nfp_nic_vnic_init,
.vnic_clean = nfp_nic_vnic_clean,
};
2 changes: 1 addition & 1 deletion drivers/net/ethernet/netronome/nfp/nic/main.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ struct nfp_dcb {
int nfp_nic_dcb_init(struct nfp_net *nn);
void nfp_nic_dcb_clean(struct nfp_net *nn);
#else
static inline int nfp_nic_dcb_init(struct nfp_net *nn) {return 0; }
static inline int nfp_nic_dcb_init(struct nfp_net *nn) { return 0; }
static inline void nfp_nic_dcb_clean(struct nfp_net *nn) {}
#endif

Expand Down

0 comments on commit ca3daf4

Please sign in to comment.