staging: r8712u: Fix driver to support ad-hoc mode
authorJeff Chua <jeff.chua.linux@gmail.com>
Wed, 27 Apr 2011 16:25:14 +0000 (11:25 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 3 Jun 2011 01:34:13 +0000 (10:34 +0900)
commit 62819fd9481021db7f87d5f61f2e2fd2be1dfcfa upstream.

Driver r8712u is unable to handle ad-hoc mode. The issue is that when
the driver first starts, there will not be an SSID for association.
The fix is to always call the "select and join from scan" routine when
in ad-hoc mode.

Note: Ad-hoc mode worked intermittently before. If the driver had
previously been associated, then things were OK.

Signed-off-by: Jeff Chua <jeff.chua.linux@gmail.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rtl8712/rtl871x_ioctl_set.c

index 8b1451d030698351f3f34f3d2ad12624227263c6..8486eb1503cc0884e9b518803d78a64c3f4b33e5 100644 (file)
@@ -68,7 +68,10 @@ static u8 do_join(struct _adapter *padapter)
        pmlmepriv->fw_state |= _FW_UNDER_LINKING;
        pmlmepriv->pscanned = plist;
        pmlmepriv->to_join = true;
-       if (_queue_empty(queue) == true) {
+
+       /* adhoc mode will start with an empty queue, but skip checking */
+       if (!check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) &&
+           _queue_empty(queue)) {
                if (pmlmepriv->fw_state & _FW_UNDER_LINKING)
                        pmlmepriv->fw_state ^= _FW_UNDER_LINKING;
                /* when set_ssid/set_bssid for do_join(), but scanning queue