aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwifiex/sta_event.c
diff options
context:
space:
mode:
authorAvinash Patil <patila@marvell.com>2014-05-22 01:02:29 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-05-22 14:04:37 -0400
commitc1078bc98a3543b218c060f5d34f0c6f2beaeb88 (patch)
tree9226578db4739053cb339c4a2b625c58d058a74e /drivers/net/wireless/mwifiex/sta_event.c
parentd8d2f19feb169d3a87d67f9056ef06b7a9b56f98 (diff)
mwifiex: delete TDLS link upon Teardown event
If userspace application does not take care of TDLS teardown event, TDLS link would be present in driver database and thus driver would send such packets on direct link while peer has already severed link causing data traffic failure. Disable TDLS link upon teardown event so as to ensure this does not happen. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/mwifiex/sta_event.c')
-rw-r--r--drivers/net/wireless/mwifiex/sta_event.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/wireless/mwifiex/sta_event.c b/drivers/net/wireless/mwifiex/sta_event.c
index 5aea719219a3..f6395ef11a72 100644
--- a/drivers/net/wireless/mwifiex/sta_event.c
+++ b/drivers/net/wireless/mwifiex/sta_event.c
@@ -137,6 +137,7 @@ mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code)
137static int mwifiex_parse_tdls_event(struct mwifiex_private *priv, 137static int mwifiex_parse_tdls_event(struct mwifiex_private *priv,
138 struct sk_buff *event_skb) 138 struct sk_buff *event_skb)
139{ 139{
140 int ret = 0;
140 struct mwifiex_adapter *adapter = priv->adapter; 141 struct mwifiex_adapter *adapter = priv->adapter;
141 struct mwifiex_sta_node *sta_ptr; 142 struct mwifiex_sta_node *sta_ptr;
142 struct mwifiex_tdls_generic_event *tdls_evt = 143 struct mwifiex_tdls_generic_event *tdls_evt =
@@ -162,12 +163,15 @@ static int mwifiex_parse_tdls_event(struct mwifiex_private *priv,
162 NL80211_TDLS_TEARDOWN, 163 NL80211_TDLS_TEARDOWN,
163 le16_to_cpu(tdls_evt->u.reason_code), 164 le16_to_cpu(tdls_evt->u.reason_code),
164 GFP_KERNEL); 165 GFP_KERNEL);
166 ret = mwifiex_tdls_oper(priv, tdls_evt->peer_mac,
167 MWIFIEX_TDLS_DISABLE_LINK);
168 queue_work(adapter->workqueue, &adapter->main_work);
165 break; 169 break;
166 default: 170 default:
167 break; 171 break;
168 } 172 }
169 173
170 return 0; 174 return ret;
171} 175}
172 176
173/* 177/*