--- linux-2.6/drivers/staging/rtl8712/rtl871x_ioctl_set.c 2010-12-29 13:36:03.000000000 +0800 +++ linux-2.6/drivers/staging/rtl8712/rtl871x_ioctl_set.c 2011-04-27 03:13:39.000000000 +0800 @@ -68,7 +68,10 @@ 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) == true) { if (pmlmepriv->fw_state & _FW_UNDER_LINKING) pmlmepriv->fw_state ^= _FW_UNDER_LINKING; /* when set_ssid/set_bssid for do_join(), but scanning queue