[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230724094821.14295-5-louis.peens@corigine.com>
Date: Mon, 24 Jul 2023 11:48:13 +0200
From: Louis Peens <louis.peens@...igine.com>
To: David Miller <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: Simon Horman <simon.horman@...igine.com>,
Yinjun Zhang <yinjun.zhang@...igine.com>,
Tianyu Yuan <tianyu.yuan@...igine.com>,
netdev@...r.kernel.org,
oss-drivers@...igine.com
Subject: [PATCH net-next 04/12] nfp: don't skip firmware loading when it's pxe firmware in running
From: Yinjun Zhang <yinjun.zhang@...igine.com>
In pxe boot case, the pxe firmware is not unloaded in some systems
when booting completes. Driver needs to detect it so that it has
chance to load the correct firmware.
Signed-off-by: Yinjun Zhang <yinjun.zhang@...igine.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@...igine.com>
Acked-by: Simon Horman <simon.horman@...igine.com>
Signed-off-by: Louis Peens <louis.peens@...igine.com>
---
drivers/net/ethernet/netronome/nfp/nfp_main.c | 25 +++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_main.c b/drivers/net/ethernet/netronome/nfp/nfp_main.c
index c81784a626a6..778f21dfbbd5 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_main.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_main.c
@@ -469,6 +469,28 @@ nfp_get_fw_policy_value(struct pci_dev *pdev, struct nfp_nsp *nsp,
return err;
}
+static bool
+nfp_skip_fw_load(struct nfp_pf *pf, struct nfp_nsp *nsp)
+{
+ const struct nfp_mip *mip;
+ bool skip;
+
+ if (!pf->multi_pf.en || nfp_nsp_fw_loaded(nsp) <= 0)
+ return false;
+
+ mip = nfp_mip_open(pf->cpp);
+ if (!mip)
+ return false;
+
+ /* For the case that system boots from pxe, we need
+ * reload FW if pxe FW is running.
+ */
+ skip = !!strncmp(nfp_mip_name(mip), "pxe", 3);
+ nfp_mip_close(mip);
+
+ return skip;
+}
+
/**
* nfp_fw_load() - Load the firmware image
* @pdev: PCI Device structure
@@ -528,8 +550,7 @@ nfp_fw_load(struct pci_dev *pdev, struct nfp_pf *pf, struct nfp_nsp *nsp)
if (err)
return err;
- /* Skip firmware loading in multi-PF setup if firmware is loaded. */
- if (pf->multi_pf.en && nfp_nsp_fw_loaded(nsp))
+ if (nfp_skip_fw_load(pf, nsp))
return 1;
fw = nfp_net_fw_find(pdev, pf);
--
2.34.1
Powered by blists - more mailing lists