DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Gagandeep Singh <g.singh@nxp.com>
To: dev@dpdk.org
Cc: hemant.agrawal@nxp.com
Subject: [PATCH 2/3] net/dpaa: support non fmX-macY type of shared Ethernet name
Date: Wed, 28 Oct 2026 14:21:53 +0530	[thread overview]
Message-ID: <20261028085154.699656-4-g.singh@nxp.com> (raw)
In-Reply-To: <20261028085154.699656-1-g.singh@nxp.com>

From: Hemant Agrawal <hemant.agrawal@nxp.com>

A shared MAC interface needs the kernel netdev name to read the MTU,
and that name is only the DPDK port name for fmX-macY style netdevs.

Look it up in sysfs under the platform device of the dpa-ethernet node
the port was created from, and fall back to the port name.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 doc/guides/nics/dpaa.rst       |  5 +++
 drivers/net/dpaa/dpaa_ethdev.c | 59 +++++++++++++++++++++++++++++++++-
 2 files changed, 63 insertions(+), 1 deletion(-)

diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst
index 667b8c113d..14a14feb3c 100644
--- a/doc/guides/nics/dpaa.rst
+++ b/doc/guides/nics/dpaa.rst
@@ -303,6 +303,11 @@ is passed through the EAL bus arguments. The bus name is ``dpaa_bus``:
    silently drops that port.
 
 
+* For a shared MAC interface the kernel network interface name is looked up
+  in sysfs from the device tree node the port was created from,
+  so a kernel interface that does not follow
+  the ``fmX-macY`` naming style is handled without extra configuration.
+
 FMAN Config
 -----------
 
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index fe49c7b961..456e3df995 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -15,6 +15,7 @@
 #include <sys/types.h>
 #include <sys/syscall.h>
 #include <sys/ioctl.h>
+#include <dirent.h>
 
 #include <eal_export.h>
 #include <rte_string_fns.h>
@@ -57,6 +58,53 @@
 #define DRIVER_RECV_ERR_PKTS      "recv_err_pkts"
 #define RTE_PRIORITY_103 103
 
+/*
+ * Get the name of the kernel netdev bound to the same device tree node as
+ * this port. Returns 1 on success, 0 if none was found, negative on error.
+ */
+static int
+dpaa_get_kernel_ifname(const char *node_path, char *name, size_t size)
+{
+	char path[PATH_MAX];
+	const char *node;
+	struct dirent *entry;
+	DIR *dir;
+	int ret;
+
+	if (!node_path || node_path[0] == '\0')
+		return 0;
+
+	/* Platform device name is the last node of the DTS path. */
+	node = strrchr(node_path, '/');
+	node = node ? node + 1 : node_path;
+	if (node[0] == '\0')
+		return 0;
+
+	ret = snprintf(path, sizeof(path),
+		       "/sys/bus/platform/devices/%s/net", node);
+	if (ret < 0 || (size_t)ret >= sizeof(path))
+		return -ENAMETOOLONG;
+
+	dir = opendir(path);
+	if (!dir)
+		return 0;
+
+	ret = 0;
+	while ((entry = readdir(dir)) != NULL) {
+		if (entry->d_name[0] == '.')
+			continue;
+		if (rte_strscpy(name, entry->d_name, size) < 0) {
+			ret = -ENAMETOOLONG;
+			break;
+		}
+		ret = 1;
+		break;
+	}
+
+	closedir(dir);
+	return ret;
+}
+
 /* Supported Rx offloads */
 static uint64_t dev_rx_offloads_sup =
 		RTE_ETH_RX_OFFLOAD_SCATTER;
@@ -251,6 +299,7 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 	int speed, duplex;
 	int ret, rx_status, socket_fd;
 	struct ifreq ifr;
+	char sh_if_name[IFNAMSIZ];
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -272,7 +321,15 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev)
 			DPAA_PMD_ERR("Cannot open IF socket");
 			return -errno;
 		}
-		strlcpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ);
+
+		/* The DPDK port name matches the netdev only for fmX-macY. */
+		sh_if_name[0] = '\0';
+		ret = dpaa_get_kernel_ifname(__fif->node_path, sh_if_name,
+					     sizeof(sh_if_name));
+		if (ret <= 0 || sh_if_name[0] == '\0')
+			strlcpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ);
+		else
+			strlcpy(ifr.ifr_name, sh_if_name, IFNAMSIZ);
 
 		if (ioctl(socket_fd, SIOCGIFMTU, &ifr) < 0) {
 			DPAA_PMD_ERR("Cannot get interface mtu");
-- 
2.25.1


  parent reply	other threads:[~2026-10-28  8:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-28  8:51 [PATCH v2 0/1] DPAA compilation fix ppc64le and riscv Gagandeep Singh
2026-10-28  8:51 ` [PATCH v2 1/1] bus/dpaa: fix maybe-uninitialized in bman_release_fast Gagandeep Singh
2026-10-28  8:51 ` [PATCH 1/3] drivers: add offline (O/H) port device support Gagandeep Singh
2026-10-28  8:51 ` Gagandeep Singh [this message]
2026-10-28  8:51 ` [PATCH 3/3] drivers: add DPAA cgrid cleanup support Gagandeep Singh

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=20261028085154.699656-4-g.singh@nxp.com \
    --to=g.singh@nxp.com \
    --cc=dev@dpdk.org \
    --cc=hemant.agrawal@nxp.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