[dpdk-dev] [PATCH v2] ethdev: fix data type for port id

wangyunjian wangyunjian at huawei.com
Tue Oct 27 14:41:22 CET 2020


From: Yunjian Wang <wangyunjian at huawei.com>

The ethdev port id should be 16 bits now. This patch fixes the data
type of the variable for 'pid', changing from uint32_t to uint16_t.

We also need use RTE_BUILD_BUG_ON() to ensure that RTE_MAX_ETHPORTS
is less or equal to UINT16_MAX.

Fixes: 5b7ba31148a8 ("ethdev: add port ownership")
Cc: stable at dpdk.org

Signed-off-by: Yunjian Wang <wangyunjian at huawei.com>
---
v2:
   add RTE_BUILD_BUG_ON() check for RTE_MAX_ETHPORTS validity
---
 lib/librte_ethdev/rte_ethdev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index b12bb3854d..ecaca5c600 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -816,7 +816,7 @@ rte_eth_dev_get_name_by_port(uint16_t port_id, char *name)
 int
 rte_eth_dev_get_port_by_name(const char *name, uint16_t *port_id)
 {
-	uint32_t pid;
+	uint16_t pid;
 
 	if (name == NULL) {
 		RTE_ETHDEV_LOG(ERR, "Null pointer is specified\n");
@@ -4292,6 +4292,8 @@ RTE_INIT(eth_dev_init_cb_lists)
 {
 	int i;
 
+	RTE_BUILD_BUG_ON(RTE_MAX_ETHPORTS > UINT16_MAX);
+
 	for (i = 0; i < RTE_MAX_ETHPORTS; i++)
 		TAILQ_INIT(&rte_eth_devices[i].link_intr_cbs);
 }
-- 
2.23.0



More information about the dev mailing list