diff options
Diffstat (limited to 'net/mac80211/tdls.c')
| -rw-r--r-- | net/mac80211/tdls.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c index 24c37f91ca46..ba8fe48952d9 100644 --- a/net/mac80211/tdls.c +++ b/net/mac80211/tdls.c | |||
| @@ -1994,3 +1994,26 @@ void ieee80211_tdls_chsw_work(struct work_struct *wk) | |||
| 1994 | } | 1994 | } |
| 1995 | rtnl_unlock(); | 1995 | rtnl_unlock(); |
| 1996 | } | 1996 | } |
| 1997 | |||
| 1998 | void ieee80211_tdls_handle_disconnect(struct ieee80211_sub_if_data *sdata, | ||
| 1999 | const u8 *peer, u16 reason) | ||
| 2000 | { | ||
| 2001 | struct ieee80211_sta *sta; | ||
| 2002 | |||
| 2003 | rcu_read_lock(); | ||
| 2004 | sta = ieee80211_find_sta(&sdata->vif, peer); | ||
| 2005 | if (!sta || !sta->tdls) { | ||
| 2006 | rcu_read_unlock(); | ||
| 2007 | return; | ||
| 2008 | } | ||
| 2009 | rcu_read_unlock(); | ||
| 2010 | |||
| 2011 | tdls_dbg(sdata, "disconnected from TDLS peer %pM (Reason: %u=%s)\n", | ||
| 2012 | peer, reason, | ||
| 2013 | ieee80211_get_reason_code_string(reason)); | ||
| 2014 | |||
| 2015 | ieee80211_tdls_oper_request(&sdata->vif, peer, | ||
| 2016 | NL80211_TDLS_TEARDOWN, | ||
| 2017 | WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE, | ||
| 2018 | GFP_ATOMIC); | ||
| 2019 | } | ||
