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 v9 03/12] net/nfp: move app specific init logic to own function
Date: Thu, 15 Sep 2022 18:44:20 +0800 [thread overview]
Message-ID: <1663238669-12244-4-git-send-email-chaoyong.he@corigine.com> (raw)
In-Reply-To: <1663238669-12244-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 5c96f0b..0d09a69 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -994,6 +994,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
@@ -1002,12 +1045,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)
@@ -1041,37 +1082,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-15 10:45 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-15 10:44 [PATCH v9 00/12] preparation for the rte_flow offload of nfp PMD Chaoyong He
2022-09-15 10:44 ` [PATCH v9 01/12] net/nfp: move app specific attributes to own struct Chaoyong He
2022-09-15 10:44 ` [PATCH v9 02/12] net/nfp: simplify initialization and remove dead code Chaoyong He
2022-09-15 10:44 ` Chaoyong He [this message]
2022-09-15 10:44 ` [PATCH v9 04/12] net/nfp: add initial flower firmware support Chaoyong He
2022-09-15 10:44 ` [PATCH v9 05/12] net/nfp: add flower PF setup logic Chaoyong He
2022-09-20 14:57 ` Ferruh Yigit
2022-09-21 2:50 ` Chaoyong He
2022-09-21 7:35 ` Thomas Monjalon
2022-09-21 7:47 ` Chaoyong He
2022-09-15 10:44 ` [PATCH v9 06/12] net/nfp: add flower PF related routines Chaoyong He
2022-09-15 10:44 ` [PATCH v9 07/12] net/nfp: add flower ctrl VNIC related logics Chaoyong He
2022-09-20 14:56 ` Ferruh Yigit
2022-09-21 2:02 ` Chaoyong He
2022-09-21 7:29 ` Thomas Monjalon
2022-09-21 7:42 ` Chaoyong He
2022-09-15 10:44 ` [PATCH v9 08/12] net/nfp: move common rxtx function for flower use Chaoyong He
2022-09-15 10:44 ` [PATCH v9 09/12] net/nfp: add flower ctrl VNIC rxtx logic Chaoyong He
2022-09-15 10:44 ` [PATCH v9 10/12] net/nfp: add flower representor framework Chaoyong He
2022-09-15 10:44 ` [PATCH v9 11/12] net/nfp: move rxtx function to header file Chaoyong He
2022-09-15 10:44 ` [PATCH v9 12/12] net/nfp: add flower PF rxtx logic Chaoyong He
2022-09-20 14:56 ` [PATCH v9 00/12] preparation for the rte_flow offload of nfp PMD Ferruh Yigit
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=1663238669-12244-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.