[PATCH] net/tap: Bug fix to populate fds in secondary process
Ferruh Yigit
ferruh.yigit at intel.com
Mon Jan 17 19:28:04 CET 2022
On 11/26/2021 4:15 AM, Kumara Parameshwaran wrote:
> From: Kumara Parameshwaran <kparameshwar at vmware.com>
>
> When a tap device is hotplugged to primary process which in turn
> adds the device to all secondary process, the secondary process
> does a tap_mp_attach_queues, but the fds are not populated in
> the primary during the probe they are populated during the queue_setup,
> added a fix to sync the queues during rte_eth_dev_start
>
> Signed-off-by: Kumara Parameshwaran <kparameshwar at vmware.com>
<...>
>
> +static int
> +tap_mp_req_start_rxtx(const struct rte_mp_msg *request, __rte_unused const void *peer)
> +{
> + struct rte_eth_dev *dev;
> + int ret;
> + uint16_t port_id;
> + const struct ipc_queues *request_param =
> + (const struct ipc_queues *)request->param;
> + int fd_iterator;
> + int queue;
> + struct pmd_process_private *process_private;
> +
> + ret = rte_eth_dev_get_port_by_name(request_param->port_name, &port_id);
> + if (ret) {
> + TAP_LOG(ERR, "Failed to get port id for %s",
> + request_param->port_name);
> + return -1;
> + }
> + dev = &rte_eth_devices[port_id];
Since this is not really related with your patch, I want to have a separate thread for it.
It is not good to access the 'rte_eth_devices' global variable directly from a driver, that
is error prone.
Btw, what 'peer' supposed to contain?
It can be solved by adding an internal API, only for drivers to get eth_dev from the name,
like: 'rte_eth_dev_get_by_name()'.
This way a few other usage can be converted to this API.
@Thomas and @Andrew what do you think about the new API proposal?
More information about the dev
mailing list