qcacmn: Add a flag to enable/disable per-packet sync of DP stats

Currently all Host collected DP statitics are synced to upper layers
on per-packet basis; This is causing significant CPU overhead.
Add a flag which can be controlled through iwpriv to enable/disable
updating of these statistics from DP to higher layers

Change-Id: I983c6d91803c83c1efd49c5535769a0c10fbc9b5
CRs-Fixed: 2064113
This commit is contained in:
Pamidipati, Vijay
2017-06-21 00:31:06 +05:30
committed by snandini
부모 45b1df25fc
커밋 be379457e6
4개의 변경된 파일46개의 추가작업 그리고 9개의 파일을 삭제

파일 보기

@@ -1802,6 +1802,7 @@ static inline void dp_tx_comp_process_tx_status(struct dp_tx_desc_s *tx_desc,
struct dp_soc *soc = NULL;
struct dp_vdev *vdev = tx_desc->vdev;
struct dp_peer *peer = NULL;
struct dp_pdev *pdev = NULL;
uint8_t comp_status = 0;
qdf_mem_zero(&ts, sizeof(struct hal_tx_completion_status));
hal_tx_comp_get_status(&tx_desc->comp, &ts);
@@ -1931,15 +1932,19 @@ static inline void dp_tx_comp_process_tx_status(struct dp_tx_desc_s *tx_desc,
/* TODO: This call is temporary.
* Stats update has to be attached to the HTT PPDU message
*/
if (soc->cdp_soc.ol_ops->update_dp_stats)
soc->cdp_soc.ol_ops->update_dp_stats(vdev->pdev->osif_pdev,
&peer->stats, ts.peer_id, UPDATE_PEER_STATS);
out:
dp_aggregate_vdev_stats(tx_desc->vdev);
if (soc->cdp_soc.ol_ops->update_dp_stats)
pdev = vdev->pdev;
if (pdev->enhanced_stats_en && soc->cdp_soc.ol_ops->update_dp_stats) {
if (peer) {
soc->cdp_soc.ol_ops->update_dp_stats(pdev->osif_pdev,
&peer->stats, ts.peer_id,
UPDATE_PEER_STATS);
}
dp_aggregate_vdev_stats(tx_desc->vdev);
soc->cdp_soc.ol_ops->update_dp_stats(vdev->pdev->osif_pdev,
&vdev->stats, vdev->vdev_id, UPDATE_VDEV_STATS);
}
fail:
return;
}