can't associate
Marcelo Tosatti
marcelo at kvack.org
Sun Feb 18 10:59:04 EST 2007
Hi Holger,
On Sun, Feb 18, 2007 at 10:10:23AM +0100, Holger Schurig wrote:
> > 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!
Right, the test should be for "!full_scan" instead of "full_scan". My bad.
> 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.
The test should be reserved as you mention. I'll commit the fixed version.
Thanks!
More information about the libertas-dev
mailing list