ofproto-dpif: Don't try to use dpif_probe_feature() with Windows datapath.
authorAlin Serdean <aserdean@cloudbasesolutions.com>
Thu, 25 Jun 2015 17:18:41 +0000 (17:18 +0000)
committerBen Pfaff <blp@nicira.com>
Thu, 25 Jun 2015 17:56:33 +0000 (10:56 -0700)
This patch disables features which are not currently supported in the
Windows datapath.

Unfortunately we have to do it in userspace because dpif_probe_feature is
not treated accordingly in the Windows datapath.  Fixing that is the
correct solution; this commit works around it for branch-2.4.

I opened the issue to track the feature for later implementations:
https://github.com/openvswitch/ovs-issues/issues/85

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Acked-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto/ofproto-dpif.c

index 369e0b9..6cdaa32 100644 (file)
@@ -1010,8 +1010,14 @@ check_recirc(struct dpif_backer *backer)
 
     ofpbuf_use_stack(&key, &keybuf, sizeof keybuf);
     odp_flow_key_from_flow(&key, &flow, NULL, 0, true);
+#ifdef _WIN32
+    /* XXX Force disable of datapath recirculation from userspace until the
+     * dpif_probe_feature is properly implemented in the windows datapath */
+    enable_recirc = false;
+#else
     enable_recirc = dpif_probe_feature(backer->dpif, "recirculation", &key,
                                        NULL);
+#endif
 
     if (enable_recirc) {
         VLOG_INFO("%s: Datapath supports recirculation",
@@ -1045,7 +1051,13 @@ check_ufid(struct dpif_backer *backer)
     odp_flow_key_from_flow(&key, &flow, NULL, 0, true);
     dpif_flow_hash(backer->dpif, key.data, key.size, &ufid);
 
+#ifdef _WIN32
+    /* XXX Force disable of datapath recirculation from userspace until the
+     * dpif_probe_feature is properly implemented in the windows datapath */
+    enable_ufid = false;
+#else
     enable_ufid = dpif_probe_feature(backer->dpif, "UFID", &key, &ufid);
+#endif
 
     if (enable_ufid) {
         VLOG_INFO("%s: Datapath supports unique flow ids",
@@ -1151,6 +1163,11 @@ check_max_mpls_depth(struct dpif_backer *backer)
 
         ofpbuf_use_stack(&key, &keybuf, sizeof keybuf);
         odp_flow_key_from_flow(&key, &flow, NULL, 0, false);
+#ifdef _WIN32
+        /* XXX Force disable of datapath recirculation from userspace until the
+         * dpif_probe_feature is properly implemented in the windows datapath */
+        break;
+#endif
         if (!dpif_probe_feature(backer->dpif, "MPLS", &key, NULL)) {
             break;
         }