[PATCH 04/10] net/bnxt: scalar rx path disregarded rxcmp flags for setting ptp mbuf flag setting ptp mbuf flag
Mohammad Shuab Siddique
mohammad-shuab.siddique at broadcom.com
Thu Jun 4 05:18:45 CEST 2026
From: Mohammad Shuab Siddique <mohammad-shuab.siddique at broadcom.com>
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_ethdev.c | 2 --
drivers/net/bnxt/bnxt_hwrm.c | 28 +++-------------------------
drivers/net/bnxt/bnxt_rxr.c | 13 ++++++++-----
drivers/net/bnxt/bnxt_stats.c | 3 +++
drivers/net/bnxt/bnxt_txr.c | 34 ++++++++++++++++++++++++++++++----
4 files changed, 14 insertions(+), 32 deletions(-)
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 5bd51de3cd..791a89f040 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1493,8 +1493,6 @@ bnxt_receive_function(struct rte_eth_dev *eth_dev)
bp->flags |= BNXT_FLAG_RX_VECTOR_PKT_MODE;
if (bnxt_compressed_rx_cqe_mode_enabled(bp))
return bnxt_crx_pkts_vec_avx2;
- if (BNXT_TRUFLOW_EN(bp) && bnxt_ulp_explicit_mark_enabled(bp))
- goto use_scalar_rx;
if (BNXT_CHIP_P7(bp))
return bnxt_recv_pkts_vec_avx2_v3;
else
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 590543ad6a..4a5b83d29c 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -4347,6 +4347,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];
@@ -4946,31 +4949,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 ab2175d21a..046276f931 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -1203,11 +1203,14 @@ 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) && bp->ieee_1588 &&
- bp->ptp_cfg) {
+ 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))
diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c
index 49367588e4..ba858710a5 100644
--- a/drivers/net/bnxt/bnxt_stats.c
+++ b/drivers/net/bnxt/bnxt_stats.c
@@ -695,6 +695,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;
More information about the dev
mailing list