Message ID | 449181a5ed544dd4790ae4d650586436848007cd.1713262810.git.petrm@nvidia.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | mlxsw: Fixes | expand |
On Tue, Apr 16, 2024 at 12:24:16PM +0200, Petr Machata wrote: > From: Ido Schimmel <idosch@nvidia.com> > > The driver queries the Management Capabilities Mask (MCAM) register > during initialization to understand if a new and deeper reset flow is > supported. > > However, not all firmware versions support this register, leading to the > driver failing to load. > > Fix by treating an error in the register query as an indication that the > feature is not supported. > > Fixes: f257c73e5356 ("mlxsw: pci: Add support for new reset flow") > Reported-by: Tim 'mithro' Ansell <me@mith.ro> > Signed-off-by: Ido Schimmel <idosch@nvidia.com> > Reviewed-by: Petr Machata <petrm@nvidia.com> > Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org>
On Tue, Apr 16, 2024 at 3:57 PM Petr Machata <petrm@nvidia.com> wrote: > > From: Ido Schimmel <idosch@nvidia.com> > > The driver queries the Management Capabilities Mask (MCAM) register > during initialization to understand if a new and deeper reset flow is > supported. > > However, not all firmware versions support this register, leading to the > driver failing to load. > > Fix by treating an error in the register query as an indication that the > feature is not supported. > > Fixes: f257c73e5356 ("mlxsw: pci: Add support for new reset flow") > Reported-by: Tim 'mithro' Ansell <me@mith.ro> > Signed-off-by: Ido Schimmel <idosch@nvidia.com> > Reviewed-by: Petr Machata <petrm@nvidia.com> > Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> > --- > drivers/net/ethernet/mellanox/mlxsw/pci.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c > index 4d617057af25..13fd067c39ed 100644 > --- a/drivers/net/ethernet/mellanox/mlxsw/pci.c > +++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c > @@ -1545,7 +1545,7 @@ mlxsw_pci_reset(struct mlxsw_pci *mlxsw_pci, const struct pci_device_id *id) > { > struct pci_dev *pdev = mlxsw_pci->pdev; > char mcam_pl[MLXSW_REG_MCAM_LEN]; > - bool pci_reset_supported; > + bool pci_reset_supported = false; > u32 sys_status; > int err; > > @@ -1563,11 +1563,9 @@ mlxsw_pci_reset(struct mlxsw_pci *mlxsw_pci, const struct pci_device_id *id) > mlxsw_reg_mcam_pack(mcam_pl, > MLXSW_REG_MCAM_FEATURE_GROUP_ENHANCED_FEATURES); > err = mlxsw_reg_query(mlxsw_pci->core, MLXSW_REG(mcam), mcam_pl); > - if (err) > - return err; > - > - mlxsw_reg_mcam_unpack(mcam_pl, MLXSW_REG_MCAM_PCI_RESET, > - &pci_reset_supported); > + if (!err) > + mlxsw_reg_mcam_unpack(mcam_pl, MLXSW_REG_MCAM_PCI_RESET, > + &pci_reset_supported); > > if (pci_reset_supported) { > pci_dbg(pdev, "Starting PCI reset flow\n"); > -- > 2.43.0 > >
diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c index 4d617057af25..13fd067c39ed 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/pci.c +++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c @@ -1545,7 +1545,7 @@ mlxsw_pci_reset(struct mlxsw_pci *mlxsw_pci, const struct pci_device_id *id) { struct pci_dev *pdev = mlxsw_pci->pdev; char mcam_pl[MLXSW_REG_MCAM_LEN]; - bool pci_reset_supported; + bool pci_reset_supported = false; u32 sys_status; int err; @@ -1563,11 +1563,9 @@ mlxsw_pci_reset(struct mlxsw_pci *mlxsw_pci, const struct pci_device_id *id) mlxsw_reg_mcam_pack(mcam_pl, MLXSW_REG_MCAM_FEATURE_GROUP_ENHANCED_FEATURES); err = mlxsw_reg_query(mlxsw_pci->core, MLXSW_REG(mcam), mcam_pl); - if (err) - return err; - - mlxsw_reg_mcam_unpack(mcam_pl, MLXSW_REG_MCAM_PCI_RESET, - &pci_reset_supported); + if (!err) + mlxsw_reg_mcam_unpack(mcam_pl, MLXSW_REG_MCAM_PCI_RESET, + &pci_reset_supported); if (pci_reset_supported) { pci_dbg(pdev, "Starting PCI reset flow\n");