From 1bc325d4f38b38e925a9c6238f1a2ea492a66779 Mon Sep 17 00:00:00 2001 From: KARTHIK KUMAR T Date: Tue, 26 Apr 2022 23:56:47 +0530 Subject: [PATCH] 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 --- dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c | 5 ++++- dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h | 6 ++++-- dp/wifi3.0/monitor/dp_mon.h | 4 ++-- qdf/inc/qdf_nbuf.h | 2 ++ qdf/linux/src/qdf_nbuf.c | 4 +++- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c b/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c index 99ff2e348c..5ea31c92b6 100644 --- a/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c +++ b/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 diff --git a/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h b/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h index c17bb32e86..bf05f15bd2 100644 --- a/dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h +++ b/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_ */ diff --git a/dp/wifi3.0/monitor/dp_mon.h b/dp/wifi3.0/monitor/dp_mon.h index 52cbf78671..5fc5839be2 100644 --- a/dp/wifi3.0/monitor/dp_mon.h +++ b/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 diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index bff9a0a55b..a9e2f1aa0e 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/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 }; diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c index 3a611258f5..f33bb51a7e 100644 --- a/qdf/linux/src/qdf_nbuf.c +++ b/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)