diff mbox series

[ovs-dev,V3,4/4] netdev-offload-dpdk: Implement flow flush

Message ID 20201228101903.18186-5-elibr@nvidia.com
State Accepted
Headers show
Series netdev datapath flush offloaded flows | expand

Commit Message

Eli Britstein Dec. 28, 2020, 10:19 a.m. UTC
Remove all the rules for the specified netdev.

Signed-off-by: Eli Britstein <elibr@nvidia.com>
Reviewed-by: Gaetan Rivet <gaetanr@nvidia.com>
---
 lib/netdev-offload-dpdk.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Emma Finn Jan. 13, 2021, 8:52 a.m. UTC | #1
> -----Original Message-----
> From: dev <ovs-dev-bounces@openvswitch.org> On Behalf Of Eli Britstein
> Sent: Monday 28 December 2020 10:19
> To: dev@openvswitch.org; Ilya Maximets <i.maximets@ovn.org>
> Cc: Eli Britstein <elibr@nvidia.com>; Gaetan Rivet <gaetanr@nvidia.com>
> Subject: [ovs-dev] [PATCH V3 4/4] netdev-offload-dpdk: Implement flow flush
> 
> Remove all the rules for the specified netdev.
> 
> Signed-off-by: Eli Britstein <elibr@nvidia.com>
> Reviewed-by: Gaetan Rivet <gaetanr@nvidia.com>
> ---
>  lib/netdev-offload-dpdk.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index
> dece4fd06..c45dd3e90 100644
> --- a/lib/netdev-offload-dpdk.c
> +++ b/lib/netdev-offload-dpdk.c
> @@ -1585,10 +1585,27 @@ out:
>      return ret;
>  }
> 
> +static int
> +netdev_offload_dpdk_flow_flush(struct netdev *netdev) {
> +    struct ufid_to_rte_flow_data *data;
> +
> +    CMAP_FOR_EACH (data, node, &ufid_to_rte_flow) {
> +        if (data->netdev != netdev) {
> +            continue;
> +        }
> +
> +        netdev_offload_dpdk_flow_destroy(data);
> +    }
> +
> +    return 0;
> +}
> +
>  const struct netdev_flow_api netdev_offload_dpdk = {
>      .type = "dpdk_flow_api",
>      .flow_put = netdev_offload_dpdk_flow_put,
>      .flow_del = netdev_offload_dpdk_flow_del,
>      .init_flow_api = netdev_offload_dpdk_init_flow_api,
>      .flow_get = netdev_offload_dpdk_flow_get,
> +    .flow_flush = netdev_offload_dpdk_flow_flush,
>  };

LGTM.
Tested with Intel XL710 Devices.
Acked-by: Emma Finn <emma.finn@intel.com>
Tested-by: Emma Finn <emma.finn@intel.com>

Thanks, 
Emma 

> --
> 2.28.0.546.g385c171
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
diff mbox series

Patch

diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
index dece4fd06..c45dd3e90 100644
--- a/lib/netdev-offload-dpdk.c
+++ b/lib/netdev-offload-dpdk.c
@@ -1585,10 +1585,27 @@  out:
     return ret;
 }
 
+static int
+netdev_offload_dpdk_flow_flush(struct netdev *netdev)
+{
+    struct ufid_to_rte_flow_data *data;
+
+    CMAP_FOR_EACH (data, node, &ufid_to_rte_flow) {
+        if (data->netdev != netdev) {
+            continue;
+        }
+
+        netdev_offload_dpdk_flow_destroy(data);
+    }
+
+    return 0;
+}
+
 const struct netdev_flow_api netdev_offload_dpdk = {
     .type = "dpdk_flow_api",
     .flow_put = netdev_offload_dpdk_flow_put,
     .flow_del = netdev_offload_dpdk_flow_del,
     .init_flow_api = netdev_offload_dpdk_init_flow_api,
     .flow_get = netdev_offload_dpdk_flow_get,
+    .flow_flush = netdev_offload_dpdk_flow_flush,
 };