aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStone Piao <piaoyun@marvell.com>2013-07-22 22:17:43 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-07-24 11:02:06 -0400
commiteaf49dbc4b7ef7e9fe420713730e403c9ba0bef1 (patch)
tree31c70d138aeb0b02737503bd3f066b76369f2e17
parent231d83e29e44e39d987ea4c33caf7869cf5ef4c7 (diff)
mwifiex: discard deauth and disassoc event during WPS session
Some GO will send deauth or disassoc packet at the end of WPS handshake, which causes P2P connecion failure due to the race condition between event path and data path. Signed-off-by: Stone Piao <piaoyun@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/mwifiex/sta_event.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwifiex/sta_event.c b/drivers/net/wireless/mwifiex/sta_event.c
index ea265ec0e522..8b057524b252 100644
--- a/drivers/net/wireless/mwifiex/sta_event.c
+++ b/drivers/net/wireless/mwifiex/sta_event.c
@@ -201,6 +201,11 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
201 201
202 case EVENT_DEAUTHENTICATED: 202 case EVENT_DEAUTHENTICATED:
203 dev_dbg(adapter->dev, "event: Deauthenticated\n"); 203 dev_dbg(adapter->dev, "event: Deauthenticated\n");
204 if (priv->wps.session_enable) {
205 dev_dbg(adapter->dev,
206 "info: receive deauth event in wps session\n");
207 break;
208 }
204 adapter->dbg.num_event_deauth++; 209 adapter->dbg.num_event_deauth++;
205 if (priv->media_connected) { 210 if (priv->media_connected) {
206 reason_code = 211 reason_code =
@@ -211,6 +216,11 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
211 216
212 case EVENT_DISASSOCIATED: 217 case EVENT_DISASSOCIATED:
213 dev_dbg(adapter->dev, "event: Disassociated\n"); 218 dev_dbg(adapter->dev, "event: Disassociated\n");
219 if (priv->wps.session_enable) {
220 dev_dbg(adapter->dev,
221 "info: receive disassoc event in wps session\n");
222 break;
223 }
214 adapter->dbg.num_event_disassoc++; 224 adapter->dbg.num_event_disassoc++;
215 if (priv->media_connected) { 225 if (priv->media_connected) {
216 reason_code = 226 reason_code =