From: Mohammad Shuab Siddique <[email protected]>

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: [email protected]
Signed-off-by: Keegan Freyhof <[email protected]>
Signed-off-by: Mohammad Shuab Siddique <[email protected]>
---
 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;
 

Reply via email to