Re: [ovs-dev] [PATCH v4 1/3] netdev-dpdk: Fix double attaching of virtual devices.

2017-05-31 Thread Ben Pfaff
Thanks Ilya and Billy, I applied this to master.

On Fri, May 26, 2017 at 12:53:04PM +, O Mahony, Billy wrote:
> 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, _port_id)
> > +|| rte_eth_dev_get_port_by_name(name, _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, _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
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH v4 1/3] netdev-dpdk: Fix double attaching of virtual devices.

2017-05-26 Thread O Mahony, Billy
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, _port_id)
> +|| rte_eth_dev_get_port_by_name(name, _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, _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


[ovs-dev] [PATCH v4 1/3] netdev-dpdk: Fix double attaching of virtual devices.

2017-05-19 Thread Ilya Maximets
'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 
Fixes: 69876ed78611 ("netdev-dpdk: Add support for virtual DPDK PMDs (vdevs)")
Signed-off-by: Ilya Maximets 
---
 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, _port_id)
+|| rte_eth_dev_get_port_by_name(name, _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, _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