24818584 TCP throughput dropped >6X because the traffic flooded to all ports
authorCathy Zhou <Cathy.Zhou@Oracle.COM>
Wed, 30 Nov 2016 16:55:23 -0800
changeset 7412 49c812f3de0b
parent 7411 178d9ed8175b
child 7413 b91a5b8cbc7f
24818584 TCP throughput dropped >6X because the traffic flooded to all ports
components/openvswitch/patches/03-dpif-provider.patch
--- a/components/openvswitch/patches/03-dpif-provider.patch	Wed Nov 30 14:07:33 2016 -0800
+++ b/components/openvswitch/patches/03-dpif-provider.patch	Wed Nov 30 16:55:23 2016 -0800
@@ -95,3 +95,32 @@
  
  /* Translates the 'ofpacts_len' bytes of "struct ofpacts" starting at 'ofpacts'
   * into datapath actions in 'odp_actions', using 'ctx'.
+diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
+index 193e6b7..23cfa4d 100644
+--- a/ofproto/ofproto-dpif-upcall.c
++++ b/ofproto/ofproto-dpif-upcall.c
+@@ -997,8 +997,11 @@ handle_upcalls(struct handler *handler, struct hmap *misses,
+             struct ofpbuf mask;
+             bool megaflow;
+ 
+-            miss->put = true;
++#ifdef __sun
++            if (miss->xout.nf_output_iface != NF_OUT_FLOOD) {
++#endif
+ 
++            miss->put = true;
+             atomic_read(&enable_megaflows, &megaflow);
+             ofpbuf_use_stack(&mask, &miss->mask_buf, sizeof miss->mask_buf);
+             if (megaflow) {
+@@ -1031,6 +1034,11 @@ handle_upcalls(struct handler *handler, struct hmap *misses,
+                 op->u.flow_put.actions = ofpbuf_data(&buf);
+                 op->u.flow_put.actions_len = ofpbuf_size(&buf);
+             }
++#ifdef __sun
++            } else {
++                VLOG_DBG("handle_upcalls flush action, do not flow_put");
++            }
++#endif
+         }
+ 
+         /*