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 add > locks around the functions for the critical section. > > 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 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. > > > Suanming Mou (2): > eal/windows: add pthread mutex lock > ethdev: make rte_flow API thread safe
Applied, thanks