This patch avoids the ovs_rcu to report WARN, caused by blocked
for a long time, when ovs-vswitchd processes a port with many
rx/tx queues. The number of tx/rx queues per port may be appropriate,
because the dpdk uses it as an default max value.

Signed-off-by: nickcooper-zhangtonghao <[email protected]>
---
 lib/netdev-dummy.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
index bdb77e1..5370404 100644
--- a/lib/netdev-dummy.c
+++ b/lib/netdev-dummy.c
@@ -827,6 +827,8 @@ netdev_dummy_set_in6(struct netdev *netdev_, struct 
in6_addr *in6,
     return 0;
 }
 
+#define DUMMY_MAX_QUEUES_PER_PORT 1024
+
 static int
 netdev_dummy_set_config(struct netdev *netdev_, const struct smap *args)
 {
@@ -868,8 +870,11 @@ netdev_dummy_set_config(struct netdev *netdev_, const 
struct smap *args)
         goto exit;
     }
 
-    new_n_rxq = MAX(smap_get_int(args, "n_rxq", NR_QUEUE), 1);
-    new_n_txq = MAX(smap_get_int(args, "n_txq", NR_QUEUE), 1);
+    new_n_rxq = MIN(DUMMY_MAX_QUEUES_PER_PORT,
+                    MAX(smap_get_int(args, "n_rxq", NR_QUEUE), 1));
+    new_n_txq = MIN(DUMMY_MAX_QUEUES_PER_PORT,
+                    MAX(smap_get_int(args, "n_txq", NR_QUEUE), 1));
+
     new_numa_id = smap_get_int(args, "numa_id", 0);
     if (new_n_rxq != netdev->requested_n_rxq
         || new_n_txq != netdev->requested_n_txq
-- 
1.8.3.1



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

Reply via email to