[v1,2/2] ethdev: fix some APIs can be used in the new event
Checks
Commit Message
The rte_eth_dev_socket_id() and rte_eth_dev_owner_*() can be used after
allocating an ethdev. So this patch relaxes the conditions for using them.
Fixes: 7dcd73e37965 ("drivers/bus: set device NUMA node to unknown by default")
Fixes: 53ef1b34776b ("ethdev: add sanity checks in control APIs")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
---
lib/ethdev/rte_ethdev.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
Comments
15/01/2025 04:41, Huisong Li:
> The rte_eth_dev_socket_id() and rte_eth_dev_owner_*() can be used after
> allocating an ethdev. So this patch relaxes the conditions for using them.
You should be more explicit:
"during probing, before it becomes generally available and considered as valid".
Should we add these functions in the comment for RTE_ETH_EVENT_NEW?
在 2025/1/15 19:36, Thomas Monjalon 写道:
> 15/01/2025 04:41, Huisong Li:
>> The rte_eth_dev_socket_id() and rte_eth_dev_owner_*() can be used after
>> allocating an ethdev. So this patch relaxes the conditions for using them.
> You should be more explicit:
> "during probing, before it becomes generally available and considered as valid".
"During probing, before the port becomes generally available, its socket
id and owner id can be considered as valid."
How about say it like this?
>
> Should we add these functions in the comment for RTE_ETH_EVENT_NEW?
Ack
>
>
> .
16/01/2025 07:14, lihuisong (C):
> 在 2025/1/15 19:36, Thomas Monjalon 写道:
> > 15/01/2025 04:41, Huisong Li:
> >> The rte_eth_dev_socket_id() and rte_eth_dev_owner_*() can be used after
> >> allocating an ethdev. So this patch relaxes the conditions for using them.
> > You should be more explicit:
> > "during probing, before it becomes generally available and considered as valid".
> "During probing, before the port becomes generally available, its socket
> id and owner id can be considered as valid."
> How about say it like this?
I prefer when you give the function names, it is more explicit.
在 2025/1/16 17:09, Thomas Monjalon 写道:
> 16/01/2025 07:14, lihuisong (C):
>> 在 2025/1/15 19:36, Thomas Monjalon 写道:
>>> 15/01/2025 04:41, Huisong Li:
>>>> The rte_eth_dev_socket_id() and rte_eth_dev_owner_*() can be used after
>>>> allocating an ethdev. So this patch relaxes the conditions for using them.
>>> You should be more explicit:
>>> "during probing, before it becomes generally available and considered as valid".
>> "During probing, before the port becomes generally available, its socket
>> id and owner id can be considered as valid."
>> How about say it like this?
> I prefer when you give the function names, it is more explicit.
ok
>
>
>
> .
@@ -600,9 +600,10 @@ rte_eth_dev_owner_get(const uint16_t port_id, struct rte_eth_dev_owner *owner)
struct rte_eth_dev *ethdev;
int ret;
- RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
- ethdev = &rte_eth_devices[port_id];
+ if (port_id >= RTE_MAX_ETHPORTS)
+ return -ENODEV;
+ ethdev = &rte_eth_devices[port_id];
if (!eth_dev_is_allocated(ethdev)) {
RTE_ETHDEV_LOG_LINE(ERR, "Port ID %"PRIu16" is not allocated",
port_id);
@@ -635,8 +636,15 @@ int
rte_eth_dev_socket_id(uint16_t port_id)
{
int socket_id = SOCKET_ID_ANY;
+ struct rte_eth_dev *ethdev;
- if (!rte_eth_dev_is_valid_port(port_id)) {
+ if (port_id >= RTE_MAX_ETHPORTS) {
+ rte_errno = EINVAL;
+ return socket_id;
+ }
+
+ ethdev = &rte_eth_devices[port_id];
+ if (!eth_dev_is_allocated(ethdev)) {
rte_errno = EINVAL;
} else {
socket_id = rte_eth_devices[port_id].data->numa_node;