[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