[v2] ethdev: fix switching domain allocation
Checks
Commit Message
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 <viacheslavo@mellanox.com>
---
v1: - http://patches.dpdk.org/patch/64011/
v2: - RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID is defined as UINT16_MAX
- valid domain range to allocate: 0..RTE_MAX_ETHPORTS-1
lib/librte_ethdev/rte_ethdev.c | 4 ++--
lib/librte_ethdev/rte_ethdev.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
Comments
On 1/16/2020 4:19 PM, Viacheslav Ovsiienko wrote:
> 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 <viacheslavo@mellanox.com>
>
> ---
> v1: - http://patches.dpdk.org/patch/64011/
> v2: - RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID is defined as UINT16_MAX
> - valid domain range to allocate: 0..RTE_MAX_ETHPORTS-1
>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
On 1/16/2020 7:38 PM, Ferruh Yigit wrote:
> On 1/16/2020 4:19 PM, Viacheslav Ovsiienko wrote:
>> 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 <viacheslavo@mellanox.com>
>>
>> ---
>> v1: - http://patches.dpdk.org/patch/64011/
>> v2: - RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID is defined as UINT16_MAX
>> - valid domain range to allocate: 0..RTE_MAX_ETHPORTS-1
>>
>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>
Applied to dpdk-next-net/master, thanks.
@@ -2968,6 +2968,7 @@ struct rte_eth_dev *
* 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 @@ enum rte_eth_switch_domain_state {
*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 =
@@ -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