From patchwork Thu Sep 17 06:34:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 77995 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D5AAEA04B6; Thu, 17 Sep 2020 08:36:48 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 428641D578; Thu, 17 Sep 2020 08:35:38 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 47C271D543 for ; Thu, 17 Sep 2020 08:35:22 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B64D86006A for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from us4-mdac16-70.ut7.mdlocal (unknown [10.7.64.189]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B5AFC8009B for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.30]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 39AB8280053 for ; Thu, 17 Sep 2020 06:35:21 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id E07BC10005E for ; Thu, 17 Sep 2020 06:35:20 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 17 Sep 2020 07:35:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 08H6ZCb1002503 for ; Thu, 17 Sep 2020 07:35:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 6A8E61613AB for ; Thu, 17 Sep 2020 07:35:12 +0100 (BST) From: Andrew Rybchenko To: Date: Thu, 17 Sep 2020 07:34:37 +0100 Message-ID: <1600324483-23153-12-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> <1600324483-23153-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25670.003 X-TM-AS-Result: No-11.388300-8.000000-10 X-TMASE-MatchedRID: h7jIbmvFs4VTattrga832C2416nc3bQleouvej40T4gd0WOKRkwsh3Io zGa69omdrdoLblq9S5qas0rFUiAJUTtLCZHM0q2+LTHwnYOikQ3YuVu0X/rOkC4mS5ZcbgykHdp aAe/6URkgIEX6WzwOdHy8wrTvkWOE1u/Sx2voIm8zL6MySEJ0VhpxmKWTfsQI5ucVak1fUMG7im J4LbFoqRfb/g6/AVAtG+8CgnzENLtC4oGQR0QDTH9EwA0OW8QlE3EgF0+MVuCfJbh3pMo2kKPFj JEFr+olwXCBO/GKkVqOhzOa6g8KrZXab56lxlwcDwkFyw4VU4CgCbvlZFwA6dS5yfl5JZAhJjZF ot2mO34= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--11.388300-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25670.003 X-MDID: 1600324521-HME9egqgf2yM Subject: [dpdk-dev] [PATCH v2 11/17] net/sfc: avoid usage of NIC pointer from adapter context X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Prepare to avoid usage of the adapter context in common MCDI helpers. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 19 +++++++++++-------- drivers/net/sfc/sfc_mcdi.h | 1 + 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index 5f6ad0a4aa..8f446e8bc8 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -75,6 +75,7 @@ sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) static void sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) { + struct sfc_efx_mcdi *mcdi = &sa->mcdi; efx_nic_t *enp; unsigned int delay_total; unsigned int delay_us; @@ -82,7 +83,7 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) delay_total = 0; delay_us = SFC_EFX_MCDI_POLL_INTERVAL_MIN_US; - enp = sa->nic; + enp = mcdi->nic; do { boolean_t poll_completed; @@ -127,10 +128,10 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); - efx_mcdi_request_start(sa->nic, emrp, B_FALSE); + efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); sfc_efx_mcdi_poll(sa, B_FALSE); - if (efx_mcdi_get_proxy_handle(sa->nic, emrp, &proxy_handle) == 0) { + if (efx_mcdi_get_proxy_handle(mcdi->nic, emrp, &proxy_handle) == 0) { /* * Authorization is required for the MCDI request; * wait for an MCDI proxy response event to bring @@ -148,7 +149,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * Authorization succeeded; re-issue the original * request and poll for an ordinary MCDI response */ - efx_mcdi_request_start(sa->nic, emrp, B_FALSE); + efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); sfc_efx_mcdi_poll(sa, B_FALSE); } else { emrp->emr_rc = mcdi->proxy_result; @@ -267,7 +268,7 @@ sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) static int sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, - uint32_t logtype, const char *log_prefix) + uint32_t logtype, const char *log_prefix, efx_nic_t *nic) { size_t max_msg_size; efx_mcdi_transport_t *emtp; @@ -277,6 +278,8 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, rte_spinlock_init(&mcdi->lock); + mcdi->nic = nic; + mcdi->state = SFC_EFX_MCDI_INITIALIZED; mcdi->logtype = logtype; @@ -298,7 +301,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, emtp->emt_ev_proxy_response = sfc_efx_mcdi_ev_proxy_response; sfc_efx_mcdi_info(mcdi, "init MCDI"); - rc = efx_mcdi_init(sa->nic, emtp); + rc = efx_mcdi_init(mcdi->nic, emtp); if (rc != 0) goto fail_mcdi_init; @@ -326,7 +329,7 @@ sfc_efx_mcdi_fini(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi) mcdi->state = SFC_EFX_MCDI_UNINITIALIZED; sfc_efx_mcdi_info(mcdi, "fini MCDI"); - efx_mcdi_fini(sa->nic); + efx_mcdi_fini(mcdi->nic); memset(emtp, 0, sizeof(*emtp)); rte_spinlock_unlock(&mcdi->lock); @@ -346,7 +349,7 @@ sfc_mcdi_init(struct sfc_adapter *sa) RTE_LOG_NOTICE); return sfc_efx_mcdi_init(sa, &sa->mcdi, logtype, - sa->priv.shared->log_prefix); + sa->priv.shared->log_prefix, sa->nic); } void diff --git a/drivers/net/sfc/sfc_mcdi.h b/drivers/net/sfc/sfc_mcdi.h index 0194825bfa..e2105364ad 100644 --- a/drivers/net/sfc/sfc_mcdi.h +++ b/drivers/net/sfc/sfc_mcdi.h @@ -33,6 +33,7 @@ enum sfc_efx_mcdi_state { struct sfc_efx_mcdi { rte_spinlock_t lock; + efx_nic_t *nic; efsys_mem_t mem; enum sfc_efx_mcdi_state state; efx_mcdi_transport_t transport;