diff mbox

[ovs-dev,ovs,V8,06/26] dpif-netlink: Flush added ports using netdev flow api

Message ID 1493824097-47495-7-git-send-email-roid@mellanox.com
State Changes Requested
Headers show

Commit Message

Roi Dayan May 3, 2017, 3:07 p.m. UTC
From: Paul Blakey <paulb@mellanox.com>

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>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
---
 lib/dpif-netlink.c |  5 +++++
 lib/netdev.c       | 12 ++++++++++++
 lib/netdev.h       |  1 +
 3 files changed, 18 insertions(+)

Comments

Simon Horman May 8, 2017, 12:50 p.m. UTC | #1
On Wed, May 03, 2017 at 06:07:57PM +0300, Roi Dayan wrote:
> From: Paul Blakey <paulb@mellanox.com>
> 
> 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>
> Reviewed-by: Simon Horman <simon.horman@netronome.com>

Flavio Leitner provided an Ack for v7 of this patch.
You may want to consider adding that tag.
Roi Dayan May 16, 2017, 9:19 a.m. UTC | #2
On 08/05/2017 15:50, Simon Horman wrote:
> On Wed, May 03, 2017 at 06:07:57PM +0300, Roi Dayan wrote:
>> From: Paul Blakey <paulb@mellanox.com>
>>
>> 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>
>> Reviewed-by: Simon Horman <simon.horman@netronome.com>
>
> Flavio Leitner provided an Ack for v7 of this patch.
> You may want to consider adding that tag.
>

added to 3 commits acked by Flavio:
compat: Add tc compatibility headers for old kernels
dpif: Save added ports in a port map for netdev flow api use
dpif-netlink: Flush added ports using netdev flow api
diff mbox

Patch

diff --git a/lib/dpif-netlink.c b/lib/dpif-netlink.c
index e275247..fea9404 100644
--- a/lib/dpif-netlink.c
+++ b/lib/dpif-netlink.c
@@ -1087,6 +1087,11 @@  dpif_netlink_flow_flush(struct dpif *dpif_)
     dpif_netlink_flow_init(&flow);
     flow.cmd = OVS_FLOW_CMD_DEL;
     flow.dp_ifindex = dpif->dp_ifindex;
+
+    if (netdev_flow_api_enabled) {
+        netdev_ports_flow_flush(DPIF_HMAP_KEY(dpif_));
+    }
+
     return dpif_netlink_flow_transact(&flow, NULL, NULL);
 }
 
diff --git a/lib/netdev.c b/lib/netdev.c
index 1e0e991..d6c2a3d 100644
--- a/lib/netdev.c
+++ b/lib/netdev.c
@@ -2235,6 +2235,18 @@  netdev_ifindex_to_odp_port(int ifindex)
     return ret;
 }
 
+void
+netdev_ports_flow_flush(const void *obj)
+{
+    struct port_to_netdev_data *data;
+
+    HMAP_FOR_EACH(data, node, &port_to_netdev) {
+        if (data->obj == obj) {
+            netdev_flow_flush(data->netdev);
+        }
+    }
+}
+
 bool netdev_flow_api_enabled = false;
 
 #ifdef __linux__
diff --git a/lib/netdev.h b/lib/netdev.h
index 9aa7e5e..a59f6ea 100644
--- a/lib/netdev.h
+++ b/lib/netdev.h
@@ -186,6 +186,7 @@  int netdev_ports_insert(struct netdev *, const void *obj, struct dpif_port *);
 struct netdev *netdev_ports_get(odp_port_t port, const void *obj);
 int netdev_ports_remove(odp_port_t port, const void *obj);
 odp_port_t netdev_ifindex_to_odp_port(int ifindex);
+void netdev_ports_flow_flush(const void *obj);
 
 /* native tunnel APIs */
 /* Structure to pass parameters required to build a tunnel header. */