Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d43e8786 authored by Vasanthakumar Thiagarajan's avatar Vasanthakumar Thiagarajan Committed by John W. Linville
Browse files

mac80211: Remove bss information of the current AP when it goes out of range



There is no point having the bss information of currently associated AP
when the AP is detected to be out of range.

Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent de9f97ef
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -1042,6 +1042,7 @@ static void ieee80211_associated(struct ieee80211_sub_if_data *sdata,
	struct ieee80211_local *local = sdata->local;
	struct sta_info *sta;
	int disassoc;
	bool remove_bss = false;

	/* TODO: start monitoring current AP signal quality and number of
	 * missed beacons. Scan other channels every now and then and search
@@ -1067,6 +1068,7 @@ static void ieee80211_associated(struct ieee80211_sub_if_data *sdata,
				       "range\n",
				       sdata->dev->name, ifsta->bssid);
				disassoc = 1;
				remove_bss = true;
			} else
				ieee80211_send_probe_req(sdata, ifsta->bssid,
							 ifsta->ssid,
@@ -1086,13 +1088,25 @@ static void ieee80211_associated(struct ieee80211_sub_if_data *sdata,

	rcu_read_unlock();

	if (disassoc)
	if (disassoc) {
		ieee80211_set_disassoc(sdata, ifsta, true, true,
					WLAN_REASON_PREV_AUTH_NOT_VALID);
	else
		if (remove_bss) {
			struct ieee80211_bss *bss;

			bss = ieee80211_rx_bss_get(local, ifsta->bssid,
					local->hw.conf.channel->center_freq,
					ifsta->ssid, ifsta->ssid_len);
			if (bss) {
				atomic_dec(&bss->users);
				ieee80211_rx_bss_put(local, bss);
			}
		}
	} else {
		mod_timer(&ifsta->timer, jiffies +
				      IEEE80211_MONITORING_INTERVAL);
	}
}


static void ieee80211_auth_completed(struct ieee80211_sub_if_data *sdata,