qcacmn: Rx stats changes for BE HW vdev stats

Following peer stats are updated in per packet Rx path:
    to_stack
    multicast
    broadcast

In BE architecture, HW provides the support for basic vdev stats and
hence per packet stats updation of above parameters can be done only
when enhanced stats is enabled or HW vdev offload stats is disabled.

Avoiding per packet stats updation reduces CPU load and improves KPI.

Change-Id: Id7c11c025a8464951b615a7f7b006ce61db487fc
CRs-Fixed: 3067843
此提交包含在:
Harsh Kumar Bijlani
2021-06-07 20:37:53 +05:30
提交者 Madan Koyyalamudi
父節點 66e66d88d7
當前提交 af17c944fb
共有 9 個檔案被更改,包括 242 行新增43 行删除

查看文件

@@ -1595,7 +1595,8 @@ dp_rx_validate_rx_callbacks(struct dp_soc *soc,
} else {
num_nbuf = dp_rx_drop_nbuf_list(vdev->pdev,
nbuf_head);
DP_STATS_DEC(peer, rx.to_stack.num, num_nbuf);
DP_PEER_TO_STACK_DECC(peer, num_nbuf,
vdev->pdev->enhanced_stats_en);
}
return QDF_STATUS_E_FAILURE;
}
@@ -1686,6 +1687,7 @@ void dp_rx_msdu_stats_update(struct dp_soc *soc, qdf_nbuf_t nbuf,
bool is_ampdu, is_not_amsdu;
uint32_t sgi, mcs, tid, nss, bw, reception_type, pkt_type;
struct dp_vdev *vdev = peer->vdev;
bool enh_flag;
qdf_ether_header_t *eh;
uint16_t msdu_len = QDF_NBUF_CB_RX_PKT_LEN(nbuf);
@@ -1702,10 +1704,11 @@ void dp_rx_msdu_stats_update(struct dp_soc *soc, qdf_nbuf_t nbuf,
if (qdf_unlikely(qdf_nbuf_is_da_mcbc(nbuf) &&
(vdev->rx_decap_type == htt_cmn_pkt_type_ethernet))) {
eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf);
DP_STATS_INC_PKT(peer, rx.multicast, 1, msdu_len);
enh_flag = vdev->pdev->enhanced_stats_en;
DP_PEER_MC_INCC_PKT(peer, 1, msdu_len, enh_flag);
tid_stats->mcast_msdu_cnt++;
if (QDF_IS_ADDR_BROADCAST(eh->ether_dhost)) {
DP_STATS_INC_PKT(peer, rx.bcast, 1, msdu_len);
DP_PEER_BC_INCC_PKT(peer, 1, msdu_len, enh_flag);
tid_stats->bcast_msdu_cnt++;
}
}