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
This commit is contained in:
Arun Kumar Khandavalli
2016-11-14 23:14:06 +05:30
committed by qcabuildsw
부모 6677a335ba
커밋 bffbe05c4c

파일 보기

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