Skip to contentSkip to conversation

drivers/net: use internal API to get eth dev from name

PATCH Applied Kumara Parameshwaran 5 participants 15 messages Feb 3, 2022 – Feb 10, 2022

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
index 8840d9e17b..b78867b125 100644
@@ -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
index 014e438dd5..550a8b0466 100644
@@ -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
index d3459c5007..5700c6a2bf 100644
@@ -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
index a8c26a5b23..4a9f2fa6a4 100644
@@ -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
index 111037de65..bc3d56a311 100644
@@ -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
#1 lore raw

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_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 +3 -3
index 8840d9e17b..b78867b125 100644
@@ -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

drivers/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
index 014e438dd5..550a8b0466 100644
@@ -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
index d3459c5007..5700c6a2bf 100644
@@ -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
index a8c26a5b23..4a9f2fa6a4 100644
@@ -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
index 111037de65..bc3d56a311 100644
@@ -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

#2 lore raw
Quoted 4 lines · kumaraparameshwaran rathinavel

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 ?

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_name is used to get port_id to access rte_eth_devices

Signed-off-by Kumara Parameshwaran <[email protected] <mailto:[email protected]>>
#3 lore raw
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 name

Quoted 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?

#4 lore raw
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 name

Quoted 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.

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-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.

#5 lore raw
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 name

Quoted 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]>;

[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 name

Quoted 3 lines · kumaraparameshwaran rathinavel

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

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?

#6 lore raw
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 name

Quoted 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]>;

[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 name

Quoted 3 lines · kumaraparameshwaran rathinavel

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

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 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.py command that was used and its output?

I don't know, maybe community CI maintainers may know.

#7 lore raw

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.

#8 lore raw

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.

#9 lore raw

The latest script in CI correctly selects 'next-net' for this patch.

Quoted 1 line
Reviewed-by on v1 1/1
#10 lore raw
In reply to Kumara Parameshwaran
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_name is used to get port_id to access rte_eth_devices

Quoted 6 lines

---
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

Hi Kumara, Thanks for the work.

Applied
#11 lore raw
Quoted 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_name is used to get port_id to access rte_eth_devices

Quoted 6 lines

---
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

Quoted 4 lines

Hi Kumara, Thanks for the work.

Applied to dpdk-next-net/main, thanks.

#12 lore raw
In reply to Kumara Parameshwaran
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_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

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

#13 lore raw
In reply to Kumara Parameshwaran
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_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

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

#14 lore raw
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 name

Quoted 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_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

Quoted 1 line

where port_id is used to retrieve rte_eth_dev data 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