Переглянути джерело

qcacmn: Report agc tain table index as metadata

Changes to report agc gain table index as part of
CFR meta data to the userspace.

Change-Id: I318c3db2eff7be8b63ce6aaa544f75fe065fb230
Shwetha G K 3 роки тому
батько
коміт
a731de3964

+ 11 - 0
target_if/cfr/src/target_if_cfr_dbr.c

@@ -389,6 +389,13 @@ static void dump_cfr_peer_tx_event(wmi_cfr_peer_tx_event_param *event)
 		  event->agc_gain[2], event->agc_gain[3],
 		  event->agc_gain[4], event->agc_gain[5],
 		  event->agc_gain[6], event->agc_gain[7]);
+	cfr_debug("gain_tbl_idx0: %u gain_tbl_idx1: %u gain_tbl_idx2: %u\n"
+		  "gain_tbl_idx3: %u gain_tbl_idx4: %u gain_tbl_idx5: %u\n"
+		  "gain_tbl_idx6: %u gain_tbl_idx7: %u\n",
+		  event->agc_gain_tbl_index[0], event->agc_gain_tbl_index[1],
+		  event->agc_gain_tbl_index[2], event->agc_gain_tbl_index[3],
+		  event->agc_gain_tbl_index[4], event->agc_gain_tbl_index[5],
+		  event->agc_gain_tbl_index[6], event->agc_gain_tbl_index[7]);
 }
 
 /**
@@ -589,6 +596,10 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
 	qdf_mem_copy(&header->u.meta_dbr.chain_phase[0],
 		     &tx_evt_param.chain_phase[0],
 		     HOST_MAX_CHAINS * sizeof(tx_evt_param.chain_phase[0]));
+	qdf_mem_copy(&header->u.meta_dbr.agc_gain_tbl_index[0],
+		     &tx_evt_param.agc_gain_tbl_index[0],
+		     (HOST_MAX_CHAINS *
+		      sizeof(tx_evt_param.agc_gain_tbl_index[0])));
 
 	status = correlate_and_relay(pdev, cookie, lut,
 				     CORRELATE_TX_EV_MODULE_ID);

+ 11 - 2
target_if/cfr/src/target_if_cfr_enh.c

@@ -417,6 +417,9 @@ static void dump_metadata(struct csi_cfr_header *header, uint32_t cookie)
 			cfr_debug("agc_gain[%d] = %d\n",
 				  chain_id,
 				  meta->agc_gain[chain_id]);
+			cfr_debug("agc_gain_tbl_idx[%d] = %d\n",
+				  chain_id,
+				  meta->agc_gain_tbl_index[chain_id]);
 		}
 
 		cfr_debug("mcs_rate = %u\n", meta->mcs_rate);
@@ -864,10 +867,11 @@ void target_if_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf)
 
 	for (i = 0; i < HOST_MAX_CHAINS; i++) {
 		meta->agc_gain[i] = get_gain_db(gain_info[i]);
+		meta->agc_gain_tbl_index[i] = get_gain_table_idx(gain_info[i]);
 
 		if (pcfr->is_aoa_for_rcc_support &&
 		    (i < pcfr->max_aoa_chains) &&
-		    (get_gain_table_idx(gain_info[i]) != 0)) {
+		    (meta->agc_gain_tbl_index[i] != 0)) {
 			cfr_debug("Invalid gain table index reported");
 			invalid_gain_table_idx = true;
 		}
@@ -906,7 +910,7 @@ void target_if_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf)
 				meta->chain_phase[i] = INVALID_PHASE_DELTA;
 			else
 				meta->chain_phase[i] = ((pcfr->ibf_cal_val[i] +
-							pdelta) % 1024);
+							pdelta) & 0x3FF);
 		}
 	} else if (pcfr->is_aoa_for_rcc_support) {
 		/**
@@ -1591,6 +1595,11 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
 	qdf_mem_copy(&header->u.meta_enh.agc_gain[0],
 		     &tx_evt_param.agc_gain[0],
 		     HOST_MAX_CHAINS * sizeof(tx_evt_param.agc_gain[0]));
+	qdf_mem_copy(&header->u.meta_enh.agc_gain_tbl_index[0],
+		     &tx_evt_param.agc_gain_tbl_index[0],
+		     (HOST_MAX_CHAINS *
+		      sizeof(tx_evt_param.agc_gain_tbl_index[0])));
+
 	header->u.meta_enh.rtt_cfo_measurement = tx_evt_param.cfo_measurement;
 	header->u.meta_enh.rx_start_ts = tx_evt_param.rx_start_ts;
 	header->u.meta_enh.mcs_rate    = tx_evt_param.mcs_rate;