From patchwork Wed Oct 3 09:03:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 45935 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8E6A3695D; Wed, 3 Oct 2018 11:04:37 +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 6768A5B36 for ; Wed, 3 Oct 2018 11:04:27 +0200 (CEST) X-Virus-Scanned: Proofpoint Essentials engine Received: from webmail.solarflare.com (webmail.solarflare.com [12.187.104.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us4.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTPS id 87D01B4005A for ; Wed, 3 Oct 2018 09:04:26 +0000 (UTC) Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 3 Oct 2018 02:04:23 -0700 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4 via Frontend Transport; Wed, 3 Oct 2018 02:04:22 -0700 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 w9394LeA032032 for ; Wed, 3 Oct 2018 10:04:21 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 7B1411626D2 for ; Wed, 3 Oct 2018 10:04:21 +0100 (BST) From: Andrew Rybchenko To: Date: Wed, 3 Oct 2018 10:03:52 +0100 Message-ID: <1538557436-16163-6-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1538557436-16163-1-git-send-email-arybchenko@solarflare.com> References: <1538557436-16163-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.5.1010-24132.005 X-TM-AS-Result: No-1.222100-4.000000-10 X-TMASE-MatchedRID: MIEO2Rh1L08MiTNbd7AZSUf49ONH0RaSTJDl9FKHbrkKogmGusPLbz4P 7FbZ2kORpSDKD02yMTf+phYguKO0FG+sGcdbpdKc+/7/+WpTWHqWHGENdT+VPzFidTBRWb28+P6 N2sVM57V4yPwAZd4vYQC4ndFqopOtNKAolv8loSyeAiCmPx4NwGmRqNBHmBve50w0YjYL1KUqtq 5d3cxkNbCZqrCf3SPfjhirdHjhayFDDyUGviHV3CkbiqDY8cEXh+H8hZDwgaDm7G6gYQogkh+xE nxrmdYvV7cuPSvruHoTxs6DrmDRW4JyZRvdFavVI6KkAL2A5kcMtYrw9BuTwqSmSPRgKSZMuowv JdIWQm5DDKa3G4nrLQ== X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--1.222100-4.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.5.1010-24132.005 X-MDID: 1538557467-Bn1TXgAcGA2w Subject: [dpdk-dev] [PATCH 5/9] net/sfc: decrease number of variables maintained on EF10 Rx 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" Signed-off-by: Andrew Rybchenko Reviewed-by: Ivan Malov --- drivers/net/sfc/sfc_ef10_rx.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/net/sfc/sfc_ef10_rx.c b/drivers/net/sfc/sfc_ef10_rx.c index 098610210..d4af07d44 100644 --- a/drivers/net/sfc/sfc_ef10_rx.c +++ b/drivers/net/sfc/sfc_ef10_rx.c @@ -186,7 +186,7 @@ sfc_ef10_rx_prefetch_next(struct sfc_ef10_rxq *rxq, unsigned int next_id) } } -static uint16_t +static struct rte_mbuf ** sfc_ef10_rx_prepared(struct sfc_ef10_rxq *rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { @@ -204,7 +204,7 @@ sfc_ef10_rx_prepared(struct sfc_ef10_rxq *rxq, struct rte_mbuf **rx_pkts, } while (completed != rxq->completed); } - return n_rx_pkts; + return rx_pkts; } static uint16_t @@ -219,9 +219,10 @@ sfc_ef10_rx_pseudo_hdr_get_hash(const uint8_t *pseudo_hdr) return rte_le_to_cpu_32(*(const uint32_t *)pseudo_hdr); } -static uint16_t +static struct rte_mbuf ** sfc_ef10_rx_process_event(struct sfc_ef10_rxq *rxq, efx_qword_t rx_ev, - struct rte_mbuf **rx_pkts, uint16_t nb_pkts) + struct rte_mbuf **rx_pkts, + struct rte_mbuf ** const rx_pkts_end) { const unsigned int ptr_mask = rxq->ptr_mask; unsigned int completed = rxq->completed; @@ -246,10 +247,10 @@ sfc_ef10_rx_process_event(struct sfc_ef10_rxq *rxq, efx_qword_t rx_ev, rxd = &rxq->sw_ring[completed++ & ptr_mask]; rte_mbuf_raw_free(rxd->mbuf); } - return 0; + return rx_pkts; } - n_rx_pkts = RTE_MIN(ready, nb_pkts); + n_rx_pkts = RTE_MIN(ready, rx_pkts_end - rx_pkts); rxq->prepared = ready - n_rx_pkts; rxq->completed += n_rx_pkts; @@ -329,7 +330,7 @@ sfc_ef10_rx_process_event(struct sfc_ef10_rxq *rxq, efx_qword_t rx_ev, SFC_ASSERT(m->next == NULL); } - return n_rx_pkts; + return rx_pkts; } static bool @@ -361,26 +362,25 @@ static uint16_t sfc_ef10_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { struct sfc_ef10_rxq *rxq = sfc_ef10_rxq_by_dp_rxq(rx_queue); + struct rte_mbuf ** const rx_pkts_end = &rx_pkts[nb_pkts]; unsigned int evq_old_read_ptr; - uint16_t n_rx_pkts; efx_qword_t rx_ev; - n_rx_pkts = sfc_ef10_rx_prepared(rxq, rx_pkts, nb_pkts); + rx_pkts = sfc_ef10_rx_prepared(rxq, rx_pkts, nb_pkts); if (unlikely(rxq->flags & (SFC_EF10_RXQ_NOT_RUNNING | SFC_EF10_RXQ_EXCEPTION))) goto done; evq_old_read_ptr = rxq->evq_read_ptr; - while (n_rx_pkts != nb_pkts && sfc_ef10_rx_get_event(rxq, &rx_ev)) { + while (rx_pkts != rx_pkts_end && sfc_ef10_rx_get_event(rxq, &rx_ev)) { /* * DROP_EVENT is an internal to the NIC, software should * never see it and, therefore, may ignore it. */ - n_rx_pkts += sfc_ef10_rx_process_event(rxq, rx_ev, - rx_pkts + n_rx_pkts, - nb_pkts - n_rx_pkts); + rx_pkts = sfc_ef10_rx_process_event(rxq, rx_ev, + rx_pkts, rx_pkts_end); } sfc_ef10_ev_qclear(rxq->evq_hw_ring, rxq->ptr_mask, evq_old_read_ptr, @@ -390,7 +390,7 @@ sfc_ef10_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) sfc_ef10_rx_qrefill(rxq); done: - return n_rx_pkts; + return nb_pkts - (rx_pkts_end - rx_pkts); } const uint32_t *