On 10/15/20 11:28 AM, Thomas Monjalon wrote: > 15/10/2020 03:07, Suanming Mou: >> Currently, the rte_flow functions are not defined as thread safe. >> DPDK applications either call the functions in single thread or >> protect any concurrent calling for the rte_flow operations using >> a lock. >> >> For PMDs support the flow operations thread safe natively, the >> redundant protection in application hurts the performance of the >> rte_flow operation functions. >> >> And the restriction of thread safe is not guaranteed for the >> rte_flow functions also limits the applications' expectation. >> >> This feature is going to change the rte_flow functions to be thread >> safe. As different PMDs have different flow operations, some may >> support thread safe already and others may not. For PMDs don't >> support flow thread safe operation, a new lock is defined in ethdev >> in order to protects thread unsafe PMDs from rte_flow level. >> >> A new RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE device flag is added to >> determine whether the PMD supports thread safe flow operation or not. >> For PMDs support thread safe flow operations, set the >> RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE flag, rte_flow level functions will >> skip the thread safe helper lock for these PMDs. Again the rte_flow >> level thread safe lock only works when PMD operation functions are >> not thread safe. >> >> For the PMDs which don't want the default mutex lock, just set the >> flag in the PMD, and add the prefer type of lock in the PMD. Then >> the default mutex lock is easily replaced by the PMD level lock. >> >> The change has no effect on the current DPDK applications. No change >> is required for the current DPDK applications. For the standard posix >> pthread_mutex, if no lock contention with the added rte_flow level >> mutex, the mutex only does the atomic increasing in >> pthread_mutex_lock() and decreasing in >> pthread_mutex_unlock(). No futex() syscall will be involved. >> >> Signed-off-by: Suanming Mou <suanmi...@nvidia.com> >> Acked-by: Ajit Khaparde <ajit.khapa...@broadcom.com> >> Acked-by: Ori Kam <or...@nvidia.com> >> Acked-by: Matan Azrad <ma...@nvidia.com> > Acked-by: Thomas Monjalon <tho...@monjalon.net>
Acked-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru>