[ovs-dev] [PATCH v2 1/3] netdev-dpdk: Fix double attaching of virtual devices.
Darrell Ball
dball at vmware.com
Tue May 16 17:14:58 UTC 2017
I applied the following incremental to fix a missing free on error, but otherwise is fine
Can you fold in the incremental.
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 56b9d25..25d9c9b 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -1128,7 +1128,7 @@ netdev_dpdk_process_devargs(const char *devargs, char **errp)
} else {
/* Attach unsuccessful */
VLOG_WARN_BUF(errp, "Error attaching device '%s' to DPDK", devargs);
- return -1;
+ new_port_id = UINT8_MAX;
}
}
On 5/12/17, 8:10 AM, "Ilya Maximets" <i.maximets at samsung.com> wrote:
'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.loftus at intel.com>
Fixes: 69876ed78611 ("netdev-dpdk: Add support for virtual DPDK PMDs (vdevs)")
Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
---
lib/netdev-dpdk.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 609b8da..56b9d25 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -1114,10 +1114,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)) {
@@ -1130,6 +1132,7 @@ netdev_dpdk_process_devargs(const char *devargs, char **errp)
}
}
+ free(name);
return new_port_id;
}
--
2.7.4
More information about the dev
mailing list