mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
cfg80211: Return beacon loss count in station
If station info contains a beacon loss count, return it to userspace. Signed-off-by: Paul Stewart <[email protected]> Signed-off-by: John W. Linville <[email protected]>
This commit is contained in:
parent
84381b4ed5
commit
a85e1d5597
6 changed files with 24 additions and 2 deletions
|
|
@ -355,7 +355,8 @@ static void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo)
|
|||
STATION_INFO_RX_DROP_MISC |
|
||||
STATION_INFO_BSS_PARAM |
|
||||
STATION_INFO_CONNECTED_TIME |
|
||||
STATION_INFO_STA_FLAGS;
|
||||
STATION_INFO_STA_FLAGS |
|
||||
STATION_INFO_BEACON_LOSS_COUNT;
|
||||
|
||||
do_posix_clock_monotonic_gettime(&uptime);
|
||||
sinfo->connected_time = uptime.tv_sec - sta->last_connected;
|
||||
|
|
@ -368,6 +369,7 @@ static void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo)
|
|||
sinfo->tx_retries = sta->tx_retry_count;
|
||||
sinfo->tx_failed = sta->tx_retry_failed;
|
||||
sinfo->rx_dropped_misc = sta->rx_dropped;
|
||||
sinfo->beacon_loss_count = sta->beacon_loss_count;
|
||||
|
||||
if ((sta->local->hw.flags & IEEE80211_HW_SIGNAL_DBM) ||
|
||||
(sta->local->hw.flags & IEEE80211_HW_SIGNAL_UNSPEC)) {
|
||||
|
|
|
|||
|
|
@ -1381,6 +1381,14 @@ void ieee80211_beacon_connection_loss_work(struct work_struct *work)
|
|||
struct ieee80211_sub_if_data *sdata =
|
||||
container_of(work, struct ieee80211_sub_if_data,
|
||||
u.mgd.beacon_connection_loss_work);
|
||||
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
||||
struct sta_info *sta;
|
||||
|
||||
if (ifmgd->associated) {
|
||||
sta = sta_info_get(sdata, ifmgd->bssid);
|
||||
if (sta)
|
||||
sta->beacon_loss_count++;
|
||||
}
|
||||
|
||||
if (sdata->local->hw.flags & IEEE80211_HW_CONNECTION_MONITOR)
|
||||
__ieee80211_connection_loss(sdata);
|
||||
|
|
|
|||
|
|
@ -275,6 +275,7 @@ struct sta_ampdu_mlme {
|
|||
* EAP frames before association
|
||||
* @sta: station information we share with the driver
|
||||
* @sta_state: duplicates information about station state (for debug)
|
||||
* @beacon_loss_count: number of times beacon loss has triggered
|
||||
*/
|
||||
struct sta_info {
|
||||
/* General information, mostly static */
|
||||
|
|
@ -367,6 +368,7 @@ struct sta_info {
|
|||
#endif
|
||||
|
||||
unsigned int lost_packets;
|
||||
unsigned int beacon_loss_count;
|
||||
|
||||
/* should be right in front of sta to be in the same cache line */
|
||||
bool dummy;
|
||||
|
|
|
|||
|
|
@ -2390,6 +2390,9 @@ static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
|
|||
if (sinfo->filled & STATION_INFO_TX_FAILED)
|
||||
NLA_PUT_U32(msg, NL80211_STA_INFO_TX_FAILED,
|
||||
sinfo->tx_failed);
|
||||
if (sinfo->filled & STATION_INFO_BEACON_LOSS_COUNT)
|
||||
NLA_PUT_U32(msg, NL80211_STA_INFO_BEACON_LOSS,
|
||||
sinfo->beacon_loss_count);
|
||||
if (sinfo->filled & STATION_INFO_BSS_PARAM) {
|
||||
bss_param = nla_nest_start(msg, NL80211_STA_INFO_BSS_PARAM);
|
||||
if (!bss_param)
|
||||
|
|
|
|||
Loading…
Reference in a new issue