diff options
Diffstat (limited to 'net/mac80211/ibss.c')
| -rw-r--r-- | net/mac80211/ibss.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index f00dca056295..0a6ff01c68a9 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c @@ -1252,6 +1252,7 @@ void ieee80211_ibss_rx_no_sta(struct ieee80211_sub_if_data *sdata,  static void ieee80211_ibss_sta_expire(struct ieee80211_sub_if_data *sdata)  { +	struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;  	struct ieee80211_local *local = sdata->local;  	struct sta_info *sta, *tmp;  	unsigned long exp_time = IEEE80211_IBSS_INACTIVITY_LIMIT; @@ -1268,10 +1269,17 @@ static void ieee80211_ibss_sta_expire(struct ieee80211_sub_if_data *sdata)  		if (time_is_before_jiffies(last_active + exp_time) ||  		    (time_is_before_jiffies(last_active + exp_rsn) &&  		     sta->sta_state != IEEE80211_STA_AUTHORIZED)) { +			u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN]; +  			sta_dbg(sta->sdata, "expiring inactive %sSTA %pM\n",  				sta->sta_state != IEEE80211_STA_AUTHORIZED ?  				"not authorized " : "", sta->sta.addr); +			ieee80211_send_deauth_disassoc(sdata, sta->sta.addr, +						       ifibss->bssid, +						       IEEE80211_STYPE_DEAUTH, +						       WLAN_REASON_DEAUTH_LEAVING, +						       true, frame_buf);  			WARN_ON(__sta_info_destroy(sta));  		}  	}  |