diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index e74b893951b8..e4ac50e44ba1 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -728,6 +728,12 @@ void dp_rx_tid_stats_cb(struct dp_soc *soc, void *cb_ctxt, queue_status->msdu_frms_cnt, queue_status->total_cnt, queue_status->late_recv_mpdu_cnt, queue_status->win_jump_2k, queue_status->hole_cnt); + + DP_PRINT_STATS("Num of Addba Req = %d\n", rx_tid->num_of_addba_req); + DP_PRINT_STATS("Num of Addba Resp = %d\n", rx_tid->num_of_addba_resp); + DP_PRINT_STATS("Num of Delba Req = %d\n", rx_tid->num_of_delba_req); + DP_PRINT_STATS("BA window size = %d\n", rx_tid->ba_win_size); + DP_PRINT_STATS("Pn size = %d\n", rx_tid->pn_size); } static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc, @@ -1038,7 +1044,9 @@ int dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid, if (rx_tid->hw_qdesc_vaddr_unaligned != NULL) return dp_rx_tid_update_wifi3(peer, tid, ba_window_size, start_seq); - + rx_tid->num_of_addba_req = 0; + rx_tid->num_of_delba_req = 0; + rx_tid->num_of_addba_resp = 0; #ifdef notyet hw_qdesc_size = hal_get_reo_qdesc_size(soc->hal_soc, ba_window_size); #else @@ -1388,6 +1396,7 @@ int dp_addba_requestprocess_wifi3(void *peer_handle, rx_tid->dialogtoken = dialogtoken; rx_tid->statuscode = QDF_STATUS_SUCCESS; rx_tid->ba_status = DP_RX_BA_ACTIVE; + rx_tid->num_of_addba_req++; return 0; } @@ -1409,6 +1418,7 @@ void dp_addba_responsesetup_wifi3(void *peer_handle, uint8_t tid, struct dp_peer *peer = (struct dp_peer *)peer_handle; struct dp_rx_tid *rx_tid = &peer->rx_tid[tid]; + rx_tid->num_of_addba_resp++; /* setup ADDBA response paramters */ *dialogtoken = rx_tid->dialogtoken; *statuscode = rx_tid->statuscode; @@ -1437,6 +1447,7 @@ int dp_delba_process_wifi3(void *peer_handle, * replace with a new one without queue extenstion descript to save * memory */ + rx_tid->num_of_delba_req++; dp_rx_tid_update_wifi3(peer, tid, 1, 0); rx_tid->ba_status = DP_RX_BA_INACTIVE; @@ -1481,6 +1492,7 @@ dp_set_pn_check_wifi3(struct cdp_vdev *vdev_handle, struct cdp_peer *peer_handle struct dp_pdev *pdev; struct dp_soc *soc; int i; + uint8_t pn_size; struct hal_reo_cmd_params params; /* preconditions */ @@ -1508,10 +1520,12 @@ dp_set_pn_check_wifi3(struct cdp_vdev *vdev_handle, struct cdp_peer *peer_handle case cdp_sec_type_aes_gcmp_256: params.u.upd_queue_params.pn_check_needed = 1; params.u.upd_queue_params.pn_size = 48; + pn_size = 48; break; case cdp_sec_type_wapi: params.u.upd_queue_params.pn_check_needed = 1; params.u.upd_queue_params.pn_size = 128; + pn_size = 128; if (vdev->opmode == wlan_op_mode_ap) { params.u.upd_queue_params.pn_even = 1; params.u.upd_queue_params.update_pn_even = 1; @@ -1522,6 +1536,7 @@ dp_set_pn_check_wifi3(struct cdp_vdev *vdev_handle, struct cdp_peer *peer_handle break; default: params.u.upd_queue_params.pn_check_needed = 0; + pn_size = 0; break; } @@ -1548,6 +1563,7 @@ dp_set_pn_check_wifi3(struct cdp_vdev *vdev_handle, struct cdp_peer *peer_handle params.u.upd_queue_params.pn_95_64 = rx_pn[2]; params.u.upd_queue_params.pn_127_96 = rx_pn[3]; } + rx_tid->pn_size = pn_size; dp_reo_send_cmd(soc, CMD_UPDATE_RX_REO_QUEUE, ¶ms, dp_rx_tid_update_cb, rx_tid); } else { diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index b83bc6070ef0..085450677e05 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -402,6 +402,17 @@ struct dp_rx_tid { /* TID */ int tid; + /* Num of addba requests */ + uint32_t num_of_addba_req; + + /* Num of addba responses */ + uint32_t num_of_addba_resp; + + /* Num of delba requests */ + uint32_t num_of_delba_req; + + /* pn size */ + uint8_t pn_size; /* REO TID queue descriptors */ void *hw_qdesc_vaddr_unaligned; qdf_dma_addr_t hw_qdesc_paddr_unaligned;