Przeglądaj źródła

qcacld-3.0: Fill STATION_INFO_SIGNAL when returning cached value to upperlayer

qcacld-2.0 to qcacld-3.0 propogation.

When there is an get_station request from the upper layer during roaming,
the driver returns a cached rssi value but it dosent set the "sinfo->filled"
(station_info_flags) bit flag for the NL80211_STA_INFO_SIGNAL. If this flag
is not set the kernel dosen't update the cached rssi value to upper layer.
To mitigate this issue, set the "sinfo->filled" when returning the
cached value to the upper layer during roaming.

CRs-Fixed: 1084502
Change-Id: If62f7482c8153131daa2d0ea83596e5cd4e3f104
Arun Kumar Khandavalli 8 lat temu
rodzic
commit
bffbe05c4c
1 zmienionych plików z 16 dodań i 5 usunięć
  1. 16 5
      core/hdd/src/wlan_hdd_stats.c

+ 16 - 5
core/hdd/src/wlan_hdd_stats.c

@@ -1707,6 +1707,20 @@ void wlan_hdd_cfg80211_stats_ext_callback(void *ctx,
 }
 #endif /* End of WLAN_FEATURE_STATS_EXT */
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && !defined(WITH_BACKPORTS)
+static inline void wlan_hdd_fill_station_info_signal(struct station_info
+						     *sinfo)
+{
+	sinfo->filled |= STATION_INFO_SIGNAL;
+}
+#else
+static inline void wlan_hdd_fill_station_info_signal(struct station_info
+						     *sinfo)
+{
+	sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
+}
+#endif
+
 /**
  * __wlan_hdd_cfg80211_get_station() - get station statistics
  * @wiphy: Pointer to wiphy
@@ -1783,6 +1797,7 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
 		 * send the cached rssi when get_station
 		 */
 		sinfo->signal = pAdapter->rssi;
+		wlan_hdd_fill_station_info_signal(sinfo);
 		return 0;
 	}
 
@@ -1801,11 +1816,7 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
 	pHddStaCtx->conn_info.noise =
 		pHddStaCtx->conn_info.signal - snr;
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && !defined(WITH_BACKPORTS)
-	sinfo->filled |= STATION_INFO_SIGNAL;
-#else
-	sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
-#endif
+	wlan_hdd_fill_station_info_signal(sinfo);
 
 	/*
 	 * we notify connect to lpass here instead of during actual