Introduce a rte flow query function as a pre-step towards reading HW statistics of fully offloaded flows.
Signed-off-by: Eli Britstein <[email protected]> Reviewed-by: Oz Shlomo <[email protected]> --- lib/netdev-dpdk.c | 25 +++++++++++++++++++++++++ lib/netdev-dpdk.h | 6 ++++++ 2 files changed, 31 insertions(+) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 327fa7698..c509ffad3 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -4501,6 +4501,31 @@ netdev_dpdk_rte_flow_create(struct netdev *netdev, return flow; } +int +netdev_dpdk_rte_flow_query(struct netdev *netdev, + struct rte_flow *rte_flow, + struct rte_flow_query_count *query, + struct rte_flow_error *error) +{ + struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); + struct rte_flow_action_count count = {}; + const struct rte_flow_action actions[] = { + { + .type = RTE_FLOW_ACTION_TYPE_COUNT, + .conf = &count, + }, + { + .type = RTE_FLOW_ACTION_TYPE_END, + }, + }; + int ret; + + ovs_mutex_lock(&dev->mutex); + ret = rte_flow_query(dev->port_id, rte_flow, actions, query, error); + ovs_mutex_unlock(&dev->mutex); + return ret; +} + int netdev_dpdk_rte_flow_flush(struct netdev *netdev, struct rte_flow_error *error) diff --git a/lib/netdev-dpdk.h b/lib/netdev-dpdk.h index 960aec7a8..8e79bcdf8 100644 --- a/lib/netdev-dpdk.h +++ b/lib/netdev-dpdk.h @@ -31,6 +31,7 @@ struct rte_flow_error; struct rte_flow_attr; struct rte_flow_item; struct rte_flow_action; +struct rte_flow_query_count; void netdev_dpdk_register(void); void free_dpdk_buf(struct dp_packet *); @@ -50,6 +51,11 @@ netdev_dpdk_rte_flow_create(struct netdev *netdev, int netdev_dpdk_rte_flow_flush(struct netdev *netdev, struct rte_flow_error *error); +int +netdev_dpdk_rte_flow_query(struct netdev *netdev, + struct rte_flow *rte_flow, + struct rte_flow_query_count *query, + struct rte_flow_error *error); #else -- 2.14.5 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
