Message ID | 20230131163033.981937-1-simon.horman@corigine.com (mailing list archive) |
---|---|
State | Accepted |
Commit | ca3daf437d9c261ca498f518090c3ddbf1bf824f |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] nfp: correct cleanup related to DCB resources | expand |
On Tue, Jan 31, 2023 at 05:30:33PM +0100, Simon Horman wrote: > From: Huayu Chen <huayu.chen@corigine.com> > > 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: 9b7fe8046d74 ("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> > --- > drivers/net/ethernet/netronome/nfp/nic/main.c | 8 ++++++-- > drivers/net/ethernet/netronome/nfp/nic/main.h | 2 +- > 2 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/netronome/nfp/nic/main.c b/drivers/net/ethernet/netronome/nfp/nic/main.c > index f78c2447d45b..9dd5afe37f6e 100644 > --- a/drivers/net/ethernet/netronome/nfp/nic/main.c > +++ b/drivers/net/ethernet/netronome/nfp/nic/main.c > @@ -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, > @@ -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, > }; > diff --git a/drivers/net/ethernet/netronome/nfp/nic/main.h b/drivers/net/ethernet/netronome/nfp/nic/main.h > index 7ba04451b8ba..094374df42b8 100644 > --- a/drivers/net/ethernet/netronome/nfp/nic/main.h > +++ b/drivers/net/ethernet/netronome/nfp/nic/main.h > @@ -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; } Not related change, but I would do the same. Thanks, Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Hello: This patch was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Tue, 31 Jan 2023 17:30:33 +0100 you wrote: > From: Huayu Chen <huayu.chen@corigine.com> > > 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. > > [...] Here is the summary with links: - [net-next] nfp: correct cleanup related to DCB resources https://git.kernel.org/netdev/net-next/c/ca3daf437d9c You are awesome, thank you!
diff --git a/drivers/net/ethernet/netronome/nfp/nic/main.c b/drivers/net/ethernet/netronome/nfp/nic/main.c index f78c2447d45b..9dd5afe37f6e 100644 --- a/drivers/net/ethernet/netronome/nfp/nic/main.c +++ b/drivers/net/ethernet/netronome/nfp/nic/main.c @@ -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, @@ -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, }; diff --git a/drivers/net/ethernet/netronome/nfp/nic/main.h b/drivers/net/ethernet/netronome/nfp/nic/main.h index 7ba04451b8ba..094374df42b8 100644 --- a/drivers/net/ethernet/netronome/nfp/nic/main.h +++ b/drivers/net/ethernet/netronome/nfp/nic/main.h @@ -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