Bug 16554

Summary: wl1251 stalls connection completely when being asked to scan while associated
Product: Drivers Reporter: Ameya Palande (ameya.palande)
Component: network-wirelessAssignee: Kalle Valo (kvalo)
Status: RESOLVED CODE_FIX    
Severity: high CC: carsten, ext-yuri.kululin, kvalo, linville
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.35 Subsystem:
Regression: No Bisected commit-id:

Description Ameya Palande 2010-08-10 13:33:43 UTC
BUG DETAILED DESCRIPTIONS
===========================================================

When WL1251 is asked to scan while associated, wifi connection breaks down, no
pings go through, also after scan results are done.

While it's natural for active scans to slow down/stop traffic, it is not
supposed to be a permanent effect.

EXACT STEPS LEADING TO PROBLEM:
(Explain in detail what you do (e.g. tap on OK) and what you see (e.g. message
Connection Failed appears))
===========================================================
1. Disable connman, UX startup in inittab. Enable USB networking.
2. SSH in, Set up wpa supplicant config file /etc/wpasupp.conf (values cut out
to protect my local network):

ap_scan=1

network={
    ssid="MYSSID"
    proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP
    #psk="MYPSK"
    psk=MYHEXPSK
}

3. wpa_supplicant -B -c /etc/wpasupp.conf -iwlan0 -Dnl80211
4. (after few seconds), dhclient wlan0
5. start ping of default gateway, watch ping away [session 1]
6. ssh in with other session, run wpa_cli, write 'scan' and 'scan_results'
afterwards
7. ping in [session 1] now stops working and continues to stop working.
Eventually shows ping: sendmsg: No buffer space available. dmesg states we are
still associated. 

EXPECTED OUTCOME:
===================

Pings continuing after scan results

ACTUAL OUTCOME:
===================

Pings does not continue

USER IMPACT:
===================

User experiences wifi on N900 that does not work when associated.

REPRODUCIBILITY:
(always, less than 1/10, 5/10, 9/10)
=====================================

always
Comment 1 Yuri Kululin 2010-08-12 13:51:05 UTC
It looks like the scan command sequence was broken and we need to change CMD_SCAN to CMD_TRIGGER_SCAN_TO in wl1251_cmd_trigger_scan_to() function.

I'll prepare patch for review.
Comment 2 Kalle Valo 2010-08-12 15:09:25 UTC
Yeah, it has to be that one. Please do send the patch, and include the commit id which broke it (3a98c30f3e8bb1f32b5bcb74a39647b3670de275) and also cc stable. Example here:

http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=commit;h=fe100acddf438591ecf3582cb57241e560da70b7
Comment 3 Kalle Valo 2010-08-13 12:40:08 UTC
This patch fixes the issue, I have verified it myself also. FIXED.

From: Yuri Kululin <ext-yuri.kululin@nokia.com>

Use appropriate command (CMD_TRIGGER_SCAN_TO) instead of scan command
(CMD_SCAN) to configure trigger scan timeout.

This was broken in commit 3a98c30f3e8bb1f32b5bcb74a39647b3670de275.

Cc: stable@kernel.org
Signed-off-by: Yuri Ershov <ext-yuri.ershov@nokia.com>
Signed-off-by: Yuri Kululin <ext-yuri.kululin@nokia.com>