If netdev flow offloading is enabled, flush all
added ports using netdev flow api.

Signed-off-by: Paul Blakey <pa...@mellanox.com>
Reviewed-by: Roi Dayan <r...@mellanox.com>
---
 lib/dpif-netlink.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/lib/dpif-netlink.c b/lib/dpif-netlink.c
index a39faa2..36f2888 100644
--- a/lib/dpif-netlink.c
+++ b/lib/dpif-netlink.c
@@ -1054,10 +1054,21 @@ dpif_netlink_flow_flush(struct dpif *dpif_)
 {
     const struct dpif_netlink *dpif = dpif_netlink_cast(dpif_);
     struct dpif_netlink_flow flow;
+    struct ovs_list port_list;
+    struct netdev_list_element *element;
 
     dpif_netlink_flow_init(&flow);
     flow.cmd = OVS_FLOW_CMD_DEL;
     flow.dp_ifindex = dpif->dp_ifindex;
+
+    if (netdev_flow_api_enabled) {
+        netdev_hmap_port_get_list(dpif_->dpif_class, &port_list);
+        LIST_FOR_EACH(element, node, &port_list) {
+            netdev_flow_flush(element->netdev);
+        }
+        netdev_port_list_del(&port_list);
+    }
+
     return dpif_netlink_flow_transact(&flow, NULL, NULL);
 }
 
-- 
1.8.3.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to