The data endian of NFD3 Tx descriptor should be little, and the related logic also should modify.
Fixes: 3745dd9dd86f ("net/nfp: adjust coding style for NFD3") Cc: sta...@dpdk.org Signed-off-by: Chaoyong He <chaoyong...@corigine.com> Reviewed-by: Long Wu <long...@corigine.com> Reviewed-by: Peng Zhang <peng.zh...@corigine.com> --- drivers/net/nfp/flower/nfp_flower_ctrl.c | 4 ++-- drivers/net/nfp/nfd3/nfp_nfd3.h | 14 +++++++------- drivers/net/nfp/nfd3/nfp_nfd3_dp.c | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index 23d1b770d8..6ac2caf367 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -194,10 +194,10 @@ nfp_flower_ctrl_vnic_nfd3_xmit(struct nfp_app_fw_flower *app_fw_flower, *lmbuf = mbuf; dma_addr = rte_mbuf_data_iova(mbuf); - txds->data_len = mbuf->pkt_len; + txds->data_len = rte_cpu_to_le_16(mbuf->pkt_len); txds->dma_len = txds->data_len; txds->dma_addr_hi = (dma_addr >> 32) & 0xff; - txds->dma_addr_lo = (dma_addr & 0xffffffff); + txds->dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff); txds->offset_eop = FLOWER_PKT_DATA_OFFSET | NFD3_DESC_TX_EOP; txq->wr_p++; diff --git a/drivers/net/nfp/nfd3/nfp_nfd3.h b/drivers/net/nfp/nfd3/nfp_nfd3.h index 96ea23b3df..dc24f4fa1d 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3.h +++ b/drivers/net/nfp/nfd3/nfp_nfd3.h @@ -17,13 +17,13 @@ struct nfp_net_nfd3_tx_desc { union { struct __rte_packed_begin { - uint8_t dma_addr_hi; /**< High bits of host buf address */ - uint16_t dma_len; /**< Length to DMA for this desc */ + uint8_t dma_addr_hi; /**< High bits of host buf address */ + rte_le16_t dma_len; /**< Length to DMA for this desc */ /** Offset in buf where pkt starts + highest bit is eop flag */ uint8_t offset_eop; - uint32_t dma_addr_lo; /**< Low 32bit of host buf addr */ + rte_le32_t dma_addr_lo; /**< Low 32bit of host buf addr */ - uint16_t mss; /**< MSS to be used for LSO */ + rte_le16_t mss; /**< MSS to be used for LSO */ uint8_t lso_hdrlen; /**< LSO, where the data starts */ uint8_t flags; /**< TX Flags, see @NFD3_DESC_TX_* */ @@ -32,11 +32,11 @@ struct nfp_net_nfd3_tx_desc { uint8_t l3_offset; /**< L3 header offset */ uint8_t l4_offset; /**< L4 header offset */ }; - uint16_t vlan; /**< VLAN tag to add if indicated */ + rte_le16_t vlan; /**< VLAN tag to add if indicated */ }; - uint16_t data_len; /**< Length of frame + meta data */ + rte_le16_t data_len; /**< Length of frame + meta data */ } __rte_packed_end; - uint32_t vals[4]; + rte_le32_t vals[4]; }; }; diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c index 3ffcbb2576..6466a5a4fb 100644 --- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c +++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c @@ -139,7 +139,7 @@ nfp_net_nfd3_tx_vlan(struct nfp_net_txq *txq, if ((mb->ol_flags & RTE_MBUF_F_TX_VLAN) != 0) { txd->flags |= NFD3_DESC_TX_VLAN; - txd->vlan = mb->vlan_tci; + txd->vlan = rte_cpu_to_le_16(mb->vlan_tci); } } @@ -300,7 +300,7 @@ nfp_net_nfd3_xmit_pkts_common(void *tx_queue, * Checksum and VLAN flags just in the first descriptor for a * multisegment packet, but TSO info needs to be in all of them. */ - txd.data_len = pkt->pkt_len; + txd.data_len = rte_cpu_to_le_16((uint16_t)pkt->pkt_len); nfp_net_nfd3_tx_tso(txq, &txd, pkt); nfp_net_nfd3_tx_cksum(txq, &txd, pkt); nfp_net_nfd3_tx_vlan(txq, &txd, pkt); @@ -330,10 +330,10 @@ nfp_net_nfd3_xmit_pkts_common(void *tx_queue, dma_addr = rte_mbuf_data_iova(pkt); /* Filling descriptors fields */ - txds->dma_len = dma_size; + txds->dma_len = rte_cpu_to_le_16(dma_size); txds->data_len = txd.data_len; txds->dma_addr_hi = (dma_addr >> 32) & 0xff; - txds->dma_addr_lo = (dma_addr & 0xffffffff); + txds->dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff); free_descs--; txq->wr_p++; -- 2.43.5