From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 44EC6A04AA; Tue, 8 Sep 2020 11:16:53 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 786081C132; Tue, 8 Sep 2020 11:15:54 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [67.231.154.164]) by dpdk.org (Postfix) with ESMTP id 5A05A1C11E for ; Tue, 8 Sep 2020 11:15:51 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.110.50.150]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id E5547200C3 for ; Tue, 8 Sep 2020 09:15:50 +0000 (UTC) Received: from us4-mdac16-30.at1.mdlocal (unknown [10.110.49.214]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 2E334800D6 for ; Tue, 8 Sep 2020 09:15:50 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.110.50.12]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 3109610010C for ; Tue, 8 Sep 2020 09:14:56 +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 EEB3040059 for ; Tue, 8 Sep 2020 09:14:55 +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; Tue, 8 Sep 2020 10:14:50 +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; Tue, 8 Sep 2020 10:14:49 +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 0889EnmU032444 for ; Tue, 8 Sep 2020 10:14:49 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id C487B1613A9 for ; Tue, 8 Sep 2020 10:14:49 +0100 (BST) From: Andrew Rybchenko To: Date: Tue, 8 Sep 2020 10:14:34 +0100 Message-ID: <1599556475-27820-15-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> References: <1599556475-27820-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25652.003 X-TM-AS-Result: No-12.951100-8.000000-10 X-TMASE-MatchedRID: 51SE6p2SBt+bX4K/DqV0NS2416nc3bQleouvej40T4gd0WOKRkwsh0Ac 6DyoS2rICNLuPteRDHcI+r1sul2OdnI/MxNRI7Uk66G2abPj6tjgXnxE81iyseMjEVIO/sdOdr6 6ANUOe/73OF0UjQGruresUpDYXvDYuVKcazUH+Z1C4WIP7GtYLFBijjE0XjY+OF0RIPSotdNT/4 0CMa1mSBkeVHs6jcMzJijtN0Yu2hFeFCVeyol8eRSceev8ZtpPMHi1Ydy2WEhHZg0gWH5yUbuKY ngtsWipqNfMRWfjbpalVflGDTl0k9vJMiGALwMaiuSat/QiCL99LQinZ4QefPcjNeVeWlqY+gtH j7OwNO0f/PIv6AGqLC8xrR8gzvMWsi2j+X+GYPYDrV+OTVs4TxzJZFa6wEQp X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--12.951100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25652.003 X-MDID: 1599556550-5PGtEfA5dMrM Subject: [dpdk-dev] [PATCH 13/14] net/sfc: use MCDI control structure as libefx ops 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" Now MCDI helpers interface is independent from network driver and may be moved into common driver. Signed-off-by: Andrew Rybchenko Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mcdi.c | 47 +++++++++++++++----------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/drivers/net/sfc/sfc_mcdi.c b/drivers/net/sfc/sfc_mcdi.c index fa9160f6d3..ff2bc14c5d 100644 --- a/drivers/net/sfc/sfc_mcdi.c +++ b/drivers/net/sfc/sfc_mcdi.c @@ -52,10 +52,8 @@ sfc_efx_mcdi_log(mcdi, SFC_EFX_LOG_LEVEL_MCDI, __VA_ARGS__) static void -sfc_efx_mcdi_timeout(struct sfc_adapter *sa) +sfc_efx_mcdi_timeout(struct sfc_efx_mcdi *mcdi) { - struct sfc_efx_mcdi *mcdi = &sa->mcdi; - sfc_efx_mcdi_warn(mcdi, "MC TIMEOUT"); mcdi->state = SFC_EFX_MCDI_DEAD; @@ -64,10 +62,8 @@ sfc_efx_mcdi_timeout(struct sfc_adapter *sa) } static inline boolean_t -sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) +sfc_efx_mcdi_proxy_event_available(struct sfc_efx_mcdi *mcdi) { - struct sfc_efx_mcdi *mcdi = &sa->mcdi; - mcdi->proxy_handle = 0; mcdi->proxy_result = ETIMEDOUT; mcdi->ops->mgmt_evq_poll(mcdi->ops_cookie); @@ -78,9 +74,8 @@ sfc_efx_mcdi_proxy_event_available(struct sfc_adapter *sa) } static void -sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) +sfc_efx_mcdi_poll(struct sfc_efx_mcdi *mcdi, boolean_t proxy) { - struct sfc_efx_mcdi *mcdi = &sa->mcdi; efx_nic_t *enp; unsigned int delay_total; unsigned int delay_us; @@ -93,8 +88,9 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) do { boolean_t poll_completed; - poll_completed = (proxy) ? sfc_efx_mcdi_proxy_event_available(sa) : - efx_mcdi_request_poll(enp); + poll_completed = (proxy) ? + sfc_efx_mcdi_proxy_event_available(mcdi) : + efx_mcdi_request_poll(enp); if (poll_completed) return; @@ -102,7 +98,7 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) if (!proxy) { aborted = efx_mcdi_request_abort(enp); SFC_ASSERT(aborted); - sfc_efx_mcdi_timeout(sa); + sfc_efx_mcdi_timeout(mcdi); } return; @@ -125,8 +121,7 @@ sfc_efx_mcdi_poll(struct sfc_adapter *sa, boolean_t proxy) static void sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; uint32_t proxy_handle; if (mcdi->state == SFC_EFX_MCDI_DEAD) { @@ -139,7 +134,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); - sfc_efx_mcdi_poll(sa, B_FALSE); + sfc_efx_mcdi_poll(mcdi, B_FALSE); if (efx_mcdi_get_proxy_handle(mcdi->nic, emrp, &proxy_handle) == 0) { /* @@ -148,7 +143,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * a non-zero proxy handle (should be the same as * the value obtained above) and operation status */ - sfc_efx_mcdi_poll(sa, B_TRUE); + sfc_efx_mcdi_poll(mcdi, B_TRUE); if ((mcdi->proxy_handle != 0) && (mcdi->proxy_handle != proxy_handle)) { @@ -160,7 +155,7 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) * request and poll for an ordinary MCDI response */ efx_mcdi_request_start(mcdi->nic, emrp, B_FALSE); - sfc_efx_mcdi_poll(sa, B_FALSE); + sfc_efx_mcdi_poll(mcdi, B_FALSE); } else { emrp->emr_rc = mcdi->proxy_result; sfc_efx_mcdi_err(mcdi, @@ -175,10 +170,9 @@ sfc_efx_mcdi_execute(void *arg, efx_mcdi_req_t *emrp) static void sfc_efx_mcdi_ev_cpl(void *arg) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi __rte_unused; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; - mcdi = &sa->mcdi; + RTE_SET_USED(mcdi); SFC_ASSERT(mcdi->state == SFC_EFX_MCDI_INITIALIZED); /* MCDI is polled, completions are not expected */ @@ -188,8 +182,7 @@ sfc_efx_mcdi_ev_cpl(void *arg) static void sfc_efx_mcdi_exception(void *arg, efx_mcdi_exception_t eme) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; sfc_efx_mcdi_warn(mcdi, "MC %s", (eme == EFX_MCDI_EXCEPTION_MC_REBOOT) ? "REBOOT" : @@ -234,8 +227,7 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, void *header, size_t header_size, void *data, size_t data_size) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; char buffer[SFC_MCDI_LOG_BUF_SIZE]; size_t pfxsize; size_t start; @@ -269,15 +261,14 @@ sfc_efx_mcdi_logger(void *arg, efx_log_msg_t type, static void sfc_efx_mcdi_ev_proxy_response(void *arg, uint32_t handle, efx_rc_t result) { - struct sfc_adapter *sa = (struct sfc_adapter *)arg; - struct sfc_efx_mcdi *mcdi = &sa->mcdi; + struct sfc_efx_mcdi *mcdi = (struct sfc_efx_mcdi *)arg; mcdi->proxy_handle = handle; mcdi->proxy_result = result; } static int -sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, +sfc_efx_mcdi_init(struct sfc_efx_mcdi *mcdi, uint32_t logtype, const char *log_prefix, efx_nic_t *nic, const struct sfc_efx_mcdi_ops *ops, void *ops_cookie) { @@ -308,7 +299,7 @@ sfc_efx_mcdi_init(struct sfc_adapter *sa, struct sfc_efx_mcdi *mcdi, goto fail_dma_alloc; emtp = &mcdi->transport; - emtp->emt_context = sa; + emtp->emt_context = mcdi; emtp->emt_dma_mem = &mcdi->mem; emtp->emt_execute = sfc_efx_mcdi_execute; emtp->emt_ev_cpl = sfc_efx_mcdi_ev_cpl; @@ -409,7 +400,7 @@ sfc_mcdi_init(struct sfc_adapter *sa) SFC_LOGTYPE_MCDI_STR, RTE_LOG_NOTICE); - return sfc_efx_mcdi_init(sa, &sa->mcdi, logtype, + return sfc_efx_mcdi_init(&sa->mcdi, logtype, sa->priv.shared->log_prefix, sa->nic, &sfc_mcdi_ops, sa); } -- 2.17.1