From: Chaoyong He <chaoyong.he@corigine.com>
To: dev@dpdk.org
Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com,
Chaoyong He <chaoyong.he@corigine.com>
Subject: [PATCH v10 03/13] net/nfp: move app specific init logic to own function
Date: Mon, 26 Sep 2022 14:59:47 +0800 [thread overview]
Message-ID: <1664175597-37248-4-git-send-email-chaoyong.he@corigine.com> (raw)
In-Reply-To: <1664175597-37248-1-git-send-email-chaoyong.he@corigine.com>
The NFP card can load different firmware applications.
This commit move the init logic of corenic app of the
secondary process into its own function.
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>
---
drivers/net/nfp/nfp_ethdev.c | 90 +++++++++++++++++++++++++++++---------------
1 file changed, 60 insertions(+), 30 deletions(-)
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 14c6d69..b0b3ef8 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -996,6 +996,49 @@
return ret;
}
+static int
+nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev,
+ struct nfp_rtsym_table *sym_tbl,
+ struct nfp_cpp *cpp)
+{
+ int i;
+ int err = 0;
+ int ret = 0;
+ int total_vnics;
+ struct nfp_net_hw *hw;
+
+ /* Read the number of vNIC's created for the PF */
+ total_vnics = nfp_rtsym_read_le(sym_tbl, "nfd_cfg_pf0_num_ports", &err);
+ if (err != 0 || total_vnics <= 0 || total_vnics > 8) {
+ PMD_INIT_LOG(ERR, "nfd_cfg_pf0_num_ports symbol with wrong value");
+ return -ENODEV;
+ }
+
+ for (i = 0; i < total_vnics; i++) {
+ struct rte_eth_dev *eth_dev;
+ char port_name[RTE_ETH_NAME_MAX_LEN];
+ snprintf(port_name, sizeof(port_name), "%s_port%d",
+ pci_dev->device.name, i);
+
+ PMD_INIT_LOG(DEBUG, "Secondary attaching to port %s", port_name);
+ eth_dev = rte_eth_dev_attach_secondary(port_name);
+ if (eth_dev == NULL) {
+ PMD_INIT_LOG(ERR, "Secondary process attach to port %s failed", port_name);
+ ret = -ENODEV;
+ break;
+ }
+
+ eth_dev->process_private = cpp;
+ hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+ if (nfp_net_ethdev_ops_mount(hw, eth_dev))
+ return -EINVAL;
+
+ rte_eth_dev_probing_finish(eth_dev);
+ }
+
+ return ret;
+}
+
/*
* When attaching to the NFP4000/6000 PF on a secondary process there
* is no need to initialise the PF again. Only minimal work is required
@@ -1004,12 +1047,10 @@
static int
nfp_pf_secondary_init(struct rte_pci_device *pci_dev)
{
- int i;
int err = 0;
int ret = 0;
- int total_ports;
struct nfp_cpp *cpp;
- struct nfp_net_hw *hw;
+ enum nfp_app_fw_id app_fw_id;
struct nfp_rtsym_table *sym_tbl;
if (pci_dev == NULL)
@@ -1043,37 +1084,26 @@
return -EIO;
}
- total_ports = nfp_rtsym_read_le(sym_tbl, "nfd_cfg_pf0_num_ports", &err);
- if (err != 0 || total_ports <= 0 || total_ports > 8) {
- PMD_INIT_LOG(ERR, "nfd_cfg_pf0_num_ports symbol with wrong value");
- ret = -ENODEV;
+ /* Read the app ID of the firmware loaded */
+ app_fw_id = nfp_rtsym_read_le(sym_tbl, "_pf0_net_app_id", &err);
+ if (err != 0) {
+ PMD_INIT_LOG(ERR, "Couldn't read app_fw_id from fw");
goto sym_tbl_cleanup;
}
- for (i = 0; i < total_ports; i++) {
- struct rte_eth_dev *eth_dev;
- char port_name[RTE_ETH_NAME_MAX_LEN];
-
- snprintf(port_name, sizeof(port_name), "%s_port%d",
- pci_dev->device.name, i);
-
- PMD_DRV_LOG(DEBUG, "Secondary attaching to port %s", port_name);
- eth_dev = rte_eth_dev_attach_secondary(port_name);
- if (eth_dev == NULL) {
- RTE_LOG(ERR, EAL,
- "secondary process attach failed, ethdev doesn't exist");
- ret = -ENODEV;
- break;
+ switch (app_fw_id) {
+ case NFP_APP_FW_CORE_NIC:
+ PMD_INIT_LOG(INFO, "Initializing coreNIC");
+ ret = nfp_secondary_init_app_fw_nic(pci_dev, sym_tbl, cpp);
+ if (ret != 0) {
+ PMD_INIT_LOG(ERR, "Could not initialize coreNIC!");
+ goto sym_tbl_cleanup;
}
-
- hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
-
- if (nfp_net_ethdev_ops_mount(hw, eth_dev))
- return -EINVAL;
-
- eth_dev->process_private = cpp;
-
- rte_eth_dev_probing_finish(eth_dev);
+ break;
+ default:
+ PMD_INIT_LOG(ERR, "Unsupported Firmware loaded");
+ ret = -EINVAL;
+ goto sym_tbl_cleanup;
}
/* Register the CPP bridge service for the secondary too */
--
1.8.3.1
next prev parent reply other threads:[~2022-09-26 7:00 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-26 6:59 [PATCH v10 00/13] preparation for the rte_flow offload of nfp PMD Chaoyong He
2022-09-26 6:59 ` [PATCH v10 01/13] net/nfp: move app specific attributes to own struct Chaoyong He
2022-09-26 6:59 ` [PATCH v10 02/13] net/nfp: simplify initialization and remove dead code Chaoyong He
2022-09-26 6:59 ` Chaoyong He [this message]
2022-09-26 6:59 ` [PATCH v10 04/13] net/nfp: add initial flower firmware support Chaoyong He
2022-09-26 6:59 ` [PATCH v10 05/13] net/nfp: add flower PF setup logic Chaoyong He
2022-09-26 6:59 ` [PATCH v10 06/13] net/nfp: add flower ctrl VNIC related logics Chaoyong He
2022-09-26 6:59 ` [PATCH v10 07/13] net/nfp: move common rxtx function for flower use Chaoyong He
2022-09-26 6:59 ` [PATCH v10 08/13] net/nfp: add flower ctrl VNIC rxtx logic Chaoyong He
2022-09-26 6:59 ` [PATCH v10 09/13] net/nfp: add flower representor framework Chaoyong He
2022-09-26 6:59 ` [PATCH v10 10/13] net/nfp: add flower PF related routines Chaoyong He
2022-09-26 6:59 ` [PATCH v10 11/13] net/nfp: move rxtx function to header file Chaoyong He
2022-09-26 6:59 ` [PATCH v10 12/13] net/nfp: add flower PF rxtx logic Chaoyong He
2022-09-26 6:59 ` [PATCH v10 13/13] net/nfp: add the representor port " Chaoyong He
2022-10-05 11:34 ` [PATCH v10 00/13] preparation for the rte_flow offload of nfp PMD Ferruh Yigit
2022-10-05 16:52 ` Ferruh Yigit
2022-10-10 8:51 ` Niklas Söderlund
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1664175597-37248-4-git-send-email-chaoyong.he@corigine.com \
--to=chaoyong.he@corigine.com \
--cc=dev@dpdk.org \
--cc=niklas.soderlund@corigine.com \
--cc=oss-drivers@corigine.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).