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" <[email protected]> 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 <[email protected]>
    Fixes: 69876ed78611 ("netdev-dpdk: Add support for virtual DPDK PMDs 
(vdevs)")
    Signed-off-by: Ilya Maximets <[email protected]>
    ---
    
     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
    
    

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to