Tested-by: Billy O'Mahony <billy.o.mah...@intel.com>
Acked-by: Billy O'Mahony <billy.o.mah...@intel.com>


> -----Original Message-----
> From: ovs-dev-boun...@openvswitch.org [mailto:ovs-dev-
> boun...@openvswitch.org] On Behalf Of Ilya Maximets
> Sent: Friday, May 19, 2017 2:38 PM
> To: d...@openvswitch.org; Daniele Di Proietto <diproiet...@ovn.org>;
> Darrell Ball <db...@vmware.com>
> Cc: Ilya Maximets <i.maxim...@samsung.com>; Heetae Ahn
> <heetae82....@samsung.com>
> Subject: [ovs-dev] [PATCH v4 1/3] netdev-dpdk: Fix double attaching of
> virtual devices.
> 
> 'devargs' for virtual devices contains not only name but also a list of
> arguments like this:
> 
>       'net_pcap0,rx_pcap=file_rx.pcap,tx_pcap=file_tx.pcap'
>       or
>       'eth_af_packet0,iface=eth0'
> 
> We must cut off the arguments from this string before calling
> 'rte_eth_dev_get_port_by_name()' to avoid double attaching of the same
> device.
> 
> CC: Ciara Loftus <ciara.lof...@intel.com>
> Fixes: 69876ed78611 ("netdev-dpdk: Add support for virtual DPDK PMDs
> (vdevs)")
> Signed-off-by: Ilya Maximets <i.maxim...@samsung.com>
> ---
>  lib/netdev-dpdk.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 9941f88..1586e41
> 100644
> --- a/lib/netdev-dpdk.c
> +++ b/lib/netdev-dpdk.c
> @@ -1115,10 +1115,12 @@ netdev_dpdk_lookup_by_port_id(int port_id)
> static int  netdev_dpdk_process_devargs(const char *devargs, char **errp)
> {
> +    /* Get the name up to the first comma. */
> +    char *name = xmemdup0(devargs, strcspn(devargs, ","));
>      uint8_t new_port_id = UINT8_MAX;
> 
>      if (!rte_eth_dev_count()
> -            || rte_eth_dev_get_port_by_name(devargs, &new_port_id)
> +            || rte_eth_dev_get_port_by_name(name, &new_port_id)
>              || !rte_eth_dev_is_valid_port(new_port_id)) {
>          /* Device not found in DPDK, attempt to attach it */
>          if (!rte_eth_dev_attach(devargs, &new_port_id)) { @@ -1128,10
> +1130,11 @@ netdev_dpdk_process_devargs(const char *devargs, char
> **errp)
>              /* Attach unsuccessful */
>              VLOG_WARN_BUF(errp, "Error attaching device '%s' to DPDK",
>                            devargs);
> -            return -1;
> +            new_port_id = UINT8_MAX;
>          }
>      }
> 
> +    free(name);
>      return new_port_id;
>  }
> 
> --
> 2.7.4
> 
> _______________________________________________
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to