On 4/14/2020 9:32 AM, Dong Zhou wrote: > One of the reasons to destroy a flow is the fact that no packet matches the > flow for "timeout" time. > For example, when TCP\UDP sessions are suddenly closed. > > Currently, there is not any DPDK mechanism for flow aging and the > applications use their own ways to detect and destroy aged-out flows. > > The flow aging implementation need include: > - A new rte_flow action: RTE_FLOW_ACTION_TYPE_AGE to set the timeout and > the application flow context for each flow. > - A new ethdev event: RTE_ETH_EVENT_FLOW_AGED for the driver to report > that there are new aged-out flows. > - A new rte_flow API: rte_flow_get_aged_flows to get the aged-out flows > contexts from the port. > - Support input flow aging command line in Testpmd. > > Signed-off-by: Dong Zhou <do...@mellanox.com>
<...> > --- a/lib/librte_ethdev/rte_ethdev.h > +++ b/lib/librte_ethdev/rte_ethdev.h > @@ -3015,6 +3015,7 @@ enum rte_eth_event_type { > RTE_ETH_EVENT_NEW, /**< port is probed */ > RTE_ETH_EVENT_DESTROY, /**< port is released */ > RTE_ETH_EVENT_IPSEC, /**< IPsec offload related event */ > + RTE_ETH_EVENT_FLOW_AGED,/**< New aged-out flows is detected */ > RTE_ETH_EVENT_MAX /**< max value of this enum */ > }; Just recognized that this is failing in ABI check [1], as far as last time for a similar enum warning a QAT patch has been dropped, should this need to wait for 20.11 too? [1] [C]'function int _rte_eth_dev_callback_process(rte_eth_dev*, rte_eth_event_type, void*)' at rte_ethdev.c:4063:1 has some indirect sub-type changes: parameter 2 of type 'enum rte_eth_event_type' has sub-type changes: type size hasn't changed 1 enumerator insertion: 'rte_eth_event_type::RTE_ETH_EVENT_FLOW_AGED' value '10' 1 enumerator change: 'rte_eth_event_type::RTE_ETH_EVENT_MAX' from value '10' to '11' at rte_ethdev.h:3008:1