> -----Original Message-----
> From: dev <[email protected]> On Behalf Of Eli Britstein
> Sent: Monday 28 December 2020 10:19
> To: [email protected]; Ilya Maximets <[email protected]>
> Cc: Eli Britstein <[email protected]>; Gaetan Rivet <[email protected]>
> Subject: [ovs-dev] [PATCH V3 2/4] netdev-offload-dpdk: Keep netdev in offload
> object
>
> Keep the netdev of the offload rule as a field in the offload object as a
> pre-step
> towards support flushing of the offload rules.
>
> Signed-off-by: Eli Britstein <[email protected]>
> Reviewed-by: Gaetan Rivet <[email protected]>
> ---
> lib/netdev-offload-dpdk.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c index
> 01c52e1de..5b22becd0 100644
> --- a/lib/netdev-offload-dpdk.c
> +++ b/lib/netdev-offload-dpdk.c
> @@ -57,6 +57,7 @@ static struct cmap ufid_to_rte_flow = CMAP_INITIALIZER;
> struct ufid_to_rte_flow_data {
> struct cmap_node node;
> ovs_u128 ufid;
> + struct netdev *netdev;
> struct rte_flow *rte_flow;
> bool actions_offloaded;
> struct dpif_flow_stats stats;
> @@ -79,7 +80,7 @@ ufid_to_rte_flow_data_find(const ovs_u128 *ufid) }
>
> static inline struct ufid_to_rte_flow_data *
> -ufid_to_rte_flow_associate(const
> ovs_u128 *ufid,
> +ufid_to_rte_flow_associate(const ovs_u128 *ufid, struct netdev *netdev,
> struct rte_flow *rte_flow, bool
> actions_offloaded) {
> size_t hash = hash_bytes(ufid, sizeof *ufid, 0); @@ -98,6 +99,7 @@
> ufid_to_rte_flow_associate(const ovs_u128 *ufid,
> }
>
> data->ufid = *ufid;
> + data->netdev = netdev_ref(netdev);
> data->rte_flow = rte_flow;
> data->actions_offloaded = actions_offloaded;
>
> @@ -116,6 +118,7 @@ ufid_to_rte_flow_disassociate(const ovs_u128 *ufid)
> if (ovs_u128_equals(*ufid, data->ufid)) {
> cmap_remove(&ufid_to_rte_flow,
> CONST_CAST(struct cmap_node *, &data->node), hash);
> + netdev_close(data->netdev);
> ovsrcu_postpone(free, data);
> return;
> }
> @@ -1435,7 +1438,8 @@ netdev_offload_dpdk_add_flow(struct netdev
> *netdev,
> if (!flow) {
> goto out;
> }
> - flows_data = ufid_to_rte_flow_associate(ufid, flow, actions_offloaded);
> + flows_data = ufid_to_rte_flow_associate(ufid, netdev, flow,
> + actions_offloaded);
> VLOG_DBG("%s: installed flow %p by ufid "UUID_FMT,
> netdev_get_name(netdev), flow, UUID_ARGS((struct uuid *)ufid));
>
LGTM.
Tested with Intel XL710 Devices.
Acked-by: Emma Finn <[email protected]>
Tested-by: Emma Finn <[email protected]>
> --
> 2.28.0.546.g385c171
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev