From patchwork Fri Nov 5 08:33:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 103855 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 66D38A0C61; Fri, 5 Nov 2021 09:34:32 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F90F4114F; Fri, 5 Nov 2021 09:34:18 +0100 (CET) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 8480B41156 for ; Fri, 5 Nov 2021 09:34:16 +0100 (CET) Received: by shelob.oktetlabs.ru (Postfix, from userid 122) id 4F7B57F710; Fri, 5 Nov 2021 11:34:16 +0300 (MSK) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shelob.oktetlabs.ru X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17]) by shelob.oktetlabs.ru (Postfix) with ESMTP id BA8447F70C; Fri, 5 Nov 2021 11:34:04 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru BA8447F70C Authentication-Results: shelob.oktetlabs.ru/BA8447F70C; dkim=none; dkim-atps=neutral From: Andrew Rybchenko To: dev@dpdk.org Cc: Ferruh Yigit , Ivan Malov Date: Fri, 5 Nov 2021 11:33:32 +0300 Message-Id: <20211105083333.1960017-4-andrew.rybchenko@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211105083333.1960017-1-andrew.rybchenko@oktetlabs.ru> References: <20211105083333.1960017-1-andrew.rybchenko@oktetlabs.ru> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 3/4] net/sfc: make adapter lock recursive X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 Reviewed-by: Ivan Malov --- 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