On Fri, 17 Apr 2020 23:00:57 +0100 Ferruh Yigit <ferruh.yi...@intel.com> wrote:
> 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 > For 20.11, those _MAX values need to be removed from enums