Browse Source

qcacmn: calculate RSSI DBM in WKIKI

Add rssi dbm support bit for rssi_comb calculation
using parameters received from the fw.

Change-Id: Ice57ed69db74852a8b03752632bae747c043e93d
CRs-Fixed: 3183406
KARTHIK KUMAR T 3 năm trước cách đây
mục cha
commit
1bc325d4f3

+ 4 - 1
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c

@@ -1303,7 +1303,8 @@ dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
 #endif
 #ifdef QCA_RSSI_DB2DBM
 void
-dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_mon_pdev *mon_pdev)
+dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_soc *soc,
+					   struct dp_mon_pdev *mon_pdev)
 {
 	struct dp_mon_pdev_be *mon_pdev_be =
 				dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
@@ -1317,5 +1318,7 @@ dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_mon_pdev *mon_pdev)
 		mon_pdev_be->min_nf_dbm;
 	mon_pdev->ppdu_info.rx_status.xbar_config =
 		mon_pdev_be->xbar_config;
+	mon_pdev->ppdu_info.rx_status.rssi_dbm_conv_support =
+		soc->features.rssi_dbm_conv_support;
 }
 #endif

+ 4 - 2
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h

@@ -177,7 +177,8 @@ dp_rx_mon_handle_full_mon(struct dp_pdev *pdev,
  * @mon_pdev: monitor pdev
  */
 void
-dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_mon_pdev *mon_pdev);
+dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_soc *soc,
+					   struct dp_mon_pdev *mon_pdev);
 #else
 /**
  * dp_mon_rx_stats_update_rssi_dbm_params_2_0() - update rssi calibration
@@ -185,7 +186,8 @@ dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_mon_pdev *mon_pdev);
  * @mon_pdev: monitor pdev
  */
 static inline void
-dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_mon_pdev *mon_pdev)
+dp_mon_rx_stats_update_rssi_dbm_params_2_0(struct dp_soc *soc,
+					   struct dp_mon_pdev *mon_pdev)
 { }
 #endif
 #endif /* _DP_RX_MON_2_0_H_ */

+ 2 - 2
dp/wifi3.0/monitor/dp_mon.h

@@ -780,7 +780,7 @@ struct dp_mon_ops {
 					 struct dp_vdev *vdev);
 	void (*mon_lite_mon_disable_rx)(struct dp_pdev *pdev);
 	void (*mon_rx_stats_update_rssi_dbm_params)
-		(struct dp_mon_pdev *mon_pdev);
+		(struct dp_soc *soc, struct dp_mon_pdev *mon_pdev);
 };
 
 struct dp_mon_soc {
@@ -3774,7 +3774,7 @@ dp_mon_rx_stats_update_rssi_dbm_params(struct dp_soc *soc,
 		dp_mon_debug("callback not registered");
 		return;
 	}
-	monitor_ops->mon_rx_stats_update_rssi_dbm_params(mon_pdev);
+	monitor_ops->mon_rx_stats_update_rssi_dbm_params(soc, mon_pdev);
 }
 
 #ifdef QCA_ENHANCED_STATS_SUPPORT

+ 2 - 0
qdf/inc/qdf_nbuf.h

@@ -356,6 +356,7 @@ typedef __qdf_nbuf_queue_t qdf_nbuf_queue_t;
  * @rssi_temp_offset: Temperature based rssi offset
  * @min_nf_dbm: min noise floor in active chains per channel
  * @xbar_config: 4 bytes, used for BB to RF Chain mapping
+ * @rssi_dbm_conv_support: Rssi dbm converstion support param
  */
 struct mon_rx_status {
 	uint64_t tsft;
@@ -481,6 +482,7 @@ struct mon_rx_status {
 	int32_t rssi_temp_offset;
 	int8_t min_nf_dbm;
 	uint32_t xbar_config;
+	bool rssi_dbm_conv_support;
 #endif
 };
 

+ 3 - 1
qdf/linux/src/qdf_nbuf.c

@@ -5046,8 +5046,10 @@ static unsigned int qdf_nbuf_update_radiotap_ampdu_flags(
 #else
 #ifdef QCA_RSSI_DB2DBM
 #define QDF_MON_STATUS_GET_RSSI_IN_DBM(rx_status) \
+(((rx_status)->rssi_dbm_conv_support) ? \
 ((rx_status)->rssi_comb + (rx_status)->min_nf_dbm +\
-(rx_status)->rssi_temp_offset)
+(rx_status)->rssi_temp_offset) : \
+((rx_status)->rssi_comb + (rx_status)->chan_noise_floor))
 #else
 #define QDF_MON_STATUS_GET_RSSI_IN_DBM(rx_status) \
 (rx_status->rssi_comb + rx_status->chan_noise_floor)