linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* wl1251 issues
@ 2010-08-01 17:05 Denis 'GNUtoo' Carikli
  2010-08-04 18:33 ` Kalle Valo
  0 siblings, 1 reply; 2+ messages in thread
From: Denis 'GNUtoo' Carikli @ 2010-08-01 17:05 UTC (permalink / raw)
  To: linux-wireless; +Cc: Kalle Valo

[-- Attachment #1: Type: text/plain, Size: 5876 bytes --]

Hi, I've an htc dream(also known as G1,first google phone,same device
than the ADP1 )
I prefer GNU/Linux than android,mainly because of the small number of
free software applications for android,and also because I'm used to
GNU/Linux(I feel at home).
So I helped standardizing and debugging the htcdream kernel in order to
be able to run GNU/Linux (android has its own userland interfaces for
some periphericals/devices(I mean something like the sound driver,the
wifi driver etc...))

The wifi driver that ships with android is free software,the sources are
available here:
http://android.git.kernel.org/?p=platform/hardware/ti/wlan.git;a=summary

But unfortunately it uses non-standard userspace<->kernel interfaces.
The non-standard interfaces are used by a patched wpa_supplicant.
The non-standard wpa_supplicant depend on android.

But...there is a wl1251_sdio standard driver in the android kernel we
used,which is available here:
http://gitorious.org/htc-msm-2-6-32/leviathan-incoming/commits/android-msm-2.6.32-rebase
It is derived from the android-msm-2.6.32 branch of the android kernel
available here:
http://android.git.kernel.org/?p=kernel/msm.git;a=summary
At first I used this driver.
But unfortunately it didn't support Power saving modes,and so it
consumed the battery in about one hour.

Fortunately compat-wireless has support for Power saving.
So I used that locally and made tests.

So my goal is to have a working wireless driver with PSM and have
standard kernel interfaces(in order to be compatible with userland
applications),using the android ti wlan driver would be the last resort.

The wl1251_sdio depends on the msm sdcard controller which lives at:
drivers/mmc/host/msm_sdcc.c
it contains the flollowing patch:
sdio: add new function for RAW (Read after Write) operation
viewable here:
http://gitorious.org/htc-msm-2-6-32/leviathan-incoming/commit/03e2cd19cb8b0a486ef8b8f2bec60d3c1b88d8b4


In order to keep the conversation and the flow of mail manageable I will
start with the first issue which doesn't involve PSM.

Here's the setup:
*kernel:
http://gitorious.org/htc-msm-2-6-32/leviathan-incoming/commits/android-msm-2.6.32-rebase at the following commit:
sdio: add new function for RAW (Read after Write) operation

*compat-wireless 2010-07-31 with the following attached patches patches:
0011-wl1251-add-reset-handling.patch
0013-wl1251-prevent-scan-when-connected.patch
va_vormat-2.6.36.patch
debug.patch

all is built with openembedded(the compat-wireless recipe is not
commited in org.openembedded.dev because it's changing so often)

Here's the issue(this first issue doesn't involve PSM yet):
I connect trough wpa to the local access point at the wifi cafee(wrt54
somrthing,running an old openwrt with a 2.4 kernel and the proprietary
broadcom module)

I use dhcp to get an ip
The connection last for a while and then I've that:
wlan0     IEEE 802.11bg  ESSID:"essid_has_been_hidden_in_that_mail"  
          Mode:Managed  Frequency:2.432 GHz  Access Point:
00:23:69:XX:XX:XX  
          Bit Rate=1 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=43/70  Signal level=-67 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
That seem connected.

root@htcdream ~ # ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1): 56 data bytes
^C
--- 192.168.2.1 ping statistics ---
22 packets transmitted, 0 packets received, 100% packet loss

here's the wpa connection script output:
ot@htcdream ~ # sh wpa.sh
CTRL-EVENT-SCAN-RESULTS 
Trying to associate with 00:23:69:xx:xx:xx
(SSID='essid_has_been_hidden_in_that_mail' freq=2432 MHz)
Associated with 00:23:69:xx:xx:xx
WPA: Key negotiation completed with 00:23:69:xx:xx:xx [PTK=CCMP
GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to 00:23:69:xx:xx:xx completed (auth)
[id=0 id_str=]

the essid and mac address have been changed.

a while true;do dmesg -c;done gave a still flowing flow of messages:
here's a part of it:
[ 3233.009460] wl1251: IRQ
[ 3233.011016] wl1251: IRQ work
[ 3233.011199] wl1251: intr: 0x1
[ 3233.011260] wl1251: RX: FW +1
[ 3233.011260] wl1251: RX counter: 13
[ 3233.011291] wl1251: WL1251_ACX_INTR_RX0_DATA
[ 3233.011413] wl1251: rx skb 0xc4664c00: 144 B beacon
[ 3233.039428] wl1251: IRQ
[ 3233.039611] wl1251: IRQ work
[ 3233.039764] wl1251: intr: 0x8
[ 3233.039825] wl1251: RX: FW +1
[ 3233.039825] wl1251: RX counter: 14
[ 3233.039855] wl1251: WL1251_ACX_INTR_RX0_DATA
[ 3233.039947] wl1251: rx skb 0xc4664300: 18 B beacon
[ 3233.089447] wl1251: IRQ
[ 3233.089538] wl1251: IRQ work
[ 3233.089660] wl1251: intr: 0x1
[ 3233.089721] wl1251: RX: FW +1
[ 3233.089721] wl1251: RX counter: 15
[ 3233.089752] wl1251: WL1251_ACX_INTR_RX0_DATA
[ 3233.089874] wl1251: rx skb 0xc4664780: 18 B beacon
[ 3233.109436] wl1251: IRQ
[ 3233.109527] wl1251: IRQ work
[ 3233.109680] wl1251: intr: 0x8
[ 3233.109741] wl1251: RX: FW +1
[ 3233.109741] wl1251: RX counter: 0
[ 3233.109741] wl1251: WL1251_ACX_INTR_RX0_DATA
[ 3233.109863] wl1251: rx skb 0xc46649c0: 144 B beacon
[ 3233.159484] wl1251: IRQ
[ 3233.159637] wl1251: IRQ work
[ 3233.159790] wl1251: intr: 0x9
[ 3233.159851] wl1251: RX: FW +2
[ 3233.159851] wl1251: RX counter: 2
[ 3233.159881] wl1251: WL1251_ACX_INTR_RX0_DATA
[ 3233.159973] wl1251: rx skb 0xc4664780: 18 B beacon
[ 3233.160064] wl1251: WL1251_ACX_INTR_RX1_DATA
[ 3233.160186] wl1251: rx skb 0xc4664780: 18 B beacon
[ 3233.209472] wl1251: IRQ
[ 3233.209564] wl1251: IRQ work
[ 3233.209686] wl1251: intr: 0x1
[ 3233.209747] wl1251: RX: FW +1
[ 3233.209777] wl1251: RX counter: 3
[ 3233.209777] wl1251: WL1251_ACX_INTR_RX0_DATA
[ 3233.209899] wl1251: rx skb 0xc4664840: 144 B beacon


I've also a rt2070 card, should I make tests with that card instead?

Denis


[-- Attachment #2: 0011-wl1251-add-reset-handling.patch --]
[-- Type: text/x-patch, Size: 1012 bytes --]

Index: compat-wireless-2010-06-19/drivers/net/wireless/wl12xx/wl1251_sdio.c
===================================================================
--- compat-wireless-2010-06-19.orig/drivers/net/wireless/wl12xx/wl1251_sdio.c	2010-06-20 22:04:12.776553632 +0200
+++ compat-wireless-2010-06-19/drivers/net/wireless/wl12xx/wl1251_sdio.c	2010-06-20 22:06:30.375232047 +0200
@@ -131,6 +131,20 @@
 
 static void wl1251_sdio_reset(struct wl1251 *wl)
 {
+	extern int sdio_reset_comm(struct mmc_card *card);
+	struct sdio_func *func = wl_to_func(wl);
+	int ret;
+
+	sdio_claim_host(func);
+	sdio_reset_comm(func->card);
+	ret = sdio_enable_func(func);
+	if (ret)
+		goto release;
+
+	sdio_set_block_size(func, 512);
+
+release:
+	sdio_release_host(func);
 }
 
 static void wl1251_sdio_enable_irq(struct wl1251 *wl)
@@ -271,6 +285,9 @@
 	ret = wl1251_init_ieee80211(wl);
 	if (ret)
 		goto out_free_irq;
+	
+	/* we can power it down now until it's started */
+	wl->set_power(0);
 
 	sdio_set_drvdata(func, wl);
 	return ret;

[-- Attachment #3: 0013-wl1251-prevent-scan-when-connected.patch --]
[-- Type: text/x-patch, Size: 1164 bytes --]

Index: compat-wireless-2010-07-31/drivers/net/wireless/wl12xx/wl1251.h
===================================================================
--- compat-wireless-2010-07-31.orig/drivers/net/wireless/wl12xx/wl1251.h	2010-08-01 15:04:21.219724545 +0200
+++ compat-wireless-2010-07-31/drivers/net/wireless/wl12xx/wl1251.h	2010-08-01 15:05:22.307219824 +0200
@@ -381,7 +381,9 @@
 
 	u32 chip_id;
 	char fw_ver[21];
-
+	
+	bool associated;
+	
 	/* Most recently reported noise in dBm */
 	s8 noise;
 };
Index: compat-wireless-2010-07-31/drivers/net/wireless/wl12xx/wl1251_main.c
===================================================================
--- compat-wireless-2010-07-31.orig/drivers/net/wireless/wl12xx/wl1251_main.c	2010-08-01 15:04:32.919105073 +0200
+++ compat-wireless-2010-07-31/drivers/net/wireless/wl12xx/wl1251_main.c	2010-08-01 15:05:59.668541777 +0200
@@ -874,6 +874,13 @@
 
 	wl1251_debug(DEBUG_MAC80211, "mac80211 hw scan");
 
+	/*
+	 * FIXME: scanning while associated causes lockups,
+	 * so we don't allow that
+	 */
+	if (wl->associated)
+		return -EBUSY;
+
 	if (req->n_ssids) {
 		ssid = req->ssids[0].ssid;
 		ssid_len = req->ssids[0].ssid_len;

[-- Attachment #4: va_vormat-2.6.36.patch --]
[-- Type: text/x-patch, Size: 583 bytes --]

Index: compat-wireless-2010-07-31/include/linux/compat-2.6.36.h
===================================================================
--- compat-wireless-2010-07-31.orig/include/linux/compat-2.6.36.h	2010-08-01 15:28:00.299100291 +0200
+++ compat-wireless-2010-07-31/include/linux/compat-2.6.36.h	2010-08-01 15:28:26.847223098 +0200
@@ -8,6 +8,11 @@
 #define kparam_block_sysfs_write(a)
 #define kparam_unblock_sysfs_write(a)
 
+struct va_format {
+	const char *fmt;
+	va_list *va;
+};
+
 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)) */
 
 #endif /* LINUX_26_36_COMPAT_H */

[-- Attachment #5: debug.patch --]
[-- Type: text/x-patch, Size: 496 bytes --]

Index: compat-wireless-2010-07-17/drivers/net/wireless/wl12xx/wl1251.h
===================================================================
--- compat-wireless-2010-07-17.orig/drivers/net/wireless/wl12xx/wl1251.h	2010-07-18 18:55:22.054116356 +0200
+++ compat-wireless-2010-07-17/drivers/net/wireless/wl12xx/wl1251.h	2010-07-18 18:55:37.583421412 +0200
@@ -52,7 +52,7 @@
 	DEBUG_ALL	= ~0,
 };
 
-#define DEBUG_LEVEL (DEBUG_NONE)
+#define DEBUG_LEVEL (DEBUG_ALL)
 
 #define DEBUG_DUMP_LIMIT 1024
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: wl1251 issues
  2010-08-01 17:05 wl1251 issues Denis 'GNUtoo' Carikli
@ 2010-08-04 18:33 ` Kalle Valo
  0 siblings, 0 replies; 2+ messages in thread
From: Kalle Valo @ 2010-08-04 18:33 UTC (permalink / raw)
  To: Denis 'GNUtoo' Carikli; +Cc: linux-wireless

Denis 'GNUtoo' Carikli <GNUtoo@no-log.org> writes:

> Hi,

Hi Denis,

> Here's the issue(this first issue doesn't involve PSM yet):
> I connect trough wpa to the local access point at the wifi cafee(wrt54
> somrthing,running an old openwrt with a 2.4 kernel and the proprietary
> broadcom module)
>
> I use dhcp to get an ip
> The connection last for a while and then I've that:
> wlan0     IEEE 802.11bg  ESSID:"essid_has_been_hidden_in_that_mail"  
>           Mode:Managed  Frequency:2.432 GHz  Access Point:
> 00:23:69:XX:XX:XX  
>           Bit Rate=1 Mb/s   Tx-Power=20 dBm   
>           Retry  long limit:7   RTS thr:off   Fragment thr:off
>           Encryption key:off
>           Power Management:off
>           Link Quality=43/70  Signal level=-67 dBm  
>           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
>           Tx excessive retries:0  Invalid misc:0   Missed beacon:0
> That seem connected.
>
> root@htcdream ~ # ping 192.168.2.1
> PING 192.168.2.1 (192.168.2.1): 56 data bytes
> ^C
> --- 192.168.2.1 ping statistics ---
> 22 packets transmitted, 0 packets received, 100% packet loss

So basically what happens is that you associate but no data is
transfered? Did you confirm that the dhcp client really gets the ip
address?

> here's the wpa connection script output:
> ot@htcdream ~ # sh wpa.sh
> CTRL-EVENT-SCAN-RESULTS 
> Trying to associate with 00:23:69:xx:xx:xx
> (SSID='essid_has_been_hidden_in_that_mail' freq=2432 MHz)
> Associated with 00:23:69:xx:xx:xx
> WPA: Key negotiation completed with 00:23:69:xx:xx:xx [PTK=CCMP
> GTK=CCMP]
> CTRL-EVENT-CONNECTED - Connection to 00:23:69:xx:xx:xx completed (auth)
> [id=0 id_str=]
>
> the essid and mac address have been changed.
>
> a while true;do dmesg -c;done gave a still flowing flow of messages:
> here's a part of it:

I didn't immeadiately notice anything wrong from the logs. I would
like to know if the problem is related to power save mode or
encryption. Can you first test without encryption, ie. connect to an
open network and see if you still see the problem. If you still see
the problem, disable power save and connect to the same open AP again.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-08-04 18:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-01 17:05 wl1251 issues Denis 'GNUtoo' Carikli
2010-08-04 18:33 ` Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).