Adapter lock is held when mempool for MAE counter packets is populated. Follow up patch will add a callback on mempool creation which requires to take lock as well. However, the callback will be called for other mempools as well when adapter lock is not held.
Signed-off-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru> Reviewed-by: Ivan Malov <ivan.ma...@oktetlabs.ru> --- drivers/net/sfc/sfc.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index fee1738d1d..f292f9f41b 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -217,7 +217,7 @@ struct sfc_adapter { * and add device level lock. Adapter control operations which * change its state should acquire the lock. */ - rte_spinlock_t lock; + rte_spinlock_recursive_t lock; enum sfc_ethdev_state state; struct rte_eth_dev *eth_dev; struct rte_kvargs *kvargs; @@ -331,31 +331,31 @@ sfc_sa2shared(struct sfc_adapter *sa) static inline void sfc_adapter_lock_init(struct sfc_adapter *sa) { - rte_spinlock_init(&sa->lock); + rte_spinlock_recursive_init(&sa->lock); } static inline int sfc_adapter_is_locked(struct sfc_adapter *sa) { - return rte_spinlock_is_locked(&sa->lock); + return rte_spinlock_is_locked(&sa->lock.sl); } static inline void sfc_adapter_lock(struct sfc_adapter *sa) { - rte_spinlock_lock(&sa->lock); + rte_spinlock_recursive_lock(&sa->lock); } static inline int sfc_adapter_trylock(struct sfc_adapter *sa) { - return rte_spinlock_trylock(&sa->lock); + return rte_spinlock_recursive_trylock(&sa->lock); } static inline void sfc_adapter_unlock(struct sfc_adapter *sa) { - rte_spinlock_unlock(&sa->lock); + rte_spinlock_recursive_unlock(&sa->lock); } static inline void -- 2.30.2