net/bnxt: fix per queue stats display in xstats
[dpdk.git] / drivers / net / bnxt / bnxt_hwrm.c
index 204a0dc..7f146d6 100644 (file)
@@ -2815,7 +2815,7 @@ int bnxt_hwrm_exec_fwd_resp(struct bnxt *bp, uint16_t target_id,
 }
 
 int bnxt_hwrm_ctx_qstats(struct bnxt *bp, uint32_t cid, int idx,
-                        struct rte_eth_stats *stats)
+                        struct rte_eth_stats *stats, uint8_t rx)
 {
        int rc = 0;
        struct hwrm_stat_ctx_query_input req = {.req_type = 0};
@@ -2829,23 +2829,25 @@ int bnxt_hwrm_ctx_qstats(struct bnxt *bp, uint32_t cid, int idx,
 
        HWRM_CHECK_RESULT();
 
-       stats->q_ipackets[idx] = rte_le_to_cpu_64(resp->rx_ucast_pkts);
-       stats->q_ipackets[idx] += rte_le_to_cpu_64(resp->rx_mcast_pkts);
-       stats->q_ipackets[idx] += rte_le_to_cpu_64(resp->rx_bcast_pkts);
-       stats->q_ibytes[idx] = rte_le_to_cpu_64(resp->rx_ucast_bytes);
-       stats->q_ibytes[idx] += rte_le_to_cpu_64(resp->rx_mcast_bytes);
-       stats->q_ibytes[idx] += rte_le_to_cpu_64(resp->rx_bcast_bytes);
-
-       stats->q_opackets[idx] = rte_le_to_cpu_64(resp->tx_ucast_pkts);
-       stats->q_opackets[idx] += rte_le_to_cpu_64(resp->tx_mcast_pkts);
-       stats->q_opackets[idx] += rte_le_to_cpu_64(resp->tx_bcast_pkts);
-       stats->q_obytes[idx] = rte_le_to_cpu_64(resp->tx_ucast_bytes);
-       stats->q_obytes[idx] += rte_le_to_cpu_64(resp->tx_mcast_bytes);
-       stats->q_obytes[idx] += rte_le_to_cpu_64(resp->tx_bcast_bytes);
-
-       stats->q_errors[idx] = rte_le_to_cpu_64(resp->rx_err_pkts);
-       stats->q_errors[idx] += rte_le_to_cpu_64(resp->tx_err_pkts);
-       stats->q_errors[idx] += rte_le_to_cpu_64(resp->rx_drop_pkts);
+       if (rx) {
+               stats->q_ipackets[idx] = rte_le_to_cpu_64(resp->rx_ucast_pkts);
+               stats->q_ipackets[idx] += rte_le_to_cpu_64(resp->rx_mcast_pkts);
+               stats->q_ipackets[idx] += rte_le_to_cpu_64(resp->rx_bcast_pkts);
+               stats->q_ibytes[idx] = rte_le_to_cpu_64(resp->rx_ucast_bytes);
+               stats->q_ibytes[idx] += rte_le_to_cpu_64(resp->rx_mcast_bytes);
+               stats->q_ibytes[idx] += rte_le_to_cpu_64(resp->rx_bcast_bytes);
+               stats->q_errors[idx] = rte_le_to_cpu_64(resp->rx_err_pkts);
+               stats->q_errors[idx] += rte_le_to_cpu_64(resp->rx_drop_pkts);
+       } else {
+               stats->q_opackets[idx] = rte_le_to_cpu_64(resp->tx_ucast_pkts);
+               stats->q_opackets[idx] += rte_le_to_cpu_64(resp->tx_mcast_pkts);
+               stats->q_opackets[idx] += rte_le_to_cpu_64(resp->tx_bcast_pkts);
+               stats->q_obytes[idx] = rte_le_to_cpu_64(resp->tx_ucast_bytes);
+               stats->q_obytes[idx] += rte_le_to_cpu_64(resp->tx_mcast_bytes);
+               stats->q_obytes[idx] += rte_le_to_cpu_64(resp->tx_bcast_bytes);
+               stats->q_errors[idx] += rte_le_to_cpu_64(resp->tx_err_pkts);
+       }
+
 
        HWRM_UNLOCK();