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 <el...@nvidia.com> Reviewed-by: Gaetan Rivet <gaet...@nvidia.com> --- 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)); -- 2.28.0.546.g385c171 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev