diff mbox

[ovs-dev,ovs,V2,16/21] netdev-tc-offloads: netdev flow del using tc interface

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

Commit Message

Paul Blakey Dec. 25, 2016, 11:39 a.m. UTC
Signed-off-by: Paul Blakey <paulb@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
---
 lib/netdev-tc-offloads.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)
diff mbox

Patch

diff --git a/lib/netdev-tc-offloads.c b/lib/netdev-tc-offloads.c
index 4acc8ea..25df598 100644
--- a/lib/netdev-tc-offloads.c
+++ b/lib/netdev-tc-offloads.c
@@ -568,10 +568,24 @@  netdev_tc_flow_get(struct netdev *netdev OVS_UNUSED,
 
 int
 netdev_tc_flow_del(struct netdev *netdev OVS_UNUSED,
-                      struct dpif_flow_stats *stats OVS_UNUSED,
-                      ovs_u128 *ufid OVS_UNUSED)
+                      struct dpif_flow_stats *stats,
+                      ovs_u128 *ufid)
 {
-    return EOPNOTSUPP;
+    struct netdev *dev;
+    int old_prio = 0;
+    int old_handle = get_ufid_tc_mapping(ufid, &old_prio, &dev);
+
+    if (old_handle && old_prio) {
+        int err = tc_del_flower(netdev_get_ifindex(dev), old_handle, old_prio);
+
+        del_ufid_tc_mapping(ufid);
+        netdev_close(dev);
+        if (stats) {
+            memset(stats, 0, sizeof(*stats));
+        }
+        return err;
+    }
+    return ENOENT;
 }
 
 int