can't associate

Holger Schurig hs4233 at mail.mn-solutions.de
Sun Feb 18 04:10:23 EST 2007


> Can you please try to associate with the following patch:

Sorry, it did not work with this patch.


Can't you reproduce my problem easily when you set your AP to a
high channel?  Because the unpatched usb8xxx scans at channel 1
and 2 (and bandwith problems), my USB dongle detects the AP on
channels 1..4 (on channels 3 and 4 with a smaller signal, but
anyway). However, when I put my AP at channel 8 it's far enought
away to notget detected by the scan. That should be easy to
reproduce.


If your patch attached, debug_libertas=0 (because it outputs toooo much
debug, the debug comes more into the way than beeing helpful) but some
debug statements I saw this:

10:44:43 kernel: usb8xxx: eth1: Marvell Wlan 802.11 adapter
10:44:43 kernel: usbcore: registered new interface driver usb8xxx
10:44:46 root: ifconfig eth1 up
10:44:49 root: iwconfig eth1 essid MRVTEST
10:44:50 kernel: //HS libertas_send_specific_SSID_scan: calling wlan_scan_networks with full_scan
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 0, chanidx 0
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 1, chanidx 1
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 2, chanidx 2
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 3, chanidx 3
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 4, chanidx 4
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 5, chanidx 5
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 6, chanidx 6
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 7, chanidx 7
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 8, chanidx 8
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 9, chanidx 9
10:44:50 kernel: //HS wlan_scan_create_channel_list: nextchan 10, chanidx 10
10:44:50 kernel: //HS wlan_scan_channel_list: full_scan 1, last_scanned_channel 0
10:44:50 kernel: //HS wlan_scan_channel_list: scan chan 1
10:44:50 kernel: //HS wlan_scan_channel_list: scan chan 2

So, you patch inside libertas_send_specific_SSID_scan() set's full_scan
to 1. But this part of the patch

> -		if (scanned >= 2) {
> +		if (scanned >= 2 && full_scan) {
>  	    	priv->adapter->last_scanned_channel = ptmpchan->channumber;
>  	    	return 0;
>  		}
> +        scanned = 0;
>
>  	}

then keeps the code path at this place the same as before. I think you need
to test for    && !full_scan    here. 

At least it worked with this modification:

...
10:57:57 kernel: //HS wlan_scan_channel_list: full_scan 1, last_scanned_channel 0
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 1
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 2
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 3
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 4
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 5
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 6
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 7
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 8
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 9
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 10
10:57:57 kernel: //HS wlan_scan_channel_list: scan chan 11

And then:

# iwconfig eth1
eth1      MRVL-USB8388  ESSID:"MRVTEST"  Nickname:""
          Mode:Managed  Frequency:2.447 GHz  Access Point: 00:15:0C:A8:BF:24
          Bit Rate:1 Mb/s   Tx-Power=18 dBm
          Retry limit:8   RTS thr=2347 B   Fragment thr=2346 B
          Encryption key:off
          Power Management:off
          Link Quality=100/100  Signal level=-2 dBm  Noise level=-2 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0


Voila!



I'm not sure about implications with debugfs/extscan or debugfs/setuserscan
here. When I do things like

echo "probes=2 dur=2000" >setuserscan
echo "probes=2 dur=2000 types=3" >setuserscan
echo "probes=2 dur=2000 types=3" >setuserscan
echo "essid=XX" >setuserscan
echo "essid=MRVTEST" >setuserscan
echo XX >extscan
echo MRVTEST >extscan
iwconfig eth1 essid any

All of this scanning methods call wlan_scan_channel_list() with
full_scan 1 and last_scanned_channel 0.



More information about the libertas-dev mailing list