Browse Source

qcacmn: Capture tx status error as well in CFR stats

Capture tx status errors & cookie lookup failure under CFR stats

Change-Id: I546b70424f5fe5fafde36da3cdf587cb7ab29856
Shwetha G K 5 years ago
parent
commit
2846a3c308

+ 3 - 0
target_if/cfr/src/target_if_cfr.c

@@ -82,6 +82,9 @@ int target_if_cfr_stop_capture(struct wlan_objmgr_pdev *pdev,
 	pdev_cfrobj->dbr_evt_cnt = 0;
 	pdev_cfrobj->tx_evt_cnt  = 0;
 	pdev_cfrobj->release_cnt = 0;
+	pdev_cfrobj->tx_peer_status_cfr_fail = 0;
+	pdev_cfrobj->tx_evt_status_cfr_fail = 0;
+	pdev_cfrobj->tx_dbr_cookie_lookup_fail = 0;
 
 	return retv;
 }

+ 6 - 0
target_if/cfr/src/target_if_cfr_6018.c

@@ -1190,6 +1190,7 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
 	if ((tx_evt_param.status & PEER_CFR_CAPTURE_EVT_STATUS_MASK) == 0) {
 		cfr_debug("CFR capture failed for peer: " QDF_MAC_ADDR_STR,
 			  QDF_MAC_ADDR_ARRAY(tx_evt_param.peer_mac_addr.bytes));
+		pcfr->tx_peer_status_cfr_fail++;
 		retval = -EINVAL;
 		goto relref;
 	}
@@ -1199,6 +1200,7 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
 			  QDF_MAC_ADDR_STR,
 			  tx_evt_param.status & CFR_TX_EVT_STATUS_MASK,
 			  QDF_MAC_ADDR_ARRAY(tx_evt_param.peer_mac_addr.bytes));
+		pcfr->tx_evt_status_cfr_fail++;
 		retval = -EINVAL;
 		goto relref;
 	}
@@ -1211,6 +1213,7 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
 					&cookie, 0)) {
 		cfr_debug("Cookie lookup failure for addr: 0x%pK status: 0x%x",
 			  (void *)((uintptr_t)buf_addr), tx_evt_param.status);
+		pcfr->tx_dbr_cookie_lookup_fail++;
 		retval = -EINVAL;
 		goto relref;
 	}
@@ -1672,6 +1675,9 @@ QDF_STATUS cfr_6018_deinit_pdev(struct wlan_objmgr_psoc *psoc,
 	pcfr->invalid_dma_length_cnt = 0;
 	pcfr->clear_txrx_event = 0;
 	pcfr->cfr_dma_aborts = 0;
+	pcfr->tx_peer_status_cfr_fail = 0;
+	pcfr->tx_evt_status_cfr_fail = 0;
+	pcfr->tx_dbr_cookie_lookup_fail = 0;
 	qdf_mem_zero(&pcfr->rcc_param, sizeof(struct cfr_rcc_param));
 	qdf_mem_zero(&pcfr->global, (sizeof(struct ta_ra_cfr_cfg) *
 				     MAX_TA_RA_ENTRIES));

+ 9 - 0
umac/cfr/dispatcher/inc/wlan_cfr_utils_api.h

@@ -451,6 +451,12 @@ struct cfr_rcc_param {
  * total_tx_evt_cnt: No. of Tx completion events since wifi was up
  * dbr_evt_cnt: No. of WMI DBR completion events
  * release_cnt: No. of CFR data buffers relayed to userspace
+ * tx_peer_status_cfr_fail: No. of tx events without tx status set to
+ * PEER_CFR_CAPTURE_EVT_STATUS_MASK indicating CFR capture failure on a peer.
+ * tx_evt_status_cfr_fail: No. of tx events without tx status set to
+ * CFR_TX_EVT_STATUS_MASK indicating CFR capture status failure.
+ * tx_dbr_cookie_lookup_fail: No. of dbr cookie lookup failures during tx event
+ * process.
  * rcc_param: Structure to store CFR config for the current commit session
  * global: Structure to store accumulated CFR config
  * rx_tlv_evt_cnt: Number of CFR WDI events from datapath
@@ -494,6 +500,9 @@ struct pdev_cfr {
 	uint64_t total_tx_evt_cnt;
 	uint64_t dbr_evt_cnt;
 	uint64_t release_cnt;
+	uint64_t tx_peer_status_cfr_fail;
+	uint64_t tx_evt_status_cfr_fail;
+	uint64_t tx_dbr_cookie_lookup_fail;
 #ifdef WLAN_ENH_CFR_ENABLE
 	struct cfr_rcc_param rcc_param;
 	struct ta_ra_cfr_cfg global[MAX_TA_RA_ENTRIES];

+ 9 - 0
umac/cfr/dispatcher/src/wlan_cfr_ucfg_api.c

@@ -882,6 +882,12 @@ QDF_STATUS ucfg_cfr_rcc_dump_dbg_counters(struct wlan_objmgr_vdev *vdev)
 		pcfr->invalid_dma_length_cnt);
 	cfr_err("flush_timeout_dbr_cnt = %llu\n",
 		pcfr->flush_timeout_dbr_cnt);
+	cfr_err("tx_peer_status_cfr_fail = %llu\n",
+		pcfr->tx_peer_status_cfr_fail);
+	cfr_err("tx_evt_status_cfr_fail = %llu\n",
+		pcfr->tx_evt_status_cfr_fail);
+	cfr_err("tx_dbr_cookie_lookup_fail = %llu\n",
+		pcfr->tx_dbr_cookie_lookup_fail);
 	cfr_err("PPDU id mismatch for same cookie:\n");
 	cfr_err("clear_txrx_event = %llu\n",
 		pcfr->clear_txrx_event);
@@ -954,6 +960,9 @@ QDF_STATUS ucfg_cfr_rcc_clr_dbg_counters(struct wlan_objmgr_vdev *vdev)
 	pcfr->invalid_dma_length_cnt = 0;
 	pcfr->clear_txrx_event = 0;
 	pcfr->cfr_dma_aborts = 0;
+	pcfr->tx_peer_status_cfr_fail = 0;
+	pcfr->tx_evt_status_cfr_fail = 0;
+	pcfr->tx_dbr_cookie_lookup_fail = 0;
 	wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
 
 	return status;