Re: [ovs-dev] [PATCH v4 1/3] netdev-dpdk: Fix double attaching of virtual devices.
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.
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.
'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 LoftusFixes: 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