> +
> +static int
> +rte_pmd_vhost_devinit(const char *name, const char *params)
> +{
> +     struct rte_kvargs *kvlist = NULL;
> +     int ret = 0;
> +     int index;
> +     char *iface_name;
> +
> +     RTE_LOG(INFO, PMD, "Initializing pmd_vhost for %s\n", name);
> +
> +     kvlist = rte_kvargs_parse(params, valid_arguments);
> +     if (kvlist == NULL)
> +             return -1;
> +
> +     if (strlen(name) < strlen("eth_vhost"))
> +             return -1;
> +
> +     index = strtol(name + strlen("eth_vhost"), NULL, 0);
> +     if (errno == ERANGE)
> +             return -1;
> +
> +     if (rte_kvargs_count(kvlist, ETH_VHOST_IFACE_ARG) == 1) {
> +             ret = rte_kvargs_process(kvlist, ETH_VHOST_IFACE_ARG,
> +                             &open_iface, &iface_name);
> +             if (ret < 0)
> +                     goto out_free;
> +
> +             eth_dev_vhost_create(name, index, iface_name,
> rte_socket_id());
> +     }
> +
> +out_free:
> +     rte_kvargs_free(kvlist);
> +     return ret;
> +}
> +

This suggests to me that vHost ports will only be available/created if one 
supplies the " --vdev 'eth_vhost0,iface=...' " options when launching the 
application. There seems to be no option available to add vHost ports 
on-the-fly after the init process. One would have to restart the application 
with different parameters in order to modify the vHost port configuration. Is 
this correct?

If so, this pmd implementation will not work with Open vSwitch. OVS relies on 
the ability to call the rte_vhost_driver_register function at any point in the 
lifetime of the application, in order to create new vHost ports and 
subsequently register/create the sockets. Being bound to the selection chosen 
on the command line when launching the application is not suitable for OVS.

Thanks,
Ciara

Reply via email to