drivers/net: use internal API to get eth dev from name
Subsystems (2)
PATCH 1/1 drivers/net: use internal API to get eth dev from name
From: Kumara Parameshwaran <[email protected]>
Make changes in PMDs to use the new function where rte_eth_dev_get_port_by_name is used to get port_id to access rte_eth_devices
---
v1
* Replace rte_eth_get_get_port_by_name in PMDs with rte_eth_dev_get_by_name where port_id is used to retrieve rte_eth_dev data structure
drivers/net/bonding/rte_eth_bond_api.c | 10 +++++----- drivers/net/ipn3ke/ipn3ke_ethdev.c | 9 +++------ drivers/net/memif/rte_eth_memif.c | 7 ++----- drivers/net/softnic/rte_eth_softnic_thread.c | 8 +++----- drivers/net/tap/rte_eth_tap.c | 7 ++----- 5 files changed, 15 insertions(+), 26 deletions(-)
drivers/net/bonding/rte_eth_bond_api.c +5 -5
@@ -151,8 +151,8 @@ int rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id) { struct bond_dev_private *internals; +struct rte_eth_dev *bond_dev;char devargs[52 ]; -uint16_t port_id;int ret;if (name ==NULL ) {
@@ -169,8 +169,8 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)if (ret)return ret; - ret =rte_eth_dev_get_port_by_name (name, &port_id); -RTE_ASSERT (!ret); + bond_dev =rte_eth_dev_get_by_name (name); +RTE_ASSERT (bond_dev);/* * To make bond_ethdev_configure() happy we need to free the
@@ -178,11 +178,11 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)* * Also see comment in bond_ethdev_configure(). */ - internals = rte_eth_devices[port_id].data->dev_private; + internals = bond_dev->data->dev_private;rte_kvargs_free (internals->kvlist); internals->kvlist =NULL ; -return port_id; +return bond_dev->data->port_id; }int
drivers/net/ipn3ke/ipn3ke_ethdev.c +3 -6
@@ -469,7 +469,6 @@ static int ipn3ke_vswitch_probe(struct rte_afu_device *afu_dev)struct ipn3ke_hw *hw;struct rte_eth_dev *i40e_eth;struct ifpga_rawdev *ifpga_dev; -uint16_t port_id;int i, j, retval;char *fvl_bdf;
@@ -519,14 +518,12 @@ static int ipn3ke_vswitch_probe(struct rte_afu_device *afu_dev)for (; j <8 ; j++) { fvl_bdf = ifpga_dev->fvl_bdf[j]; - retval =rte_eth_dev_get_port_by_name (fvl_bdf, - &port_id); -if (retval) { + i40e_eth =rte_eth_dev_get_by_name (fvl_bdf); +if (!i40e_eth) {continue ; }else { - i40e_eth = &rte_eth_devices[port_id]; rpst.i40e_pf_eth = i40e_eth; - rpst.i40e_pf_eth_port_id = port_id; + rpst.i40e_pf_eth_port_id = i40e_eth->data->port_id; j++;break ;
drivers/net/memif/rte_eth_memif.c +2 -5
@@ -88,17 +88,14 @@ memif_mp_send_region(const struct rte_mp_msg *msg, const void *peer)const struct mp_region_msg *msg_param = (const struct mp_region_msg *)msg->param;struct rte_mp_msg reply;struct mp_region_msg *reply_param = (struct mp_region_msg *)reply.param; -uint16_t port_id; -int ret;/* Get requested port */ - ret =rte_eth_dev_get_port_by_name (msg_param->port_name, &port_id); -if (ret) { + dev =rte_eth_dev_get_by_name (msg_param->port_name); +if (!dev) {MIF_LOG (ERR ,"Failed to get port id for %s" , msg_param->port_name);return -1 ; } - dev = &rte_eth_devices[port_id]; proc_private = dev->process_private;memset (&reply,0 ,sizeof (reply));
drivers/net/softnic/rte_eth_softnic_thread.c +3 -5
@@ -129,14 +129,12 @@ thread_sc_service_up(struct pmd_internals *softnic, uint32_t thread_id)struct softnic_thread *t = &softnic->thread[thread_id];struct rte_eth_dev *dev;int status; -uint16_t port_id;/* service params */ - status =rte_eth_dev_get_port_by_name (softnic->params.name, &port_id); -if (status) -return status; + dev =rte_eth_dev_get_by_name (softnic->params.name); +if (!dev) +return -EINVAL ; - dev = &rte_eth_devices[port_id];snprintf (service_params.name,sizeof (service_params.name),"%s_%u" , softnic->params.name, thread_id);
drivers/net/tap/rte_eth_tap.c +2 -5
@@ -2428,19 +2428,16 @@ tap_mp_sync_queues(const struct rte_mp_msg *request, const void *peer) (const struct ipc_queues *)request->param;struct ipc_queues *reply_param = (struct ipc_queues *)reply.param; -uint16_t port_id;int queue; -int ret;/* Get requested port */ TAP_LOG (DEBUG ,"Received IPC request for %s" , request_param->port_name); - ret =rte_eth_dev_get_port_by_name (request_param->port_name, &port_id); -if (ret) { + dev =rte_eth_dev_get_by_name (request_param->port_name); +if (!dev) {TAP_LOG (ERR ,"Failed to get port id for %s" , request_param->port_name);return -1 ; } - dev = &rte_eth_devices[port_id]; process_private = dev->process_private;/* Fill file descriptors for all queues */
Signature · 1 line
2.17.1
Ferruh,
Since in the older patch we had introduced rte_eth_dev_get_by_name patch and had been merged to dpdk-next-net, the current patch failed for the build when I submitted the patch. Is there a way to enforce it to dpdk-next-net ?
Quoted 182 lines · Kumara Parameshwaran
From: Kumara Parameshwaran <[email protected]>
Make changes in PMDs to use the new function where
rte_eth_dev_get_port_by_nameis used to getport_idto accessrte_eth_devicesSigned-off-by Kumara Parameshwaran <[email protected]>---
v1
* Replacerte_eth_get_get_port_by_namein PMDs withrte_eth_dev_get_by_namewhereport_idis used to retrieverte_eth_devdata structuredrivers/net/bonding/rte_eth_bond_api.c | 10 +++++----- drivers/net/ipn3ke/ipn3ke_ethdev.c | 9 +++------ drivers/net/memif/rte_eth_memif.c | 7 ++----- drivers/net/softnic/rte_eth_softnic_thread.c | 8 +++----- drivers/net/tap/rte_eth_tap.c | 7 ++----- 5 files changed, 15 insertions(+), 26 deletions(-)drivers/net/bonding/rte_eth_bond_api.c +3
-3@@ -151,8 +151,8 @@ int rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id) { struct bond_dev_private *internals; +struct rte_eth_dev *bond_dev;char devargs[52 ]; -uint16_t port_id;int ret;if (name ==NULL ) {@@ -169,8 +169,8 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)if (ret)return ret; - ret =rte_eth_dev_get_port_by_name (name, &port_id); -RTE_ASSERT (!ret); + bond_dev =rte_eth_dev_get_by_name (name); +RTE_ASSERT (bond_dev);/* * To make
bond_ethdev_configure()happy we need to free thedrivers/net/bonding/rte_eth_bond_api.c +2
-2@@ -178,11 +178,11 @@ rte_eth_bond_create(const char *name, uint8_t mode,uint8_t socket_id) * * Also see comment in bond_ethdev_configure(). */ - internals = rte_eth_devices[port_id].data->dev_private; + internals = bond_dev->data->dev_private;rte_kvargs_free (internals->kvlist); internals->kvlist =NULL ; -return port_id; +return bond_dev->data->port_id; }int
drivers/net/ipn3ke/ipn3ke_ethdev.c +3
-6@@ -469,7 +469,6 @@ static int ipn3ke_vswitch_probe(struct rte_afu_device *afu_dev)struct ipn3ke_hw *hw;struct rte_eth_dev *i40e_eth;struct ifpga_rawdev *ifpga_dev; -uint16_t port_id;int i, j, retval;char *fvl_bdf;@@ -519,14 +518,12 @@ static int ipn3ke_vswitch_probe(struct rte_afu_device *afu_dev)for (; j <8 ; j++) { fvl_bdf = ifpga_dev->fvl_bdf[j]; - retval =rte_eth_dev_get_port_by_name (fvl_bdf, - &port_id); -if (retval) { + i40e_eth =rte_eth_dev_get_by_name (fvl_bdf); +if (!i40e_eth) {continue ; }else { - i40e_eth = &rte_eth_devices[port_id]; rpst.i40e_pf_eth = i40e_eth; - rpst.i40e_pf_eth_port_id = port_id; + rpst.i40e_pf_eth_port_id = i40e_eth->data->port_id;j++; break;drivers/net/memif/rte_eth_memif.c +2
-5@@ -88,17 +88,14 @@ memif_mp_send_region(const struct rte_mp_msg *msg, const void *peer)const struct mp_region_msg *msg_param = (const struct mp_region_msg *)msg->param;struct rte_mp_msg reply;struct mp_region_msg *reply_param = (struct mp_region_msg *)reply.param; -uint16_t port_id; -int ret;/* Get requested port */ - ret =rte_eth_dev_get_port_by_name (msg_param->port_name, &port_id); -if (ret) { + dev =rte_eth_dev_get_by_name (msg_param->port_name); +if (!dev) {MIF_LOG (ERR ,"Failed to get port id for %s" , msg_param->port_name);return -1 ; } - dev = &rte_eth_devices[port_id];proc_private = dev->process_private; memset(&reply, 0, sizeof(reply));drivers/net/softnic/rte_eth_softnic_thread.c +3
-5@@ -129,14 +129,12 @@ thread_sc_service_up(struct pmd_internals *softnic, uint32_t thread_id)struct softnic_thread *t = &softnic->thread[thread_id];struct rte_eth_dev *dev;int status; -uint16_t port_id;/* service params */ - status =rte_eth_dev_get_port_by_name (softnic->params.name, &port_id); -if (status) -return status; + dev =rte_eth_dev_get_by_name (softnic->params.name); +if (!dev) +return -EINVAL ; - dev = &rte_eth_devices[port_id]; snprintf(service_params.name, sizeof(service_params.name),"%s_%u",
softnic->params.name, thread_id);drivers/net/tap/rte_eth_tap.c +2
-5@@ -2428,19 +2428,16 @@ tap_mp_sync_queues(const struct rte_mp_msg *request, const void *peer) (const struct ipc_queues *)request->param;struct ipc_queues *reply_param = (struct ipc_queues *)reply.param; -uint16_t port_id;int queue; -int ret;/* Get requested port */ TAP_LOG (DEBUG ,"Received IPC request for %s" , request_param->port_name); - ret =rte_eth_dev_get_port_by_name (request_param->port_name, &port_id); -if (ret) { + dev =rte_eth_dev_get_by_name (request_param->port_name); +if (!dev) {TAP_LOG (ERR ,"Failed to get port id for %s" , request_param->port_name);return -1 ; } - dev = &rte_eth_devices[port_id];process_private = dev->process_private; /* Fill file descriptors for all queues */--
2.17.1
Quoted 4 lines · kumaraparameshwaran rathinavel
Ferruh,
Since in the older patch we had introduced
rte_eth_dev_get_by_namepatch and had been merged to dpdk-next-net, the current patch failed for the build when I submitted the patch. Is there a way to enforce it to dpdk-next-net ?
CIs apply it onto the main repo, there is a script that chose which tree to apply, it seems it is not working as expected for the 'drivers/net:' case, cc'ed ci mail list and @Ali for it.
Meanwhile I re-run the community lab tests on top of next-net repo, still some other checks, like Intel ones, will continue to fail until patches reach to main tree.
Quoted 9 lines · On Thu, Feb 3, 2022 at 1:54 PM Kumara Parameshwaran…
From: Kumara Parameshwaran <[email protected] <mailto:[email protected]>>
Make changes in PMDs to use the new function where
rte_eth_dev_get_port_by_nameis used to getport_idto accessrte_eth_devicesSigned-off-by Kumara Parameshwaran <[email protected] <mailto:[email protected]>>
Quoted 14 lines
-----Original Message-----
From: Ferruh Yigit <[email protected]>
Sent: Thursday, February 3, 2022 1:32 PM
To: kumaraparameshwaran rathinavel <[email protected]>; [email protected]
Cc: Kumara Parameshwaran <[email protected]>; [email protected]; Ali Alnubani <[email protected]>
Subject: Re: [PATCH v1]drivers/net: use internal API to get eth dev from nameQuoted 3 lines · kumaraparameshwaran rathinavel
Ferruh,
Since in the older patch we had introduced
rte_eth_dev_get_by_name
Quoted 9 lines
patch and had been merged to dpdk-next-net, the current patch failed for the build when I submitted the patch. Is there a way to enforce it to dpdk- next-net ?
Quoted 1 line
CIs apply it onto the main repo, there is a script that chose which tree to apply, it seems it is not working as expected for the '
drivers/net:' case, cc'ed ci mail list and @Ali for it.
Sorry for the delayed response,
The script (https://git.dpdk.org/tools/dpdk-ci/tree/tools/pw_maintainers_cli.py) correctly chooses next-net for this patch:
$ MAINTAINERS_FILE_PATH=/path/to/MAINTAINERS tools/pw_maintainers_cli.py --type patch list-trees 106830 Output: dpdk-next-net
Did the script fail for some reason during this build?
Quoted 24 lines · Ali Alnubani
Quoted 14 lines
-----Original Message-----
From: Ferruh Yigit <[email protected]>
Sent: Thursday, February 3, 2022 1:32 PM
To: kumaraparameshwaran rathinavel <[email protected]>; [email protected]
Cc: Kumara Parameshwaran <[email protected]>; [email protected]; Ali Alnubani <[email protected]>
Subject: Re: [PATCH v1]drivers/net: use internal API to get eth dev from nameQuoted 3 lines · kumaraparameshwaran rathinavel
Ferruh,
Since in the older patch we had introduced
rte_eth_dev_get_by_nameQuoted 9 lines
patch and had been merged to dpdk-next-net, the current patch failed for the build when I submitted the patch. Is there a way to enforce it to dpdk- next-net ?
Quoted 1 line
CIs apply it onto the main repo, there is a script that chose which tree to apply, it seems it is not working as expected for the '
drivers/net:' case, cc'ed ci mail list and @Ali for it.
Quoted 7 lines
Sorry for the delayed response,
The script (https://git.dpdk.org/tools/dpdk-ci/tree/tools/pw_maintainers_cli.py) correctly chooses next-net for this patch:
$ MAINTAINERS_FILE_PATH=/path/to/MAINTAINERS tools/pw_maintainers_cli.py --type patch list-trees 106830 Output: dpdk-next-netDid the script fail for some reason during this build?
In the community CI, initially it tried to build the patch on top of main repo, and it failed.
Build looks OK now since I manually triggered re-build it on top of next-net.
Quoted 44 lines
-----Original Message-----
From: Ferruh Yigit <[email protected]>
Sent: Monday, February 7, 2022 6:37 PM
To: Ali Alnubani <[email protected]>; kumaraparameshwaran rathinavel <[email protected]>; [email protected]; dpdklab <[email protected]>
Cc: Kumara Parameshwaran <[email protected]>; [email protected]
Subject: Re: [PATCH v1]drivers/net: use internal API to get eth dev from nameQuoted 6 lines · Ali Alnubani
Quoted 6 lines
-----Original Message-----
From: Ferruh Yigit <[email protected]>
Sent: Thursday, February 3, 2022 1:32 PM
To: kumaraparameshwaran rathinavel <[email protected]>; [email protected]
Cc: Kumara Parameshwaran <[email protected]>;Quoted 9 lines
Quoted 9 lines
Ali Alnubani <[email protected]>
Subject: Re: [PATCH v1]drivers/net: use internal API to get eth dev from nameQuoted 3 lines · kumaraparameshwaran rathinavel
Ferruh,
Since in the older patch we had introduced
rte_eth_dev_get_by_namepatch and had been merged to dpdk-next-net, the current patch failed
for
Quoted 4 lines
Quoted 4 lines
the build when I submitted the patch. Is there a way to enforce it to dpdk- next-net ?
Quoted 1 line
Quoted 8 lines
Quoted 4 lines
CIs apply it onto the main repo, there is a script that chose which tree to apply, it seems it is not working as expected for the '
drivers/net:' case, cc'ed ci mail list and @Ali for it.Sorry for the delayed response,
The script (https://git.dpdk.org/tools/dpdk-
ci/tree/tools/pw_maintainers_cli.py) correctly chooses next-net for this patch:Quoted 1 line
$ MAINTAINERS_FILE_PATH=/path/to/MAINTAINERS
tools/pw_maintainers_cli.py--type patch list-trees 106830
Quoted 8 lines
Quoted 3 lines
Output: dpdk-next-net
Did the script fail for some reason during this build?
In the community CI, initially it tried to build the patch on top of main repo, and it failed.
Build looks OK now since I manually triggered re-build it on top of next-net.
Hi Ferruh,
Did the job initially decide to apply on main repo because it was chosen by the script? Is it possible to see the pw_maintainers_cli.py command that was used and its output?
Quoted 48 lines · Ali Alnubani
Quoted 48 lines
-----Original Message-----
From: Ferruh Yigit <[email protected]>
Sent: Monday, February 7, 2022 6:37 PM
To: Ali Alnubani <[email protected]>; kumaraparameshwaran rathinavel <[email protected]>; [email protected]; dpdklab <[email protected]>
Cc: Kumara Parameshwaran <[email protected]>; [email protected]
Subject: Re: [PATCH v1]drivers/net: use internal API to get eth dev from nameQuoted 6 lines · Ali Alnubani
Quoted 6 lines
-----Original Message-----
From: Ferruh Yigit <[email protected]>
Sent: Thursday, February 3, 2022 1:32 PM
To: kumaraparameshwaran rathinavel <[email protected]>; [email protected]
Cc: Kumara Parameshwaran <[email protected]>;Quoted 9 lines
Quoted 9 lines
Ali Alnubani <[email protected]>
Subject: Re: [PATCH v1]drivers/net: use internal API to get eth dev from nameQuoted 3 lines · kumaraparameshwaran rathinavel
Ferruh,
Since in the older patch we had introduced
rte_eth_dev_get_by_namepatch and had been merged to dpdk-next-net, the current patch failed
for
Quoted 4 lines
Quoted 4 lines
the build when I submitted the patch. Is there a way to enforce it to dpdk- next-net ?
Quoted 1 line
Quoted 8 lines
Quoted 4 lines
CIs apply it onto the main repo, there is a script that chose which tree to apply, it seems it is not working as expected for the '
drivers/net:' case, cc'ed ci mail list and @Ali for it.Sorry for the delayed response,
The script (https://git.dpdk.org/tools/dpdk-
ci/tree/tools/pw_maintainers_cli.py) correctly chooses next-net for this patch:Quoted 1 line
$ MAINTAINERS_FILE_PATH=/path/to/MAINTAINERS
tools/pw_maintainers_cli.py--type patch list-trees 106830Quoted 3 lines
Output: dpdk-next-net
Did the script fail for some reason during this build?
Quoted 8 lines
Quoted 4 lines
In the community CI, initially it tried to build the patch on top of main repo, and it failed.
Build looks OK now since I manually triggered re-build it on top of next-net.
Hi Ferruh,
Did the job initially decide to apply on main repo because it was chosen by the script?
That is my understanding. Community CI decides which repo to apply based on your script, as far as I know. But I don't know if there may be any version difference etc..
Quoted 1 line
Is it possible to see the
pw_maintainers_cli.pycommand that was used and its output?
I don't know, maybe community CI maintainers may know.
The Community CI hasn't been able to schedule downtime to update dpdk-ci across all of our systems since the refactoring Ali did. However, the patch was still applied on next-net and had a compilation error. See
https://lab.dpdk.org/results/dashboard/patchsets/20895/. It was applied onto
https://git.dpdk.org/next/dpdk-next-net/commit/?id=7445a787de053776616e41ab1d79090bd0f5ce33
.
Owen
Here's the build log in case you were having issues seeing it:
[1/1511] Compiling C objectdrivers/librte_net_null.so.22.1.p/meson-generated_.._rte_net_null.pmd.c.o
[2/1511] Compiling C objectdrivers/librte_net_octeontx.so.22.1.p/meson-generated_.._rte_net_octeontx.pmd.c.o
[3/1511] Compiling C objectdrivers/librte_net_null.a.p/meson-generated_.._rte_net_null.pmd.c.o
[4/1511] Compiling C object drivers/librte_net_octeontx_ep.so.22.1.p/meson-generated_.._rte_net_octeontx_ep.pmd.c.o
[5/1511] Compiling C objectdrivers/librte_net_octeontx.a.p/meson-generated_.._rte_net_octeontx.pmd.c.o
[6/1511] Compiling C objectdrivers/librte_net_pcap.so.22.1.p/meson-generated_.._rte_net_pcap.pmd.c.o
[7/1511] Compiling C objectdrivers/librte_net_pfe.a.p/meson-generated_.._rte_net_pfe.pmd.c.o
[8/1511] Linking static target drivers/librte_net_null.a
[9/1511] Linking static target drivers/librte_net_octeontx.a
[10/1511] Compiling C objectdrivers/net/qede/base/libqede_base.a.p/ecore_init_ops.c.o
[11/1511] Linking static target drivers/librte_net_pfe.a
[12/1511] Linking target drivers/librte_net_mlx5.so.22.1
[13/1511] Linking target drivers/librte_common_sfc_efx.so.22.1
[14/1511] Linking target drivers/librte_common_cnxk.so.22.1
[15/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_hw.c.o
[16/1511] Compiling C object drivers/librte_net_octeontx_ep.a.p/meson-generated_.._rte_net_octeontx_ep.pmd.c.o
[17/1511] Compiling C objectdrivers/net/qede/base/libqede_base.a.p/ecore_init_fw_funcs.c.o
[18/1511] Linking target drivers/librte_net_bond.so.22.1
FAILED: drivers/librte_net_bond.so.22.1
cc -o drivers/librte_net_bond.so.22.1 drivers/librte_net_bond.so.22.1.p/meson-generated_.._rte_net_bond.pmd.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_8023ad.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_alb.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_api.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_args.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_flow.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_pmd.c.o
-Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC
-Wl,--start-group -Wl,-soname,librte_net_bond.so.22 -Wl,--no-as-needed
-pthread -lm -ldl -lnuma -lfdt '-Wl,-rpath,$ORIGIN/../lib:$ORIGIN/' -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/lib -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/drivers lib/librte_ethdev.so.22.1 lib/librte_eal.so.22.1lib/librte_kvargs.so.22.1 lib/librte_telemetry.so.22.1lib/librte_net.so.22.1 lib/librte_mbuf.so.22.1lib/librte_mempool.so.22.1 lib/librte_ring.so.22.1lib/librte_meter.so.22.1 drivers/librte_bus_pci.so.22.1lib/librte_pci.so.22.1 drivers/librte_bus_vdev.so.22.1lib/librte_sched.so.22.1 lib/librte_ip_frag.so.22.1lib/librte_hash.so.22.1 lib/librte_rcu.so.22.1 -Wl,--end-group -Wl,--version-script=/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/drivers/net/bonding/version.map drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_api.c.o: In
function `rte_eth_bond_create':
rte_eth_bond_api.c:(.text+0x12e6): undefined reference to
`rte_eth_dev_get_by_name'
collect2: error: ld returned 1 exit status
[19/1511] Linking target drivers/librte_net_ipn3ke.so.22.1
FAILED: drivers/librte_net_ipn3ke.so.22.1
cc -o drivers/librte_net_ipn3ke.so.22.1 drivers/librte_net_ipn3ke.so.22.1.p/meson-generated_.._rte_net_ipn3ke.pmd.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_ethdev.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_flow.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_representor.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_tm.c.o
-Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC
-Wl,--start-group -Wl,-soname,librte_net_ipn3ke.so.22
-Wl,--no-as-needed -pthread -lm -ldl -lnuma -lfdt
'-Wl,-rpath,$ORIGIN/../lib:$ORIGIN/' -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/lib -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/drivers lib/librte_ethdev.so.22.1 lib/librte_eal.so.22.1lib/librte_kvargs.so.22.1 lib/librte_telemetry.so.22.1lib/librte_net.so.22.1 lib/librte_mbuf.so.22.1lib/librte_mempool.so.22.1 lib/librte_ring.so.22.1lib/librte_meter.so.22.1 drivers/librte_bus_pci.so.22.1lib/librte_pci.so.22.1 drivers/librte_bus_vdev.so.22.1drivers/librte_bus_ifpga.so.22.1 lib/librte_rawdev.so.22.1lib/librte_sched.so.22.1 -Wl,--end-group -Wl,--version-script=/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/drivers/net/ipn3ke/version.map drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_ethdev.c.o: In
function `ipn3ke_vswitch_probe':
ipn3ke_ethdev.c:(.text+0x7a2): undefined reference to `rte_eth_dev_get_by_name'
collect2: error: ld returned 1 exit status
[20/1511] Linking target drivers/librte_net_memif.so.22.1
FAILED: drivers/librte_net_memif.so.22.1
cc -o drivers/librte_net_memif.so.22.1 drivers/librte_net_memif.so.22.1.p/meson-generated_.._rte_net_memif.pmd.c.o drivers/libtmp_rte_net_memif.a.p/net_memif_memif_socket.c.o drivers/libtmp_rte_net_memif.a.p/net_memif_rte_eth_memif.c.o
-Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC
-Wl,--start-group -Wl,-soname,librte_net_memif.so.22
-Wl,--no-as-needed -pthread -lm -ldl -lnuma -lfdt
'-Wl,-rpath,$ORIGIN/../lib:$ORIGIN/' -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/lib -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/drivers lib/librte_ethdev.so.22.1 lib/librte_eal.so.22.1lib/librte_kvargs.so.22.1 lib/librte_telemetry.so.22.1lib/librte_net.so.22.1 lib/librte_mbuf.so.22.1lib/librte_mempool.so.22.1 lib/librte_ring.so.22.1lib/librte_meter.so.22.1 drivers/librte_bus_pci.so.22.1lib/librte_pci.so.22.1 drivers/librte_bus_vdev.so.22.1lib/librte_hash.so.22.1 lib/librte_rcu.so.22.1 -Wl,--end-group -Wl,--version-script=/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/drivers/net/memif/version.map drivers/libtmp_rte_net_memif.a.p/net_memif_rte_eth_memif.c.o: In
function `memif_mp_send_region':
rte_eth_memif.c:(.text+0x12ce): undefined reference to `rte_eth_dev_get_by_name'
collect2: error: ld returned 1 exit status
[21/1511] Compiling C objectdrivers/librte_net_pcap.a.p/meson-generated_.._rte_net_pcap.pmd.c.o
[22/1511] Compiling C objectdrivers/librte_net_pfe.so.22.1.p/meson-generated_.._rte_net_pfe.pmd.c.o
[23/1511] Compiling C objectdrivers/net/qede/base/libqede_base.a.p/ecore_dev.c.o
[24/1511] Linking static target drivers/librte_net_octeontx_ep.a
[25/1511] Compiling C objectdrivers/net/qede/base/libqede_base.a.p/ecore_int.c.o
[26/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_l2.c.o
[27/1511] Generating symbol filedrivers/librte_bus_fslmc.so.22.1.p/librte_bus_fslmc.so.22.1.symbols
[28/1511] Generating symbol filedrivers/librte_bus_dpaa.so.22.1.p/librte_bus_dpaa.so.22.1.symbols
[29/1511] Generating rte_net_ngbe.sym_chk with a custom command
(wrapped by meson to capture output)
[30/1511] Generating symbol filelib/librte_port.so.22.1.p/librte_port.so.22.1.symbols
[31/1511] Generating rte_net_octeontx.sym_chk with a custom command
(wrapped by meson to capture output)
[32/1511] Generating symbol filedrivers/librte_common_cnxk.so.22.1.p/librte_common_cnxk.so.22.1.symbols
[33/1511] Generating rte_net_pfe.sym_chk with a custom command
(wrapped by meson to capture output)
[34/1511] Generating symbol file drivers/librte_common_sfc_efx.so.22.1.p/librte_common_sfc_efx.so.22.1.symbols
[35/1511] Generating rte_net_null.sym_chk with a custom command
(wrapped by meson to capture output)
ninja: build stopped: subcommand failed.
Hi Owen,
I can’t open the link.
But it was initially applied to the main repo, later I manually re-run it on next-net.
Compile error also verifies this [1], ‘rte_eth_dev_get_by_name()’ was added in next-net and missing in the main repo, error is related to API being missing.
Anyway, if the latest script in the CI select ‘next-net’ tree for the patch, I think we are good. Can you please confirm this?
[1]
rte_eth_bond_api.c:(.text+0x12e6): undefined reference to `rte_eth_dev_get_by_name'
From: Owen Hilyard <[email protected]>
Sent: Monday, February 7, 2022 7:59 PM
To: Yigit, Ferruh <[email protected]>
Cc: Ali Alnubani <[email protected]>; kumaraparameshwaran rathinavel <[email protected]>; [email protected]; dpdklab <[email protected]>; Kumara Parameshwaran <[email protected]>; [email protected]; Aaron Conole <[email protected]>
Subject: Re: [PATCH v1] drivers/net: use internal API to get eth dev from name
The Community CI hasn't been able to schedule downtime to update dpdk-ci across all of our systems since the refactoring Ali did. However, the patch was still applied on next-net and had a compilation error. See https://lab.dpdk.org/results/dashboard/patchsets/20895/. It was applied onto https://git.dpdk.org/next/dpdk-next-net/commit/?id=7445a787de053776616e41ab1d79090bd0f5ce33.
Owen
Here's the build log in case you were having issues seeing it:
[1/1511] Compiling C object drivers/librte_net_null.so.22.1.p/meson-generated_.._rte_net_null.pmd.c.o
[2/1511] Compiling C object drivers/librte_net_octeontx.so.22.1.p/meson-generated_.._rte_net_octeontx.pmd.c.o
[3/1511] Compiling C object drivers/librte_net_null.a.p/meson-generated_.._rte_net_null.pmd.c.o
[4/1511] Compiling C object drivers/librte_net_octeontx_ep.so.22.1.p/meson-generated_.._rte_net_octeontx_ep.pmd.c.o
[5/1511] Compiling C object drivers/librte_net_octeontx.a.p/meson-generated_.._rte_net_octeontx.pmd.c.o
[6/1511] Compiling C object drivers/librte_net_pcap.so.22.1.p/meson-generated_.._rte_net_pcap.pmd.c.o
[7/1511] Compiling C object drivers/librte_net_pfe.a.p/meson-generated_.._rte_net_pfe.pmd.c.o
[8/1511] Linking static target drivers/librte_net_null.a
[9/1511] Linking static target drivers/librte_net_octeontx.a
[10/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_init_ops.c.o
[11/1511] Linking static target drivers/librte_net_pfe.a
[12/1511] Linking target drivers/librte_net_mlx5.so.22.1
[13/1511] Linking target drivers/librte_common_sfc_efx.so.22.1
[14/1511] Linking target drivers/librte_common_cnxk.so.22.1
[15/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_hw.c.o
[16/1511] Compiling C object drivers/librte_net_octeontx_ep.a.p/meson-generated_.._rte_net_octeontx_ep.pmd.c.o
[17/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_init_fw_funcs.c.o
[18/1511] Linking target drivers/librte_net_bond.so.22.1
FAILED: drivers/librte_net_bond.so.22.1
cc -o drivers/librte_net_bond.so.22.1 drivers/librte_net_bond.so.22.1.p/meson-generated_.._rte_net_bond.pmd.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_8023ad.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_alb.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_api.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_args.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_flow.c.o drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_pmd.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,librte_net_bond.so.22 -Wl,--no-as-needed -pthread -lm -ldl -lnuma -lfdt '-Wl,-rpath,$ORIGIN/../lib:$ORIGIN/' -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/lib -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/drivers lib/librte_ethdev.so.22.1 lib/librte_eal.so.22.1 lib/librte_kvargs.so.22.1 lib/librte_telemetry.so.22.1 lib/librte_net.so.22.1 lib/librte_mbuf.so.22.1 lib/librte_mempool.so.22.1 lib/librte_ring.so.22.1 lib/librte_meter.so.22.1 drivers/librte_bus_pci.so.22.1 lib/librte_pci.so.22.1 drivers/librte_bus_vdev.so.22.1 lib/librte_sched.so.22.1 lib/librte_ip_frag.so.22.1 lib/librte_hash.so.22.1 lib/librte_rcu.so.22.1 -Wl,--end-group -Wl,--version-script=/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/drivers/net/bonding/version.map
drivers/libtmp_rte_net_bond.a.p/net_bonding_rte_eth_bond_api.c.o: In function `rte_eth_bond_create':
rte_eth_bond_api.c:(.text+0x12e6): undefined reference to `rte_eth_dev_get_by_name'
collect2: error: ld returned 1 exit status
[19/1511] Linking target drivers/librte_net_ipn3ke.so.22.1
FAILED: drivers/librte_net_ipn3ke.so.22.1
cc -o drivers/librte_net_ipn3ke.so.22.1 drivers/librte_net_ipn3ke.so.22.1.p/meson-generated_.._rte_net_ipn3ke.pmd.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_ethdev.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_flow.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_representor.c.o drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_tm.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,librte_net_ipn3ke.so.22 -Wl,--no-as-needed -pthread -lm -ldl -lnuma -lfdt '-Wl,-rpath,$ORIGIN/../lib:$ORIGIN/' -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/lib -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/drivers lib/librte_ethdev.so.22.1 lib/librte_eal.so.22.1 lib/librte_kvargs.so.22.1 lib/librte_telemetry.so.22.1 lib/librte_net.so.22.1 lib/librte_mbuf.so.22.1 lib/librte_mempool.so.22.1 lib/librte_ring.so.22.1 lib/librte_meter.so.22.1 drivers/librte_bus_pci.so.22.1 lib/librte_pci.so.22.1 drivers/librte_bus_vdev.so.22.1 drivers/librte_bus_ifpga.so.22.1 lib/librte_rawdev.so.22.1 lib/librte_sched.so.22.1 -Wl,--end-group -Wl,--version-script=/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/drivers/net/ipn3ke/version.map
drivers/libtmp_rte_net_ipn3ke.a.p/net_ipn3ke_ipn3ke_ethdev.c.o: In function `ipn3ke_vswitch_probe':
ipn3ke_ethdev.c:(.text+0x7a2): undefined reference to `rte_eth_dev_get_by_name'
collect2: error: ld returned 1 exit status
[20/1511] Linking target drivers/librte_net_memif.so.22.1
FAILED: drivers/librte_net_memif.so.22.1
cc -o drivers/librte_net_memif.so.22.1 drivers/librte_net_memif.so.22.1.p/meson-generated_.._rte_net_memif.pmd.c.o drivers/libtmp_rte_net_memif.a.p/net_memif_memif_socket.c.o drivers/libtmp_rte_net_memif.a.p/net_memif_rte_eth_memif.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,librte_net_memif.so.22 -Wl,--no-as-needed -pthread -lm -ldl -lnuma -lfdt '-Wl,-rpath,$ORIGIN/../lib:$ORIGIN/' -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/lib -Wl,-rpath-link,/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/build/drivers lib/librte_ethdev.so.22.1 lib/librte_eal.so.22.1 lib/librte_kvargs.so.22.1 lib/librte_telemetry.so.22.1 lib/librte_net.so.22.1 lib/librte_mbuf.so.22.1 lib/librte_mempool.so.22.1 lib/librte_ring.so.22.1 lib/librte_meter.so.22.1 drivers/librte_bus_pci.so.22.1 lib/librte_pci.so.22.1 drivers/librte_bus_vdev.so.22.1 lib/librte_hash.so.22.1 lib/librte_rcu.so.22.1 -Wl,--end-group -Wl,--version-script=/home-local/jenkins-local/jenkins-agent/workspace/Apply-Custom-Patch-Set/dpdk/drivers/net/memif/version.map
drivers/libtmp_rte_net_memif.a.p/net_memif_rte_eth_memif.c.o: In function `memif_mp_send_region':
rte_eth_memif.c:(.text+0x12ce): undefined reference to `rte_eth_dev_get_by_name'
collect2: error: ld returned 1 exit status
[21/1511] Compiling C object drivers/librte_net_pcap.a.p/meson-generated_.._rte_net_pcap.pmd.c.o
[22/1511] Compiling C object drivers/librte_net_pfe.so.22.1.p/meson-generated_.._rte_net_pfe.pmd.c.o
[23/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_dev.c.o
[24/1511] Linking static target drivers/librte_net_octeontx_ep.a
[25/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_int.c.o
[26/1511] Compiling C object drivers/net/qede/base/libqede_base.a.p/ecore_l2.c.o
[27/1511] Generating symbol file drivers/librte_bus_fslmc.so.22.1.p/librte_bus_fslmc.so.22.1.symbols
[28/1511] Generating symbol file drivers/librte_bus_dpaa.so.22.1.p/librte_bus_dpaa.so.22.1.symbols
[29/1511] Generating rte_net_ngbe.sym_chk with a custom command (wrapped by meson to capture output)
[30/1511] Generating symbol file lib/librte_port.so.22.1.p/librte_port.so.22.1.symbols
[31/1511] Generating rte_net_octeontx.sym_chk with a custom command (wrapped by meson to capture output)
[32/1511] Generating symbol file drivers/librte_common_cnxk.so.22.1.p/librte_common_cnxk.so.22.1.symbols
[33/1511] Generating rte_net_pfe.sym_chk with a custom command (wrapped by meson to capture output)
[34/1511] Generating symbol file drivers/librte_common_sfc_efx.so.22.1.p/librte_common_sfc_efx.so.22.1.symbols
[35/1511] Generating rte_net_null.sym_chk with a custom command (wrapped by meson to capture output)
ninja: build stopped: subcommand failed.
The latest script in CI correctly selects 'next-net' for this patch.
Quoted 1 line
Quoted 6 lines · Kumara Parameshwaran
From: Kumara Parameshwaran <[email protected]>
Make changes in PMDs to use the new function where
rte_eth_dev_get_port_by_nameis used to getport_idto accessrte_eth_devices
Quoted 6 lines
Signed-off-by Kumara Parameshwaran <[email protected]>---
v1
* Replacerte_eth_get_get_port_by_namein PMDs withrte_eth_dev_get_by_namewhereport_idis used to retrieverte_eth_devdata structure
Hi Kumara, Thanks for the work.
Ferruh Yigit
AppliedQuoted 14 lines · Ferruh Yigit
Quoted 6 lines · Kumara Parameshwaran
From: Kumara Parameshwaran <[email protected]>
Make changes in PMDs to use the new function where
rte_eth_dev_get_port_by_nameis used to getport_idto accessrte_eth_devicesQuoted 6 lines
Signed-off-by Kumara Parameshwaran <[email protected]>---
v1
* Replacerte_eth_get_get_port_by_namein PMDs withrte_eth_dev_get_by_namewhereport_idis used to retrieverte_eth_devdata structure
Quoted 4 lines
Hi Kumara, Thanks for the work.
Reviewed-by Ferruh Yigit <[email protected]>
Applied to dpdk-next-net/main, thanks.
Quoted 11 lines · Kumara Parameshwaran
From: Kumara Parameshwaran<[email protected]>
Make changes in PMDs to use the new function where
rte_eth_dev_get_port_by_nameis used to getport_idto accessrte_eth_devicesSigned-off-by Kumara Parameshwaran<[email protected]>---
v1
* Replacerte_eth_get_get_port_by_namein PMDs withrte_eth_dev_get_by_namewhereport_idis used to retrieverte_eth_devdata structure
Hi Matan, Slava,
Can you please investigate using 'rte_eth_dev_get_by_name()' internal API instead of 'rte_eth_dev_get_port_by_name()' to eliminate direct access to global 'rte_eth_devices' array from mlx5 driver?
Thanks,
ferruh
Quoted 11 lines · Kumara Parameshwaran
From: Kumara Parameshwaran<[email protected]>
Make changes in PMDs to use the new function where
rte_eth_dev_get_port_by_nameis used to getport_idto accessrte_eth_devicesSigned-off-by Kumara Parameshwaran<[email protected]>---
v1
* Replacerte_eth_get_get_port_by_namein PMDs withrte_eth_dev_get_by_namewhereport_idis used to retrieverte_eth_devdata structure
Hi Jasvinder, Cristian,
Can you please investigate using 'rte_eth_dev_get_by_name()' internal API instead of 'rte_eth_dev_get_port_by_name()' to eliminate direct access to global 'rte_eth_devices' array from softnic driver?
Thanks,
ferruh
Quoted 26 lines
-----Original Message-----
From: Yigit, Ferruh <[email protected]>
Sent: Thursday, February 3, 2022 12:36 PM
To: Singh, Jasvinder <[email protected]>; Dumitrescu, Cristian <[email protected]>
Cc: Kumara Parameshwaran <[email protected]>; Kumara Parameshwaran <[email protected]>; [email protected]
Subject: Re: [PATCH v1]drivers/net: use internal API to get eth dev from nameQuoted 10 lines · Kumara Parameshwaran
From: Kumara Parameshwaran<[email protected]>
Make changes in PMDs to use the new function where
rte_eth_dev_get_port_by_nameis used to getport_idto accessrte_eth_devicesSigned-off-by Kumara Parameshwaran<[email protected]>---
v1
* Replacerte_eth_get_get_port_by_namein PMDs with
rte_eth_dev_get_by_nameQuoted 1 line
where
port_idis used to retrieverte_eth_devdata structure
Quoted 8 lines
Hi Jasvinder, Cristian,
Can you please investigate using '
rte_eth_dev_get_by_name()' internal API instead of 'rte_eth_dev_get_port_by_name()' to eliminate direct access to global 'rte_eth_devices' array from softnic driver?Thanks,
Ferruh
Hi Ferruh
I addition to the changes that already made in the patch, there are two more places when "'rte_eth_dev_get_port_by_name()" is used to access rte_eth_devices[] array.
1. In dpdk/drivers/net/softnic/rte_eth_softnic_internals.h , wrapper function is defined for accessing rte_eth_devices[] using 'rte_eth_dev_get_port_by_name (), that could be removed. static inline struct rte_eth_dev * ETHDEV(struct pmd_internals *softnic)
2. In dpdk/drivers/net/softnic/rte_eth_softnic_flow.c, remove the usage of above wrapper function at 2 places, and 'rte_eth_dev_get_by_name() can be used.
Thanks,
Jasvinder