From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 369D046BAE for ; Fri, 18 Jul 2025 21:38:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2F75740E30; Fri, 18 Jul 2025 21:38:46 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 77ED240E30 for ; Fri, 18 Jul 2025 21:38:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1752867525; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=O8ibU1+qAbYjWCP8Ku/fEkyoI26h+MO2wZlPpi8+XBs=; b=CsNUVeXIdzbqdoF1zxMwgefK0L+M9xNCW3hjmUpz3lGZpwh4PS9BBiaxkTG6CIA+jIeLeS 6ZyF7h/c/CJasWTOEWqaDcJPqVOO3HJS6/CXRUzx0C79rNIOndy1WZCFaM7WpjSlCQ8JZb iqmdGTctV9RGee3jbmcdhMy9aNsVm14= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-166-bIUPDT0NOxuz3OnQ5q36Og-1; Fri, 18 Jul 2025 15:38:41 -0400 X-MC-Unique: bIUPDT0NOxuz3OnQ5q36Og-1 X-Mimecast-MFC-AGG-ID: bIUPDT0NOxuz3OnQ5q36Og_1752867520 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id BB0971800368; Fri, 18 Jul 2025 19:38:40 +0000 (UTC) Received: from rh.redhat.com (unknown [10.44.32.40]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DD49418003FC; Fri, 18 Jul 2025 19:38:38 +0000 (UTC) From: Kevin Traynor To: Chaoyong He Cc: Long Wu , Peng Zhang , dpdk stable Subject: patch 'net/nfp: standardize Rx descriptor endianness' has been queued to stable release 24.11.3 Date: Fri, 18 Jul 2025 20:31:41 +0100 Message-ID: <20250718193247.1008129-167-ktraynor@redhat.com> In-Reply-To: <20250718193247.1008129-1-ktraynor@redhat.com> References: <20250718193247.1008129-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: sC07hkINJjkIY2K5O7N7Y9kY7cvbK0hVFUeNQBibJ60_1752867520 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 24.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/23/25. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/6933653df808e357efa9caa5b957de940ea4bb58 Thanks. Kevin --- >From 6933653df808e357efa9caa5b957de940ea4bb58 Mon Sep 17 00:00:00 2001 From: Chaoyong He Date: Tue, 15 Apr 2025 10:54:51 +0800 Subject: [PATCH] net/nfp: standardize Rx descriptor endianness [ upstream commit 22252c56bfa2085072d25e0f741111eb0dfa81de ] The data endian of Rx descriptor should be little endian, and the related logic also should modify. Fixes: 3745dd9dd86f ("net/nfp: adjust coding style for NFD3") Signed-off-by: Chaoyong He Reviewed-by: Long Wu Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower_ctrl.c | 10 ++++--- drivers/net/nfp/nfp_net_meta.c | 8 ++++-- drivers/net/nfp/nfp_rxtx.c | 36 ++++++++++++++---------- drivers/net/nfp/nfp_rxtx.h | 16 +++++------ drivers/net/nfp/nfp_rxtx_vec_avx2.c | 6 ++-- 5 files changed, 45 insertions(+), 31 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index 21bf26b738..23d1b770d8 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -23,4 +23,5 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue, uint16_t nb_pkts) { + uint16_t data_len; uint64_t dma_addr; uint16_t avail = 0; @@ -79,7 +80,8 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue, mb = rxb->mbuf; rxb->mbuf = new_mb; + data_len = rte_le_to_cpu_16(rxds->rxd.data_len); /* Size of this segment */ - mb->data_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds); + mb->data_len = data_len - NFP_DESC_META_LEN(rxds); /* Size of the whole packet. We just support 1 segment */ mb->pkt_len = mb->data_len; @@ -112,8 +114,8 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue, rxds->vals[0] = 0; rxds->vals[1] = 0; - dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb)); + dma_addr = rte_mbuf_data_iova_default(new_mb); rxds->fld.dd = 0; - rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff; - rxds->fld.dma_addr_lo = dma_addr & 0xffffffff; + rxds->fld.dma_addr_hi = rte_cpu_to_le_16((dma_addr >> 32) & 0xffff); + rxds->fld.dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff); nb_hold++; diff --git a/drivers/net/nfp/nfp_net_meta.c b/drivers/net/nfp/nfp_net_meta.c index 70169eba6b..6dfe7f0eb2 100644 --- a/drivers/net/nfp/nfp_net_meta.c +++ b/drivers/net/nfp/nfp_net_meta.c @@ -112,4 +112,5 @@ nfp_net_meta_parse_vlan(const struct nfp_net_meta_parsed *meta, struct rte_mbuf *mb) { + uint16_t flags; uint32_t ctrl = rxq->hw->super.ctrl; @@ -132,5 +133,6 @@ nfp_net_meta_parse_vlan(const struct nfp_net_meta_parsed *meta, } } else if ((ctrl & NFP_NET_CFG_CTRL_RXVLAN) != 0) { - if ((rxd->rxd.flags & PCIE_DESC_RX_VLAN) != 0) { + flags = rte_le_to_cpu_16(rxd->rxd.flags); + if ((flags & PCIE_DESC_RX_VLAN) != 0) { mb->vlan_tci = rte_cpu_to_le_32(rxd->rxd.offload_info); mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED; @@ -235,8 +237,10 @@ nfp_net_meta_parse(struct nfp_net_rx_desc *rxds, struct nfp_net_meta_parsed *meta) { + uint16_t flags; uint8_t *meta_base; rte_be32_t meta_header; meta->flags = 0; + flags = rte_le_to_cpu_16(rxds->rxd.flags); if (unlikely(NFP_DESC_META_LEN(rxds) == 0)) @@ -259,5 +263,5 @@ nfp_net_meta_parse(struct nfp_net_rx_desc *rxds, break; case NFP_NET_METAFORMAT_SINGLE: - if ((rxds->rxd.flags & PCIE_DESC_RX_RSS) != 0) { + if ((flags & PCIE_DESC_RX_RSS) != 0) { nfp_net_meta_parse_single(meta_base, meta_header, meta); nfp_net_meta_parse_hash(meta, rxq, mb); diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index 35fb637b21..5a43fa26a8 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -122,4 +122,5 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, struct rte_mbuf *mb) { + uint16_t flags; struct nfp_net_hw *hw = rxq->hw; @@ -127,7 +128,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, return; + flags = rte_le_to_cpu_16(rxd->rxd.flags); + /* If IPv4 and IP checksum error, fail */ - if (unlikely((rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM) != 0 && - (rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM_OK) == 0)) + if (unlikely((flags & PCIE_DESC_RX_IP4_CSUM) != 0 && + (flags & PCIE_DESC_RX_IP4_CSUM_OK) == 0)) mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD; else @@ -135,9 +138,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, /* If neither UDP nor TCP return */ - if ((rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) == 0 && - (rxd->rxd.flags & PCIE_DESC_RX_UDP_CSUM) == 0) + if ((flags & PCIE_DESC_RX_TCP_CSUM) == 0 && + (flags & PCIE_DESC_RX_UDP_CSUM) == 0) return; - if (likely(rxd->rxd.flags & PCIE_DESC_RX_L4_CSUM_OK) != 0) + if (likely(flags & PCIE_DESC_RX_L4_CSUM_OK) != 0) mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD; else @@ -165,10 +168,10 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq) } - dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(mbuf)); + dma_addr = rte_mbuf_data_iova_default(mbuf); rxd = &rxq->rxds[i]; rxd->fld.dd = 0; - rxd->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff; - rxd->fld.dma_addr_lo = dma_addr & 0xffffffff; + rxd->fld.dma_addr_hi = rte_cpu_to_le_16((dma_addr >> 32) & 0xffff); + rxd->fld.dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff); rxe[i].mbuf = mbuf; @@ -356,11 +359,12 @@ nfp_net_parse_ptype(struct nfp_net_rxq *rxq, struct rte_mbuf *mb) { + uint16_t rxd_ptype; struct nfp_net_hw *hw = rxq->hw; struct nfp_ptype_parsed nfp_ptype; - uint16_t rxd_ptype = rxds->rxd.offload_info; if ((hw->super.ctrl_ext & NFP_NET_CFG_CTRL_PKT_TYPE) == 0) return; + rxd_ptype = rte_le_to_cpu_16(rxds->rxd.offload_info); if (rxd_ptype == 0 || (rxds->rxd.flags & PCIE_DESC_RX_VLAN) != 0) return; @@ -410,4 +414,5 @@ nfp_net_recv_pkts(void *rx_queue, uint16_t nb_pkts) { + uint16_t data_len; uint64_t dma_addr; uint16_t avail = 0; @@ -470,12 +475,13 @@ nfp_net_recv_pkts(void *rx_queue, mb = rxb->mbuf; rxb->mbuf = new_mb; + data_len = rte_le_to_cpu_16(rxds->rxd.data_len); PMD_RX_LOG(DEBUG, "Packet len: %u, mbuf_size: %u.", - rxds->rxd.data_len, rxq->mbuf_size); + data_len, rxq->mbuf_size); /* Size of this segment */ - mb->data_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds); + mb->data_len = data_len - NFP_DESC_META_LEN(rxds); /* Size of the whole packet. We just support 1 segment */ - mb->pkt_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds); + mb->pkt_len = data_len - NFP_DESC_META_LEN(rxds); if (unlikely((mb->data_len + hw->rx_offset) > rxq->mbuf_size)) { @@ -512,8 +518,8 @@ nfp_net_recv_pkts(void *rx_queue, rxds->vals[0] = 0; rxds->vals[1] = 0; - dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb)); + dma_addr = rte_mbuf_data_iova_default(new_mb); rxds->fld.dd = 0; - rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff; - rxds->fld.dma_addr_lo = dma_addr & 0xffffffff; + rxds->fld.dma_addr_hi = rte_cpu_to_le_16((dma_addr >> 32) & 0xffff); + rxds->fld.dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff); nb_hold++; diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h index c717d97003..def2d72f10 100644 --- a/drivers/net/nfp/nfp_rxtx.h +++ b/drivers/net/nfp/nfp_rxtx.h @@ -119,22 +119,22 @@ struct nfp_net_rx_desc { /** Freelist descriptor. */ struct { - uint16_t dma_addr_hi; /**< High bits of buffer address. */ - uint8_t spare; /**< Reserved, must be zero. */ - uint8_t dd; /**< Whether descriptor available. */ - uint32_t dma_addr_lo; /**< Low bits of buffer address. */ + rte_le16_t dma_addr_hi; /**< High bits of buffer address. */ + uint8_t spare; /**< Reserved, must be zero. */ + uint8_t dd; /**< Whether descriptor available. */ + rte_le32_t dma_addr_lo; /**< Low bits of buffer address. */ } __rte_packed fld; /** RX descriptor. */ struct { - uint16_t data_len; /**< Length of frame + metadata. */ + rte_le16_t data_len; /**< Length of frame + metadata. */ uint8_t reserved; /**< Reserved, must be zero. */ uint8_t meta_len_dd; /**< Length of metadata + done flag. */ - uint16_t flags; /**< RX flags. */ - uint16_t offload_info; /**< Offloading info. */ + rte_le16_t flags; /**< RX flags. */ + rte_le16_t offload_info; /**< Offloading info. */ } __rte_packed rxd; /** Reserved. */ - uint32_t vals[2]; + rte_le32_t vals[2]; }; }; diff --git a/drivers/net/nfp/nfp_rxtx_vec_avx2.c b/drivers/net/nfp/nfp_rxtx_vec_avx2.c index 66d003f64d..faf3d167d9 100644 --- a/drivers/net/nfp/nfp_rxtx_vec_avx2.c +++ b/drivers/net/nfp/nfp_rxtx_vec_avx2.c @@ -93,10 +93,12 @@ nfp_vec_avx2_recv_set_rxpkt1(struct nfp_net_rxq *rxq, struct rte_mbuf *rx_pkt) { + uint16_t data_len; struct nfp_net_hw *hw = rxq->hw; struct nfp_net_meta_parsed meta; - rx_pkt->data_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds); + data_len = rte_le_to_cpu_16(rxds->rxd.data_len); + rx_pkt->data_len = data_len - NFP_DESC_META_LEN(rxds); /* Size of the whole packet. We just support 1 segment */ - rx_pkt->pkt_len = rxds->rxd.data_len - NFP_DESC_META_LEN(rxds); + rx_pkt->pkt_len = data_len - NFP_DESC_META_LEN(rxds); /* Filling the received mbuf with packet info */ -- 2.50.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-07-18 20:29:16.820732353 +0100 +++ 0167-net-nfp-standardize-Rx-descriptor-endianness.patch 2025-07-18 20:29:11.177908088 +0100 @@ -1 +1 @@ -From 22252c56bfa2085072d25e0f741111eb0dfa81de Mon Sep 17 00:00:00 2001 +From 6933653df808e357efa9caa5b957de940ea4bb58 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 22252c56bfa2085072d25e0f741111eb0dfa81de ] + @@ -10 +11,0 @@ -Cc: stable@dpdk.org @@ -92 +93 @@ -index e0c1fb0987..c86bba9d87 100644 +index 35fb637b21..5a43fa26a8 100644 @@ -95 +96 @@ -@@ -123,4 +123,5 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, +@@ -122,4 +122,5 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, @@ -101 +102 @@ -@@ -128,7 +129,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, +@@ -127,7 +128,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, @@ -113 +114 @@ -@@ -136,9 +139,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, +@@ -135,9 +138,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, @@ -126 +127 @@ -@@ -166,10 +169,10 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq) +@@ -165,10 +168,10 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq) @@ -140 +141 @@ -@@ -357,11 +360,12 @@ nfp_net_parse_ptype(struct nfp_net_rxq *rxq, +@@ -356,11 +359,12 @@ nfp_net_parse_ptype(struct nfp_net_rxq *rxq, @@ -154 +155 @@ -@@ -411,4 +415,5 @@ nfp_net_recv_pkts(void *rx_queue, +@@ -410,4 +414,5 @@ nfp_net_recv_pkts(void *rx_queue, @@ -160 +161 @@ -@@ -471,12 +476,13 @@ nfp_net_recv_pkts(void *rx_queue, +@@ -470,12 +475,13 @@ nfp_net_recv_pkts(void *rx_queue, @@ -177 +178 @@ -@@ -513,8 +519,8 @@ nfp_net_recv_pkts(void *rx_queue, +@@ -512,8 +518,8 @@ nfp_net_recv_pkts(void *rx_queue, @@ -190 +191 @@ -index 4e0ed9da38..cbb6df201f 100644 +index c717d97003..def2d72f10 100644 @@ -195 +196 @@ - struct __rte_packed_begin { + struct { @@ -204 +205 @@ - } __rte_packed_end fld; + } __rte_packed fld; @@ -207 +208 @@ - struct __rte_packed_begin { + struct { @@ -217 +218 @@ - } __rte_packed_end rxd; + } __rte_packed rxd;