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>
ofpbuf_use_stack(&key, &keybuf, sizeof keybuf);
odp_flow_key_from_flow(&key, &flow, NULL, 0, true);
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);
enable_recirc = dpif_probe_feature(backer->dpif, "recirculation", &key,
NULL);
if (enable_recirc) {
VLOG_INFO("%s: Datapath supports recirculation",
if (enable_recirc) {
VLOG_INFO("%s: Datapath supports recirculation",
odp_flow_key_from_flow(&key, &flow, NULL, 0, true);
dpif_flow_hash(backer->dpif, key.data, key.size, &ufid);
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);
enable_ufid = dpif_probe_feature(backer->dpif, "UFID", &key, &ufid);
if (enable_ufid) {
VLOG_INFO("%s: Datapath supports unique flow ids",
if (enable_ufid) {
VLOG_INFO("%s: Datapath supports unique flow ids",
ofpbuf_use_stack(&key, &keybuf, sizeof keybuf);
odp_flow_key_from_flow(&key, &flow, NULL, 0, false);
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;
}
if (!dpif_probe_feature(backer->dpif, "MPLS", &key, NULL)) {
break;
}