diff mbox

[ovs-dev,ovs,V2,07/21] dpif-netlink: Flush added ports using netdev flow api

Message ID 1482665989-791-8-git-send-email-paulb@mellanox.com
State Changes Requested
Headers show

Commit Message

Paul Blakey Dec. 25, 2016, 11:39 a.m. UTC
If netdev flow offloading is enabled, flush all
added ports using netdev flow api.

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

Patch

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);
 }