[ovs-dev] [PATCH 3/3] netdev-dpdk: Restore flags of dpdk netdev

Binbin Xu xu.binbin1 at zte.com.cn
Fri Nov 11 13:44:51 UTC 2016


If the eth device starts failed or vhost port is not running,
the flags of dpdk netdev should be restored.

Signed-off-by: Binbin Xu <xu.binbin1 at zte.com.cn>
---
 lib/netdev-dpdk.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 4ed7274..0d8da16 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -2151,8 +2151,12 @@ netdev_dpdk_update_flags__(struct netdev_dpdk *dev,
     if (dev->type == DPDK_DEV_ETH) {
         if (dev->flags & NETDEV_UP) {
             err = rte_eth_dev_start(dev->port_id);
-            if (err)
+            if (err) {
+                VLOG_INFO("Start eth dev %s failed: %d\n", 
+                    dev->up.name, err);
+                dev->flags = *old_flagsp;
                 return -err;
+            }
         }
 
         if (dev->flags & NETDEV_PROMISC) {
@@ -2179,6 +2183,8 @@ netdev_dpdk_update_flags__(struct netdev_dpdk *dev,
                 memset(&dev->stats, 0, sizeof dev->stats);
                 rte_spinlock_unlock(&dev->stats_lock);
             }
+        } else {
+            dev->flags = *old_flagsp;
         }
     }
 
-- 
2.9.3




More information about the dev mailing list