From 7e9165b1beb77554916686cb4ff4d16c4e995b74 Mon Sep 17 00:00:00 2001 From: Viacheslav Ovsiienko Date: Thu, 16 Jan 2020 16:19:54 +0000 Subject: [PATCH] ethdev: fix switching domain allocation The maximum amount of unique swutching domain is supposed to be equal RTE_MAX_ETHPORTS. Current implementation allows to allocate only RTE_MAX_ETHPORTS-1 domains. The definition of RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID is changed from 0 to UINT16_MAX, the rte_eth_dev_info_get is updated to initialize dev_ibfo structure accordingly. Fixes: ce9250406323 ("ethdev: add switch domain allocator") Cc: stable@dpdk.org Signed-off-by: Viacheslav Ovsiienko Reviewed-by: Ferruh Yigit --- lib/librte_ethdev/rte_ethdev.c | 4 ++-- lib/librte_ethdev/rte_ethdev.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index aec2d0f704..42ce177fe1 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -2968,6 +2968,7 @@ rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info) * return status and does not know if get is successful or not. */ memset(dev_info, 0, sizeof(struct rte_eth_dev_info)); + dev_info->switch_info.domain_id = RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID; RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); dev = &rte_eth_devices[port_id]; @@ -5064,8 +5065,7 @@ rte_eth_switch_domain_alloc(uint16_t *domain_id) *domain_id = RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID; - for (i = RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID + 1; - i < RTE_MAX_ETHPORTS; i++) { + for (i = 0; i < RTE_MAX_ETHPORTS; i++) { if (rte_eth_switch_domains[i].state == RTE_ETH_SWITCH_DOMAIN_UNUSED) { rte_eth_switch_domains[i].state = diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 18a9defc24..d1a593ad11 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1196,7 +1196,7 @@ struct rte_eth_dev_portconf { * Default values for switch domain id when ethdev does not support switch * domain definitions. */ -#define RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID (0) +#define RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID (UINT16_MAX) /** * Ethernet device associated switch information -- 2.20.1