]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mwifiex: fix WPS eapol handshake failure
authorStone Piao <piaoyun@marvell.com>
Thu, 21 Jun 2012 03:21:11 +0000 (20:21 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 12 Jul 2012 03:32:00 +0000 (04:32 +0100)
commit f03ba7e9a24e5e9efaad56bd1713b994ea556b16 upstream.

After association, STA will go through eapol handshake with WPS
enabled AP. It's observed that WPS handshake fails with some 11n
AP. The reason for the failure is that the eapol packet is sent
via 11n frame aggregation.

The eapol packet should be sent directly without 11n aggregation.

This patch fixes the problem by adding WPS session control while
dequeuing Tx packets for transmission.

Signed-off-by: Stone Piao <piaoyun@marvell.com>
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>
[bwh: Backported to 3.2: reformat the if-statement per earlier
 upstream commit c65a30f35f938b421ac67c34a9e70b0e49e6019a]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/wireless/mwifiex/wmm.c

index b94a3492816edcb991a852694f305168f22f0593..06fcf1e6e5aa888b89ffbfaf0979a4d449cafd9b 100644 (file)
@@ -1211,10 +1211,12 @@ mwifiex_dequeue_tx_packet(struct mwifiex_adapter *adapter)
                return 0;
        }
 
-       if (!ptr->is_11n_enabled || mwifiex_is_ba_stream_setup(priv, ptr, tid)
-           || ((priv->sec_info.wpa_enabled
-                 || priv->sec_info.wpa2_enabled) && !priv->wpa_is_gtk_set)
-               ) {
+       if (!ptr->is_11n_enabled ||
+           mwifiex_is_ba_stream_setup(priv, ptr, tid) ||
+           priv->wps.session_enable ||
+           ((priv->sec_info.wpa_enabled ||
+             priv->sec_info.wpa2_enabled) &&
+            !priv->wpa_is_gtk_set)) {
                mwifiex_send_single_packet(priv, ptr, ptr_index, flags);
                /* ra_list_spinlock has been freed in
                   mwifiex_send_single_packet() */