From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com [66.111.4.28]) by dpdk.org (Postfix) with ESMTP id C9B1423A for ; Tue, 21 Nov 2017 14:30:24 +0100 (CET) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 7FAAE207FE; Tue, 21 Nov 2017 08:30:24 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute1.internal (MEProxy); Tue, 21 Nov 2017 08:30:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fridaylinux.org; h=cc:date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=jRL1oGcdRB5At822T BfhOL0dxpV2Ru7iNRygWf9YjeI=; b=MoxjgK3wgg6il23JNFOxmKtv/2vTQ5rM3 gqVYZrnsKFq14119iQ5yhjTG9cAk7tbAwvuTjOOkYvFpM4VvrJ5E2mhAE37adgLy otZ4e6HX07PoSI12+wbE8sw+FtWXPAbr8SqfeKEu78ZlO3K1fMRcjoP1B7iLPe87 u0EOWuXpO5sgS3SlwFATzbjEEK9mcikFQ79hRi9U25wdQtFxHZCOVE7OANSV70pJ V5E8NVBZfgfZcIPWezlma68Ms9kWhJvKn25bhndUxPdIOijl7qwQETH0ga9c7per SFS85ASs3SjkL9rV5fZksnj1by5yra3ORpZXgN1oXzNnt2tpOFbwg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=jRL1oGcdRB5At822TBfhOL0dxpV2Ru7iNRygWf9YjeI=; b=HRV2ekD5 cQc2l30iRgeZ5RDwKV/a5tCTFn06/i10iGsFeK4D2dMDIkJm/a4OnFW0ohi9rLuM LeG/0+4la0sz0USEGxBY/+gtwgvUAD6hImAW0x8nGfQDSnPmsi5vdBruOMs1kaQo MWBAe2IBf6OWAq2QSc8vrDpro/uPJkspgHEgQNgxjws44xRvbNB4fkN99APBV05h 4DwKLY7FtZIoW/FvhpdPLfJrZ7pli04TeBg1RW58jjm3Ixz3ES5AeX//wHN3nCyj 7AUQfITx//aJUsUjBiyljh3WNUbduqdQMBQXpgYcmNd4rA71/HOY62K1b0GMv0Gi /Wr9ywOEoyh/uw== X-ME-Sender: Received: from localhost.localdomain (unknown [180.158.62.0]) by mail.messagingengine.com (Postfix) with ESMTPA id EADFA24810; Tue, 21 Nov 2017 08:30:21 -0500 (EST) From: Yuanhan Liu To: Jianbo Liu Cc: dpdk stable Date: Tue, 21 Nov 2017 21:18:35 +0800 Message-Id: <1511270333-31002-173-git-send-email-yliu@fridaylinux.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511270333-31002-1-git-send-email-yliu@fridaylinux.org> References: <1511270333-31002-1-git-send-email-yliu@fridaylinux.org> Subject: [dpdk-stable] patch 'net/i40e: fix Rx packets number for NEON' has been queued to stable release 17.08.1 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Nov 2017 13:30:25 -0000 Hi, FYI, your patch has been queued to stable release 17.08.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/24/17. So please shout if anyone has objections. Thanks. --yliu --- >>From d5029d5181f1d9a1e5b876feecd48fa7e04de704 Mon Sep 17 00:00:00 2001 From: Jianbo Liu Date: Tue, 31 Oct 2017 13:52:44 +0800 Subject: [PATCH] net/i40e: fix Rx packets number for NEON [ upstream commit 987990bbf8d95c72dfb952dd6060062d31247d9d ] Fix i40e stop receiving on ARM, as the statuses of RX descriptors are not consistent, which is caused by cacheable hugepages. Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM") Signed-off-by: Jianbo Liu --- drivers/net/i40e/i40e_rxtx_vec_neon.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c index 694e91f..9b26421 100644 --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c @@ -197,8 +197,7 @@ desc_to_olflags_v(struct i40e_rx_queue *rxq, uint64x2_t descs[4], } #define PKTLEN_SHIFT 10 - -#define I40E_VPMD_DESC_DD_MASK 0x0001000100010001ULL +#define I40E_UINT16_BIT (CHAR_BIT * sizeof(uint16_t)) static inline void desc_to_ptype_v(uint64x2_t descs[4], struct rte_mbuf **rx_pkts, @@ -230,7 +229,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts, struct i40e_rx_entry *sw_ring; uint16_t nb_pkts_recd; int pos; - uint64_t var; uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl; /* mask to shuffle from desc. to mbuf */ @@ -364,7 +362,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts, /* C.2 get 4 pkts staterr value */ staterr = vzipq_u16(sterr_tmp1.val[1], sterr_tmp2.val[1]).val[0]; - stat = vgetq_lane_u64(vreinterpretq_u64_u16(staterr), 0); desc_to_olflags_v(rxq, descs, &rx_pkts[pos]); @@ -429,6 +426,12 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts, rx_pkts[pos + 3]->next = NULL; } + staterr = vshlq_n_u16(staterr, I40E_UINT16_BIT - 1); + staterr = vreinterpretq_u16_s16( + vshrq_n_s16(vreinterpretq_s16_u16(staterr), + I40E_UINT16_BIT - 1)); + stat = ~vgetq_lane_u64(vreinterpretq_u64_u16(staterr), 0); + rte_prefetch_non_temporal(rxdp + RTE_I40E_DESCS_PER_LOOP); /* D.3 copy final 1,2 data to rx_pkts */ @@ -438,10 +441,12 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts, pkt_mb1); desc_to_ptype_v(descs, &rx_pkts[pos], ptype_tbl); /* C.4 calc avaialbe number of desc */ - var = __builtin_popcountll(stat & I40E_VPMD_DESC_DD_MASK); - nb_pkts_recd += var; - if (likely(var != RTE_I40E_DESCS_PER_LOOP)) + if (unlikely(stat == 0)) { + nb_pkts_recd += RTE_I40E_DESCS_PER_LOOP; + } else { + nb_pkts_recd += __builtin_ctzl(stat) / I40E_UINT16_BIT; break; + } } /* Update our internal tail pointer */ -- 2.7.4