From: Chaoyong He <chaoyong.he@corigine.com>
To: dev@dpdk.org
Cc: niklas.soderlund@corigine.com, Chaoyong He <chaoyong.he@corigine.com>
Subject: [PATCH v3 03/12] net/nfp: move app specific init logic to own function
Date: Fri, 24 Jun 2022 10:53:52 +0800 [thread overview]
Message-ID: <1656039241-20955-4-git-send-email-chaoyong.he@corigine.com> (raw)
In-Reply-To: <1656039241-20955-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 | 93 +++++++++++++++++++++++++++++---------------
1 file changed, 62 insertions(+), 31 deletions(-)
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 2c5607c..90dd01e 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -936,7 +936,7 @@
break;
default:
PMD_INIT_LOG(ERR, "nfp_net: no device ID matching");
- err = -ENODEV;
+ ret = -ENODEV;
goto pf_cleanup;
}
@@ -991,6 +991,50 @@
return ret;
}
+static int
+nfp_secondary_init_app_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 || 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_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;
+ }
+
+ 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
@@ -999,12 +1043,10 @@
static int
nfp_pf_secondary_init(struct rte_pci_device *pci_dev)
{
- int i;
int err = 0;
int ret = 0;
- int total_ports;
+ enum nfp_app_id app_id;
struct nfp_cpp *cpp;
- struct nfp_net_hw *hw;
struct nfp_rtsym_table *sym_tbl;
if (pci_dev == NULL)
@@ -1038,37 +1080,26 @@
return -EIO;
}
- total_ports = nfp_rtsym_read_le(sym_tbl, "nfd_cfg_pf0_num_ports", &err);
- if (err || 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_id = nfp_rtsym_read_le(sym_tbl, "_pf0_net_app_id", &err);
+ if (err) {
+ PMD_INIT_LOG(ERR, "Couldn't read app_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_id) {
+ case NFP_APP_CORE_NIC:
+ PMD_INIT_LOG(INFO, "Initializing coreNIC");
+ ret = nfp_secondary_init_app_nic(pci_dev, sym_tbl, cpp);
+ if (ret) {
+ 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;
}
if (ret)
--
1.8.3.1
next prev parent reply other threads:[~2022-06-24 2:55 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-24 2:53 [PATCH v3 00/12] preparation for the rte_flow offload of nfp PMD Chaoyong He
2022-06-24 2:53 ` [PATCH v3 01/12] net/nfp: move app specific attributes to own struct Chaoyong He
2022-06-24 2:53 ` [PATCH v3 02/12] net/nfp: simplify initialization and remove dead code Chaoyong He
2022-06-24 2:53 ` Chaoyong He [this message]
2022-06-24 2:53 ` [PATCH v3 04/12] net/nfp: add initial flower firmware support Chaoyong He
2022-06-24 2:53 ` [PATCH v3 05/12] net/nfp: add flower PF setup and mempool init logic Chaoyong He
2022-06-24 2:53 ` [PATCH v3 06/12] net/nfp: add flower PF related routines Chaoyong He
2022-06-24 2:53 ` [PATCH v3 07/12] net/nfp: add flower ctrl VNIC related logics Chaoyong He
2022-06-24 2:53 ` [PATCH v3 08/12] net/nfp: move common rxtx function for flower use Chaoyong He
2022-06-24 2:53 ` [PATCH v3 09/12] net/nfp: add flower ctrl VNIC rxtx logic Chaoyong He
2022-06-24 2:53 ` [PATCH v3 10/12] net/nfp: add flower representor framework Chaoyong He
2022-06-24 2:54 ` [PATCH v3 11/12] net/nfp: move rxtx function to header file Chaoyong He
2022-06-24 2:54 ` [PATCH v3 12/12] net/nfp: add flower PF rxtx logic Chaoyong He
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=1656039241-20955-4-git-send-email-chaoyong.he@corigine.com \
--to=chaoyong.he@corigine.com \
--cc=dev@dpdk.org \
--cc=niklas.soderlund@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).