[PATCH 25.11 2/3] net/bnxt: fix PTP timestamp flags in scalar Rx

Mohammad Shuab Siddique mohammad-shuab.siddique at broadcom.com
Tue Aug 4 22:13:57 CEST 2026


From: Mohammad Shuab Siddique <mohammad-shuab.siddique at broadcom.com>

[ upstream commit feb485b62cd46cfb627b4de7576749e1e2080ed4 ]

Added a check so that if bp->ptp_all_rx_tstamp is true
- it is always set to true when set fwd ieee1588 is called via
bnxt_timesync_enable - the hardware must also report that the packet
is ptp. Also changed the code so that the path properly reports if
the packet has a timestamp.

Fixes: 925cd0705836 ("net/bnxt: update PTP support on Thor")
Cc: stable at dpdk.org

Signed-off-by: Keegan Freyhof <keegan.freyhof at broadcom.com>
Signed-off-by: Mohammad Shuab Siddique <mohammad-shuab.siddique at broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c  | 28 +++-------------------------
 drivers/net/bnxt/bnxt_rxr.c   | 14 ++++++++++----
 drivers/net/bnxt/bnxt_stats.c |  3 +++
 3 files changed, 16 insertions(+), 29 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 91c99cbc89..8dd1930bb1 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -4526,6 +4526,9 @@ static int bnxt_hwrm_set_tpa(struct bnxt *bp)
 	bool tpa_flags = 0;
 	int rc, i;
 
+	if (!BNXT_SUPPORTS_TPA(bp))
+		return 0;
+
 	tpa_flags = (rx_offloads & RTE_ETH_RX_OFFLOAD_TCP_LRO) ?  true : false;
 	for (i = 0; i < bp->max_vnics; i++) {
 		struct bnxt_vnic_info *vnic = &bp->vnic_info[i];
@@ -5125,31 +5128,6 @@ int bnxt_hwrm_pf_evb_mode(struct bnxt *bp)
 	return rc;
 }
 
-static int bnxt_hwrm_set_tpa(struct bnxt *bp)
-{
-	struct rte_eth_conf *dev_conf = &bp->eth_dev->data->dev_conf;
-	uint64_t rx_offloads = dev_conf->rxmode.offloads;
-	bool tpa_flags = 0;
-	int rc, i;
-
-	if (!BNXT_SUPPORTS_TPA(bp))
-		return 0;
-
-	tpa_flags = (rx_offloads & RTE_ETH_RX_OFFLOAD_TCP_LRO) ?  true : false;
-	for (i = 0; i < bp->max_vnics; i++) {
-		struct bnxt_vnic_info *vnic = &bp->vnic_info[i];
-
-		if (vnic->fw_vnic_id == INVALID_HW_RING_ID)
-			continue;
-
-		rc = bnxt_hwrm_vnic_tpa_cfg(bp, vnic, tpa_flags);
-		if (rc)
-			return rc;
-	}
-	return 0;
-}
-
-
 int bnxt_hwrm_tunnel_dst_port_alloc(struct bnxt *bp, uint16_t port,
 				uint8_t tunnel_type)
 {
diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index 76f0201de4..9b47b370a6 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -1202,10 +1202,16 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,
 	mbuf->data_len = mbuf->pkt_len;
 	mbuf->port = rxq->port_id;
 
-	if (unlikely((rte_le_to_cpu_16(rxcmp->flags_type) &
-		      RX_PKT_CMPL_FLAGS_MASK) ==
-		      RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP) ||
-		      bp->ptp_all_rx_tstamp) {
+	if (unlikely((((rte_le_to_cpu_16(rxcmp->flags_type) &
+			RX_PKT_CMPL_FLAGS_MASK) ==
+			RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP) ||
+			((rte_le_to_cpu_16(rxcmp->flags_type) &
+			RX_PKT_CMPL_FLAGS_MASK) ==
+			RX_PKT_CMPL_FLAGS_ITYPE_PTP_WO_TIMESTAMP)) &&
+			bp->ptp_all_rx_tstamp) && bp->ieee_1588 &&
+			bp->ptp_cfg) {
+		mbuf->ol_flags |= RTE_MBUF_F_RX_IEEE1588_PTP |
+				  RTE_MBUF_F_RX_IEEE1588_TMST;
 		if (BNXT_CHIP_P5_P7(bp))
 			bnxt_get_rx_ts_p5_p7(rxq->bp, rxcmp1->reorder);
 		else
diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
index 7b96cf0df9..8132119734 100644
--- a/drivers/net/bnxt/bnxt_stats.c
+++ b/drivers/net/bnxt/bnxt_stats.c
@@ -690,6 +690,9 @@ static int bnxt_stats_get_ext(struct rte_eth_dev *eth_dev,
 		struct bnxt_cp_ring_info *cpr = txq->cp_ring;
 		struct bnxt_ring_stats_ext ring_stats = {0};
 
+		bnxt_stats->oerrors += rte_atomic_load_explicit(&txq->tx_mbuf_drop,
+							     rte_memory_order_relaxed);
+
 		if (!txq->tx_started)
 			continue;
 
-- 
2.47.3



More information about the stable mailing list