[PATCH v3 4/6] common/idpf: add rss_offload hash in singleq rx

Mingxia Liu mingxia.liu at intel.com
Wed Jan 18 08:14:38 CET 2023


This patch add rss valid flag and hash value parsing of rx descriptor.

Signed-off-by: Mingxia Liu <mingxia.liu at intel.com>
---
 drivers/common/idpf/idpf_common_rxtx.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/common/idpf/idpf_common_rxtx.c b/drivers/common/idpf/idpf_common_rxtx.c
index 9dbf0f4764..0ebb390842 100644
--- a/drivers/common/idpf/idpf_common_rxtx.c
+++ b/drivers/common/idpf/idpf_common_rxtx.c
@@ -1030,6 +1030,20 @@ idpf_update_rx_tail(struct idpf_rx_queue *rxq, uint16_t nb_hold,
 	rxq->nb_rx_hold = nb_hold;
 }
 
+static inline void
+idpf_singleq_rx_rss_offload(struct rte_mbuf *mb,
+			    volatile struct virtchnl2_rx_flex_desc_nic *rx_desc,
+			    uint64_t *pkt_flags)
+{
+	uint16_t rx_status0 = rte_le_to_cpu_16(rx_desc->status_error0);
+
+	if (rx_status0 & RTE_BIT32(VIRTCHNL2_RX_FLEX_DESC_STATUS0_RSS_VALID_S)) {
+		*pkt_flags |= RTE_MBUF_F_RX_RSS_HASH;
+		mb->hash.rss = rte_le_to_cpu_32(rx_desc->rss_hash);
+	}
+
+}
+
 uint16_t
 idpf_singleq_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 		       uint16_t nb_pkts)
@@ -1118,6 +1132,7 @@ idpf_singleq_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 		rxm->port = rxq->port_id;
 		rxm->ol_flags = 0;
 		pkt_flags = idpf_rxd_to_pkt_flags(rx_status0);
+		idpf_singleq_rx_rss_offload(rxm, &rxd.flex_nic_wb, &pkt_flags);
 		rxm->packet_type =
 			ptype_tbl[(uint8_t)(rte_cpu_to_le_16(rxd.flex_nic_wb.ptype_flex_flags0) &
 					    VIRTCHNL2_RX_FLEX_DESC_PTYPE_M)];
@@ -1248,6 +1263,7 @@ idpf_singleq_recv_scatter_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 		first_seg->port = rxq->port_id;
 		first_seg->ol_flags = 0;
 		pkt_flags = idpf_rxd_to_pkt_flags(rx_status0);
+		idpf_singleq_rx_rss_offload(first_seg, &rxd.flex_nic_wb, &pkt_flags);
 		first_seg->packet_type =
 			ptype_tbl[(uint8_t)(rte_cpu_to_le_16(rxd.flex_nic_wb.ptype_flex_flags0) &
 				VIRTCHNL2_RX_FLEX_DESC_PTYPE_M)];
-- 
2.25.1



More information about the dev mailing list