linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] libertas sdio: remove CMD_FUNC_INIT call
@ 2013-01-18  7:24 Lubomir Rintel
  2013-01-18 20:28 ` Bing Zhao
  0 siblings, 1 reply; 9+ messages in thread
From: Lubomir Rintel @ 2013-01-18  7:24 UTC (permalink / raw)
  To: Harro Haan, Dan Williams
  Cc: John W. Linville, libertas-dev, linux-wireless, netdev,
	linux-kernel, Lubomir Rintel

It actually times out on a 8688 present in GuruPlug with sd8688.bin
(md5=7233401e9687f8c880da547beed4324e) firmware (that's present in
linux-firmware tree), but the adapter works fine.

For that firmware times out with libertas_uap [1] as well, though it succeeds
with sd8688_ap.bin (md5=52cd8f8296b9a7e1d3835d57416256b2) that was originally
shipped with GuruPlug. That firmware is not in linux-firmware tree and btmrvl
driver might win the race programming the 8688 with sd8688.bin anyway.

[1] https://github.com/lkundrak/linux/tree/libertas_uap
---
 drivers/net/wireless/libertas/if_sdio.c |   14 --------------
 1 files changed, 0 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
index 2ecab49..3c4c555 100644
--- a/drivers/net/wireless/libertas/if_sdio.c
+++ b/drivers/net/wireless/libertas/if_sdio.c
@@ -825,20 +825,6 @@ static void if_sdio_finish_power_on(struct if_sdio_card *card)
 
 	sdio_release_host(func);
 
-	/*
-	 * FUNC_INIT is required for SD8688 WLAN/BT multiple functions
-	 */
-	if (card->model == MODEL_8688) {
-		struct cmd_header cmd;
-
-		memset(&cmd, 0, sizeof(cmd));
-
-		lbs_deb_sdio("send function INIT command\n");
-		if (__lbs_cmd(priv, CMD_FUNC_INIT, &cmd, sizeof(cmd),
-				lbs_cmd_copyback, (unsigned long) &cmd))
-			netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n");
-	}
-
 	priv->fw_ready = 1;
 	wake_up(&card->pwron_waitq);
 
-- 
1.7.1


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

* RE: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-01-18  7:24 [PATCH] libertas sdio: remove CMD_FUNC_INIT call Lubomir Rintel
@ 2013-01-18 20:28 ` Bing Zhao
  2013-01-30 19:27   ` John W. Linville
  2013-02-19  4:46   ` Lubomir Rintel
  0 siblings, 2 replies; 9+ messages in thread
From: Bing Zhao @ 2013-01-18 20:28 UTC (permalink / raw)
  To: Lubomir Rintel, Harro Haan, Dan Williams
  Cc: libertas-dev, netdev, linux-wireless, John W. Linville, linux-kernel

Hi Lubomir,

> It actually times out on a 8688 present in GuruPlug with sd8688.bin
> (md5=7233401e9687f8c880da547beed4324e) firmware (that's present in
> linux-firmware tree), but the adapter works fine.
> 
> For that firmware times out with libertas_uap [1] as well, though it succeeds
> with sd8688_ap.bin (md5=52cd8f8296b9a7e1d3835d57416256b2) that was originally
> shipped with GuruPlug. That firmware is not in linux-firmware tree and btmrvl
> driver might win the race programming the 8688 with sd8688.bin anyway.
> 
> [1] https://github.com/lkundrak/linux/tree/libertas_uap
> ---
>  drivers/net/wireless/libertas/if_sdio.c |   14 --------------
>  1 files changed, 0 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
> index 2ecab49..3c4c555 100644
> --- a/drivers/net/wireless/libertas/if_sdio.c
> +++ b/drivers/net/wireless/libertas/if_sdio.c
> @@ -825,20 +825,6 @@ static void if_sdio_finish_power_on(struct if_sdio_card *card)
> 
>  	sdio_release_host(func);
> 
> -	/*
> -	 * FUNC_INIT is required for SD8688 WLAN/BT multiple functions
> -	 */
> -	if (card->model == MODEL_8688) {
> -		struct cmd_header cmd;
> -
> -		memset(&cmd, 0, sizeof(cmd));
> -
> -		lbs_deb_sdio("send function INIT command\n");
> -		if (__lbs_cmd(priv, CMD_FUNC_INIT, &cmd, sizeof(cmd),
> -				lbs_cmd_copyback, (unsigned long) &cmd))
> -			netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n");
> -	}
> -

Removing FUNC_INIT could break things in some scenarios.
Could you please test the following case?

1. insmod liberates -> download firmware, send FUNC_INIT, ...
2. rmmod libertas -> send FUNC_SHUTDOWN command to firmware; BT is still working.
3. insmod libertas -> skip firmware downloading, send FUNC_INIT, ...

If FUNC_INIT is removed, I don't expect step 3 to work.

Thanks,
Bing

>  	priv->fw_ready = 1;
>  	wake_up(&card->pwron_waitq);
> 
> --
> 1.7.1

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

* Re: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-01-18 20:28 ` Bing Zhao
@ 2013-01-30 19:27   ` John W. Linville
  2013-02-19  4:46   ` Lubomir Rintel
  1 sibling, 0 replies; 9+ messages in thread
From: John W. Linville @ 2013-01-30 19:27 UTC (permalink / raw)
  To: Bing Zhao
  Cc: Lubomir Rintel, Harro Haan, Dan Williams, libertas-dev, netdev,
	linux-wireless, linux-kernel

On Fri, Jan 18, 2013 at 12:28:17PM -0800, Bing Zhao wrote:
> Hi Lubomir,
> 
> > It actually times out on a 8688 present in GuruPlug with sd8688.bin
> > (md5=7233401e9687f8c880da547beed4324e) firmware (that's present in
> > linux-firmware tree), but the adapter works fine.
> > 
> > For that firmware times out with libertas_uap [1] as well, though it succeeds
> > with sd8688_ap.bin (md5=52cd8f8296b9a7e1d3835d57416256b2) that was originally
> > shipped with GuruPlug. That firmware is not in linux-firmware tree and btmrvl
> > driver might win the race programming the 8688 with sd8688.bin anyway.
> > 
> > [1] https://github.com/lkundrak/linux/tree/libertas_uap
> > ---
> >  drivers/net/wireless/libertas/if_sdio.c |   14 --------------
> >  1 files changed, 0 insertions(+), 14 deletions(-)
> > 
> > diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
> > index 2ecab49..3c4c555 100644
> > --- a/drivers/net/wireless/libertas/if_sdio.c
> > +++ b/drivers/net/wireless/libertas/if_sdio.c
> > @@ -825,20 +825,6 @@ static void if_sdio_finish_power_on(struct if_sdio_card *card)
> > 
> >  	sdio_release_host(func);
> > 
> > -	/*
> > -	 * FUNC_INIT is required for SD8688 WLAN/BT multiple functions
> > -	 */
> > -	if (card->model == MODEL_8688) {
> > -		struct cmd_header cmd;
> > -
> > -		memset(&cmd, 0, sizeof(cmd));
> > -
> > -		lbs_deb_sdio("send function INIT command\n");
> > -		if (__lbs_cmd(priv, CMD_FUNC_INIT, &cmd, sizeof(cmd),
> > -				lbs_cmd_copyback, (unsigned long) &cmd))
> > -			netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n");
> > -	}
> > -
> 
> Removing FUNC_INIT could break things in some scenarios.
> Could you please test the following case?
> 
> 1. insmod liberates -> download firmware, send FUNC_INIT, ...
> 2. rmmod libertas -> send FUNC_SHUTDOWN command to firmware; BT is still working.
> 3. insmod libertas -> skip firmware downloading, send FUNC_INIT, ...
> 
> If FUNC_INIT is removed, I don't expect step 3 to work.
> 
> Thanks,
> Bing
> 
> >  	priv->fw_ready = 1;
> >  	wake_up(&card->pwron_waitq);
> > 
> > --
> > 1.7.1
> 

Lubomir, any reply?  Should I drop this one?

-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

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

* RE: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-01-18 20:28 ` Bing Zhao
  2013-01-30 19:27   ` John W. Linville
@ 2013-02-19  4:46   ` Lubomir Rintel
  2013-02-21  1:59     ` Bing Zhao
  1 sibling, 1 reply; 9+ messages in thread
From: Lubomir Rintel @ 2013-02-19  4:46 UTC (permalink / raw)
  To: Bing Zhao
  Cc: Harro Haan, Dan Williams, libertas-dev, netdev, linux-wireless,
	John W. Linville, linux-kernel

On Fri, 2013-01-18 at 12:28 -0800, Bing Zhao wrote:
> Hi Lubomir,
> 
> > It actually times out on a 8688 present in GuruPlug with sd8688.bin
> > (md5=7233401e9687f8c880da547beed4324e) firmware (that's present in
> > linux-firmware tree), but the adapter works fine.
> > 
> > For that firmware times out with libertas_uap [1] as well, though it succeeds
> > with sd8688_ap.bin (md5=52cd8f8296b9a7e1d3835d57416256b2) that was originally
> > shipped with GuruPlug. That firmware is not in linux-firmware tree and btmrvl
> > driver might win the race programming the 8688 with sd8688.bin anyway.
> > 
> > [1] https://github.com/lkundrak/linux/tree/libertas_uap
> > ---
> >  drivers/net/wireless/libertas/if_sdio.c |   14 --------------
> >  1 files changed, 0 insertions(+), 14 deletions(-)
> > 
> > diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
> > index 2ecab49..3c4c555 100644
> > --- a/drivers/net/wireless/libertas/if_sdio.c
> > +++ b/drivers/net/wireless/libertas/if_sdio.c
> > @@ -825,20 +825,6 @@ static void if_sdio_finish_power_on(struct if_sdio_card *card)
> > 
> >  	sdio_release_host(func);
> > 
> > -	/*
> > -	 * FUNC_INIT is required for SD8688 WLAN/BT multiple functions
> > -	 */
> > -	if (card->model == MODEL_8688) {
> > -		struct cmd_header cmd;
> > -
> > -		memset(&cmd, 0, sizeof(cmd));
> > -
> > -		lbs_deb_sdio("send function INIT command\n");
> > -		if (__lbs_cmd(priv, CMD_FUNC_INIT, &cmd, sizeof(cmd),
> > -				lbs_cmd_copyback, (unsigned long) &cmd))
> > -			netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n");
> > -	}
> > -
> 
> Removing FUNC_INIT could break things in some scenarios.
> Could you please test the following case?
> 
> 1. insmod liberates -> download firmware, send FUNC_INIT, ...
> 2. rmmod libertas -> send FUNC_SHUTDOWN command to firmware; BT is still working.
> 3. insmod libertas -> skip firmware downloading, send FUNC_INIT, ...
> 
> If FUNC_INIT is removed, I don't expect step 3 to work.

In case btmrvl_sdio is loaded, the driver always locks up in FUNC_INIT
upon probe time, thus I'm not able to proceed to further steps.

[  209.338953] [<c0502248>] (__schedule+0x610/0x764) from [<bf20ae24>] (__lbs_cmd+0xb8/0x130 [libertas])
[  209.348340] [<bf20ae24>] (__lbs_cmd+0xb8/0x130 [libertas]) from [<bf222474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio])
[  209.360136] [<bf222474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio]) from [<bf2226c4>] (if_sdio_power_on+0x18c/0x20c [libertas_sdio])
[  209.373052] [<bf2226c4>] (if_sdio_power_on+0x18c/0x20c [libertas_sdio]) from [<bf222944>] (if_sdio_probe+0x200/0x31c [libertas_sdio])
[  209.385316] [<bf222944>] (if_sdio_probe+0x200/0x31c [libertas_sdio]) from [<bf01d820>] (sdio_bus_probe+0x94/0xfc [mmc_core])
[  209.396748] [<bf01d820>] (sdio_bus_probe+0x94/0xfc [mmc_core]) from [<c02e729c>] (driver_probe_device+0x12c/0x348)
[  209.407214] [<c02e729c>] (driver_probe_device+0x12c/0x348) from [<c02e7530>] (__driver_attach+0x78/0x9c)
[  209.416798] [<c02e7530>] (__driver_attach+0x78/0x9c) from [<c02e5658>] (bus_for_each_dev+0x50/0x88)
[  209.425946] [<c02e5658>] (bus_for_each_dev+0x50/0x88) from [<c02e6810>] (bus_add_driver+0x108/0x268)
[  209.435180] [<c02e6810>] (bus_add_driver+0x108/0x268) from [<c02e782c>] (driver_register+0xa4/0x134)
[  209.444426] [<c02e782c>] (driver_register+0xa4/0x134) from [<bf22601c>] (if_sdio_init_module+0x1c/0x3c [libertas_sdio])
[  209.455339] [<bf22601c>] (if_sdio_init_module+0x1c/0x3c [libertas_sdio]) from [<c00085b8>] (do_one_initcall+0x98/0x174)
[  209.466236] [<c00085b8>] (do_one_initcall+0x98/0x174) from [<c0076504>] (load_module+0x1c5c/0x1f80)
[  209.475390] [<c0076504>] (load_module+0x1c5c/0x1f80) from [<c007692c>] (sys_init_module+0x104/0x128)
[  209.484632] [<c007692c>] (sys_init_module+0x104/0x128) from [<c0008c40>] (ret_fast_syscall+0x0/0x38)

In case btmrvl_sdio is _not_ loaded, insmod returns, but driver locks up
waiting for FUNC_INIT to finish:

[  300.538859] [<c0502248>] (__schedule+0x610/0x764) from [<bf1fae24>] (__lbs_cmd+0xb8/0x130 [libertas])
[  300.548600] [<bf1fae24>] (__lbs_cmd+0xb8/0x130 [libertas]) from [<bf212474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio])
[  300.560398] [<bf212474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio]) from [<bf213230>] (if_sdio_do_prog_firmware+0x414/0x454 [libertas_sdio])
[  300.574052] [<bf213230>] (if_sdio_do_prog_firmware+0x414/0x454 [libertas_sdio]) from [<bf1fffbc>] (lbs_fw_loaded+0x24/0x58 [libertas])
[  300.586907] [<bf1fffbc>] (lbs_fw_loaded+0x24/0x58 [libertas]) from [<c02f02c0>] (request_firmware_work_func+0xb0/0xf4)
[  300.597746] [<c02f02c0>] (request_firmware_work_func+0xb0/0xf4) from [<c003ae0c>] (process_one_work+0x348/0x6a8)
[  300.608288] [<c003ae0c>] (process_one_work+0x348/0x6a8) from [<c003b408>] (worker_thread+0x268/0x390)
[  300.617630] [<c003b408>] (worker_thread+0x268/0x390) from [<c00414b0>] (kthread+0xc0/0xd4)
[  300.625947] [<c00414b0>] (kthread+0xc0/0xd4) from [<c0008ce8>] (ret_from_fork+0x14/0x20)
[  300.634135] 2 locks held by kworker/0:1/19:
[  300.638383]  #0:  (events){.+.+.+}, at: [<c003accc>] process_one_work+0x208/0x6a8
[  300.646512]  #1:  ((&fw_work->work)){+.+.+.}, at: [<c003accc>] process_one_work+0x208/0x6a8

If I remove the FUNC_INIT call, wifi works fine, but bluetooth stops
working after a network scan:

[root@megalodon lkundrak]# iwlist scan >/dev/null 2>&1
[root@megalodon lkundrak]# hcitool scan --flush
Device is not available: No such device
[root@megalodon lkundrak]# 

> 
> Thanks,
> Bing
> 
> >  	priv->fw_ready = 1;
> >  	wake_up(&card->pwron_waitq);
> > 
> > --
> > 1.7.1



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

* RE: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-02-19  4:46   ` Lubomir Rintel
@ 2013-02-21  1:59     ` Bing Zhao
  2013-02-24 18:31       ` Lubomir Rintel
  0 siblings, 1 reply; 9+ messages in thread
From: Bing Zhao @ 2013-02-21  1:59 UTC (permalink / raw)
  To: Lubomir Rintel
  Cc: Harro Haan, Dan Williams, libertas-dev, netdev, linux-wireless,
	John W. Linville, linux-kernel

SGkgTHVib21pciwNCg0KPiA+ID4gQEAgLTgyNSwyMCArODI1LDYgQEAgc3RhdGljIHZvaWQgaWZf
c2Rpb19maW5pc2hfcG93ZXJfb24oc3RydWN0IGlmX3NkaW9fY2FyZCAqY2FyZCkNCj4gPiA+DQo+
ID4gPiAgCXNkaW9fcmVsZWFzZV9ob3N0KGZ1bmMpOw0KPiA+ID4NCj4gPiA+IC0JLyoNCj4gPiA+
IC0JICogRlVOQ19JTklUIGlzIHJlcXVpcmVkIGZvciBTRDg2ODggV0xBTi9CVCBtdWx0aXBsZSBm
dW5jdGlvbnMNCj4gPiA+IC0JICovDQo+ID4gPiAtCWlmIChjYXJkLT5tb2RlbCA9PSBNT0RFTF84
Njg4KSB7DQo+ID4gPiAtCQlzdHJ1Y3QgY21kX2hlYWRlciBjbWQ7DQo+ID4gPiAtDQo+ID4gPiAt
CQltZW1zZXQoJmNtZCwgMCwgc2l6ZW9mKGNtZCkpOw0KPiA+ID4gLQ0KPiA+ID4gLQkJbGJzX2Rl
Yl9zZGlvKCJzZW5kIGZ1bmN0aW9uIElOSVQgY29tbWFuZFxuIik7DQo+ID4gPiAtCQlpZiAoX19s
YnNfY21kKHByaXYsIENNRF9GVU5DX0lOSVQsICZjbWQsIHNpemVvZihjbWQpLA0KPiA+ID4gLQkJ
CQlsYnNfY21kX2NvcHliYWNrLCAodW5zaWduZWQgbG9uZykgJmNtZCkpDQo+ID4gPiAtCQkJbmV0
ZGV2X2FsZXJ0KHByaXYtPmRldiwgIkNNRF9GVU5DX0lOSVQgY21kIGZhaWxlZFxuIik7DQo+ID4g
PiAtCX0NCj4gPiA+IC0NCj4gPg0KPiA+IFJlbW92aW5nIEZVTkNfSU5JVCBjb3VsZCBicmVhayB0
aGluZ3MgaW4gc29tZSBzY2VuYXJpb3MuDQo+ID4gQ291bGQgeW91IHBsZWFzZSB0ZXN0IHRoZSBm
b2xsb3dpbmcgY2FzZT8NCj4gPg0KPiA+IDEuIGluc21vZCBsaWJlcmF0ZXMgLT4gZG93bmxvYWQg
ZmlybXdhcmUsIHNlbmQgRlVOQ19JTklULCAuLi4NCj4gPiAyLiBybW1vZCBsaWJlcnRhcyAtPiBz
ZW5kIEZVTkNfU0hVVERPV04gY29tbWFuZCB0byBmaXJtd2FyZTsgQlQgaXMgc3RpbGwgd29ya2lu
Zy4NCj4gPiAzLiBpbnNtb2QgbGliZXJ0YXMgLT4gc2tpcCBmaXJtd2FyZSBkb3dubG9hZGluZywg
c2VuZCBGVU5DX0lOSVQsIC4uLg0KPiA+DQo+ID4gSWYgRlVOQ19JTklUIGlzIHJlbW92ZWQsIEkg
ZG9uJ3QgZXhwZWN0IHN0ZXAgMyB0byB3b3JrLg0KPiANCj4gSW4gY2FzZSBidG1ydmxfc2RpbyBp
cyBsb2FkZWQsIHRoZSBkcml2ZXIgYWx3YXlzIGxvY2tzIHVwIGluIEZVTkNfSU5JVA0KPiB1cG9u
IHByb2JlIHRpbWUsIHRodXMgSSdtIG5vdCBhYmxlIHRvIHByb2NlZWQgdG8gZnVydGhlciBzdGVw
cy4NCj4gDQo+IFsgIDIwOS4zMzg5NTNdIFs8YzA1MDIyNDg+XSAoX19zY2hlZHVsZSsweDYxMC8w
eDc2NCkgZnJvbSBbPGJmMjBhZTI0Pl0gKF9fbGJzX2NtZCsweGI4LzB4MTMwDQo+IFtsaWJlcnRh
c10pDQo+IFsgIDIwOS4zNDgzNDBdIFs8YmYyMGFlMjQ+XSAoX19sYnNfY21kKzB4YjgvMHgxMzAg
W2xpYmVydGFzXSkgZnJvbSBbPGJmMjIyNDc0Pl0NCj4gKGlmX3NkaW9fZmluaXNoX3Bvd2VyX29u
KzB4ZWMvMHgxYjAgW2xpYmVydGFzX3NkaW9dKQ0KPiBbICAyMDkuMzYwMTM2XSBbPGJmMjIyNDc0
Pl0gKGlmX3NkaW9fZmluaXNoX3Bvd2VyX29uKzB4ZWMvMHgxYjAgW2xpYmVydGFzX3NkaW9dKSBm
cm9tIFs8YmYyMjI2YzQ+XQ0KPiAoaWZfc2Rpb19wb3dlcl9vbisweDE4Yy8weDIwYyBbbGliZXJ0
YXNfc2Rpb10pDQo+IFsgIDIwOS4zNzMwNTJdIFs8YmYyMjI2YzQ+XSAoaWZfc2Rpb19wb3dlcl9v
bisweDE4Yy8weDIwYyBbbGliZXJ0YXNfc2Rpb10pIGZyb20gWzxiZjIyMjk0ND5dDQo+IChpZl9z
ZGlvX3Byb2JlKzB4MjAwLzB4MzFjIFtsaWJlcnRhc19zZGlvXSkNCj4gWyAgMjA5LjM4NTMxNl0g
WzxiZjIyMjk0ND5dIChpZl9zZGlvX3Byb2JlKzB4MjAwLzB4MzFjIFtsaWJlcnRhc19zZGlvXSkg
ZnJvbSBbPGJmMDFkODIwPl0NCj4gKHNkaW9fYnVzX3Byb2JlKzB4OTQvMHhmYyBbbW1jX2NvcmVd
KQ0KPiBbICAyMDkuMzk2NzQ4XSBbPGJmMDFkODIwPl0gKHNkaW9fYnVzX3Byb2JlKzB4OTQvMHhm
YyBbbW1jX2NvcmVdKSBmcm9tIFs8YzAyZTcyOWM+XQ0KPiAoZHJpdmVyX3Byb2JlX2RldmljZSsw
eDEyYy8weDM0OCkNCj4gWyAgMjA5LjQwNzIxNF0gWzxjMDJlNzI5Yz5dIChkcml2ZXJfcHJvYmVf
ZGV2aWNlKzB4MTJjLzB4MzQ4KSBmcm9tIFs8YzAyZTc1MzA+XQ0KPiAoX19kcml2ZXJfYXR0YWNo
KzB4NzgvMHg5YykNCj4gWyAgMjA5LjQxNjc5OF0gWzxjMDJlNzUzMD5dIChfX2RyaXZlcl9hdHRh
Y2grMHg3OC8weDljKSBmcm9tIFs8YzAyZTU2NTg+XSAoYnVzX2Zvcl9lYWNoX2RldisweDUwLzB4
ODgpDQo+IFsgIDIwOS40MjU5NDZdIFs8YzAyZTU2NTg+XSAoYnVzX2Zvcl9lYWNoX2RldisweDUw
LzB4ODgpIGZyb20gWzxjMDJlNjgxMD5dDQo+IChidXNfYWRkX2RyaXZlcisweDEwOC8weDI2OCkN
Cj4gWyAgMjA5LjQzNTE4MF0gWzxjMDJlNjgxMD5dIChidXNfYWRkX2RyaXZlcisweDEwOC8weDI2
OCkgZnJvbSBbPGMwMmU3ODJjPl0NCj4gKGRyaXZlcl9yZWdpc3RlcisweGE0LzB4MTM0KQ0KPiBb
ICAyMDkuNDQ0NDI2XSBbPGMwMmU3ODJjPl0gKGRyaXZlcl9yZWdpc3RlcisweGE0LzB4MTM0KSBm
cm9tIFs8YmYyMjYwMWM+XQ0KPiAoaWZfc2Rpb19pbml0X21vZHVsZSsweDFjLzB4M2MgW2xpYmVy
dGFzX3NkaW9dKQ0KPiBbICAyMDkuNDU1MzM5XSBbPGJmMjI2MDFjPl0gKGlmX3NkaW9faW5pdF9t
b2R1bGUrMHgxYy8weDNjIFtsaWJlcnRhc19zZGlvXSkgZnJvbSBbPGMwMDA4NWI4Pl0NCj4gKGRv
X29uZV9pbml0Y2FsbCsweDk4LzB4MTc0KQ0KPiBbICAyMDkuNDY2MjM2XSBbPGMwMDA4NWI4Pl0g
KGRvX29uZV9pbml0Y2FsbCsweDk4LzB4MTc0KSBmcm9tIFs8YzAwNzY1MDQ+XSAobG9hZF9tb2R1
bGUrMHgxYzVjLzB4MWY4MCkNCj4gWyAgMjA5LjQ3NTM5MF0gWzxjMDA3NjUwND5dIChsb2FkX21v
ZHVsZSsweDFjNWMvMHgxZjgwKSBmcm9tIFs8YzAwNzY5MmM+XQ0KPiAoc3lzX2luaXRfbW9kdWxl
KzB4MTA0LzB4MTI4KQ0KPiBbICAyMDkuNDg0NjMyXSBbPGMwMDc2OTJjPl0gKHN5c19pbml0X21v
ZHVsZSsweDEwNC8weDEyOCkgZnJvbSBbPGMwMDA4YzQwPl0NCj4gKHJldF9mYXN0X3N5c2NhbGwr
MHgwLzB4MzgpDQo+IA0KPiBJbiBjYXNlIGJ0bXJ2bF9zZGlvIGlzIF9ub3RfIGxvYWRlZCwgaW5z
bW9kIHJldHVybnMsIGJ1dCBkcml2ZXIgbG9ja3MgdXANCj4gd2FpdGluZyBmb3IgRlVOQ19JTklU
IHRvIGZpbmlzaDoNCj4gDQo+IFsgIDMwMC41Mzg4NTldIFs8YzA1MDIyNDg+XSAoX19zY2hlZHVs
ZSsweDYxMC8weDc2NCkgZnJvbSBbPGJmMWZhZTI0Pl0gKF9fbGJzX2NtZCsweGI4LzB4MTMwDQo+
IFtsaWJlcnRhc10pDQo+IFsgIDMwMC41NDg2MDBdIFs8YmYxZmFlMjQ+XSAoX19sYnNfY21kKzB4
YjgvMHgxMzAgW2xpYmVydGFzXSkgZnJvbSBbPGJmMjEyNDc0Pl0NCj4gKGlmX3NkaW9fZmluaXNo
X3Bvd2VyX29uKzB4ZWMvMHgxYjAgW2xpYmVydGFzX3NkaW9dKQ0KPiBbICAzMDAuNTYwMzk4XSBb
PGJmMjEyNDc0Pl0gKGlmX3NkaW9fZmluaXNoX3Bvd2VyX29uKzB4ZWMvMHgxYjAgW2xpYmVydGFz
X3NkaW9dKSBmcm9tIFs8YmYyMTMyMzA+XQ0KPiAoaWZfc2Rpb19kb19wcm9nX2Zpcm13YXJlKzB4
NDE0LzB4NDU0IFtsaWJlcnRhc19zZGlvXSkNCj4gWyAgMzAwLjU3NDA1Ml0gWzxiZjIxMzIzMD5d
IChpZl9zZGlvX2RvX3Byb2dfZmlybXdhcmUrMHg0MTQvMHg0NTQgW2xpYmVydGFzX3NkaW9dKSBm
cm9tIFs8YmYxZmZmYmM+XQ0KPiAobGJzX2Z3X2xvYWRlZCsweDI0LzB4NTggW2xpYmVydGFzXSkN
Cj4gWyAgMzAwLjU4NjkwN10gWzxiZjFmZmZiYz5dIChsYnNfZndfbG9hZGVkKzB4MjQvMHg1OCBb
bGliZXJ0YXNdKSBmcm9tIFs8YzAyZjAyYzA+XQ0KPiAocmVxdWVzdF9maXJtd2FyZV93b3JrX2Z1
bmMrMHhiMC8weGY0KQ0KPiBbICAzMDAuNTk3NzQ2XSBbPGMwMmYwMmMwPl0gKHJlcXVlc3RfZmly
bXdhcmVfd29ya19mdW5jKzB4YjAvMHhmNCkgZnJvbSBbPGMwMDNhZTBjPl0NCj4gKHByb2Nlc3Nf
b25lX3dvcmsrMHgzNDgvMHg2YTgpDQo+IFsgIDMwMC42MDgyODhdIFs8YzAwM2FlMGM+XSAocHJv
Y2Vzc19vbmVfd29yaysweDM0OC8weDZhOCkgZnJvbSBbPGMwMDNiNDA4Pl0NCj4gKHdvcmtlcl90
aHJlYWQrMHgyNjgvMHgzOTApDQo+IFsgIDMwMC42MTc2MzBdIFs8YzAwM2I0MDg+XSAod29ya2Vy
X3RocmVhZCsweDI2OC8weDM5MCkgZnJvbSBbPGMwMDQxNGIwPl0gKGt0aHJlYWQrMHhjMC8weGQ0
KQ0KPiBbICAzMDAuNjI1OTQ3XSBbPGMwMDQxNGIwPl0gKGt0aHJlYWQrMHhjMC8weGQ0KSBmcm9t
IFs8YzAwMDhjZTg+XSAocmV0X2Zyb21fZm9yaysweDE0LzB4MjApDQo+IFsgIDMwMC42MzQxMzVd
IDIgbG9ja3MgaGVsZCBieSBrd29ya2VyLzA6MS8xOToNCj4gWyAgMzAwLjYzODM4M10gICMwOiAg
KGV2ZW50cyl7LisuKy4rfSwgYXQ6IFs8YzAwM2FjY2M+XSBwcm9jZXNzX29uZV93b3JrKzB4MjA4
LzB4NmE4DQo+IFsgIDMwMC42NDY1MTJdICAjMTogICgoJmZ3X3dvcmstPndvcmspKXsrLisuKy59
LCBhdDogWzxjMDAzYWNjYz5dIHByb2Nlc3Nfb25lX3dvcmsrMHgyMDgvMHg2YTgNCg0KVGhlcmUg
c2VlbXMgdG8gYmUgYSByYWNlIGNvbmRpdGlvbiBpbiBsYnNfdGhyZWFkKCkuDQoNCkF0IGxpbmUg
NTgyOg0KIDU4MiAgICAgICAgICAgICAgICAgaWYgKCFwcml2LT5md19yZWFkeSkNCiA1ODMgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQoNClRoZSBmd19yZWFkeSBpcyAwLCBzbyB5
b3UgbmV2ZXIgZ2V0IHRoZSBjaGFuY2UgdG8gZXhlY3V0ZSB0aGUgRlVOQ19JTklUIGNvbW1hbmQu
DQoNCiA2MTcgICAgICAgICAgICAgICAgIC8qIEV4ZWN1dGUgdGhlIG5leHQgY29tbWFuZCAqLw0K
IDYxOCAgICAgICAgICAgICAgICAgaWYgKCFwcml2LT5kbmxkX3NlbnQgJiYgIXByaXYtPmN1cl9j
bWQpDQogNjE5ICAgICAgICAgICAgICAgICAgICAgICAgIGxic19leGVjdXRlX25leHRfY29tbWFu
ZChwcml2KTsNCg0KDQpDb3VsZCB5b3UgdHJ5IHRoZSBmb2xsb3dpbmcgY2hhbmdlPw0KDQpkaWZm
IC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc2Rpby5jIGIvZHJpdmVy
cy9uZXQvd2lyZWxlc3MvbGliZQ0KaW5kZXggNzM5MzA5ZS4uOGY1ZDk3NyAxMDA2NDQNCi0tLSBh
L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX3NkaW8uYw0KKysrIGIvZHJpdmVycy9u
ZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc2Rpby5jDQpAQCAtODI1LDYgKzgyNSw4IEBAIHN0YXRp
YyB2b2lkIGlmX3NkaW9fZmluaXNoX3Bvd2VyX29uKHN0cnVjdCBpZl9zZGlvX2NhcmQgKmNhcg0K
DQogICAgICAgIHNkaW9fcmVsZWFzZV9ob3N0KGZ1bmMpOw0KDQorICAgICAgIHByaXYtPmZ3X3Jl
YWR5ID0gMTsNCisNCiAgICAgICAgLyoNCiAgICAgICAgICogRlVOQ19JTklUIGlzIHJlcXVpcmVk
IGZvciBTRDg2ODggV0xBTi9CVCBtdWx0aXBsZSBmdW5jdGlvbnMNCiAgICAgICAgICovDQpAQCAt
ODM5LDcgKzg0MSw2IEBAIHN0YXRpYyB2b2lkIGlmX3NkaW9fZmluaXNoX3Bvd2VyX29uKHN0cnVj
dCBpZl9zZGlvX2NhcmQgKmNhcg0KICAgICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2X2FsZXJ0
KHByaXYtPmRldiwgIkNNRF9GVU5DX0lOSVQgY21kIGZhaWxlZFxuIik7DQogICAgICAgIH0NCg0K
LSAgICAgICBwcml2LT5md19yZWFkeSA9IDE7DQogICAgICAgIHdha2VfdXAoJmNhcmQtPnB3cm9u
X3dhaXRxKTsNCg0KICAgICAgICBpZiAoIWNhcmQtPnN0YXJ0ZWQpIHsNCg0KVGhhbmtzLA0KQmlu
Zw0KDQo+IA0KPiBJZiBJIHJlbW92ZSB0aGUgRlVOQ19JTklUIGNhbGwsIHdpZmkgd29ya3MgZmlu
ZSwgYnV0IGJsdWV0b290aCBzdG9wcw0KPiB3b3JraW5nIGFmdGVyIGEgbmV0d29yayBzY2FuOg0K
PiANCj4gW3Jvb3RAbWVnYWxvZG9uIGxrdW5kcmFrXSMgaXdsaXN0IHNjYW4gPi9kZXYvbnVsbCAy
PiYxDQo+IFtyb290QG1lZ2Fsb2RvbiBsa3VuZHJha10jIGhjaXRvb2wgc2NhbiAtLWZsdXNoDQo+
IERldmljZSBpcyBub3QgYXZhaWxhYmxlOiBObyBzdWNoIGRldmljZQ0KPiBbcm9vdEBtZWdhbG9k
b24gbGt1bmRyYWtdIw0K

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

* RE: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-02-21  1:59     ` Bing Zhao
@ 2013-02-24 18:31       ` Lubomir Rintel
  2013-02-25 23:21         ` Bing Zhao
  0 siblings, 1 reply; 9+ messages in thread
From: Lubomir Rintel @ 2013-02-24 18:31 UTC (permalink / raw)
  To: Bing Zhao
  Cc: Harro Haan, Dan Williams, libertas-dev, netdev, linux-wireless,
	John W. Linville, linux-kernel

On Wed, 2013-02-20 at 17:59 -0800, Bing Zhao wrote:
> Hi Lubomir,
> 
> > > > @@ -825,20 +825,6 @@ static void if_sdio_finish_power_on(struct if_sdio_card *card)
> > > >
> > > >  	sdio_release_host(func);
> > > >
> > > > -	/*
> > > > -	 * FUNC_INIT is required for SD8688 WLAN/BT multiple functions
> > > > -	 */
> > > > -	if (card->model == MODEL_8688) {
> > > > -		struct cmd_header cmd;
> > > > -
> > > > -		memset(&cmd, 0, sizeof(cmd));
> > > > -
> > > > -		lbs_deb_sdio("send function INIT command\n");
> > > > -		if (__lbs_cmd(priv, CMD_FUNC_INIT, &cmd, sizeof(cmd),
> > > > -				lbs_cmd_copyback, (unsigned long) &cmd))
> > > > -			netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n");
> > > > -	}
> > > > -
> > >
> > > Removing FUNC_INIT could break things in some scenarios.
> > > Could you please test the following case?
> > >
> > > 1. insmod liberates -> download firmware, send FUNC_INIT, ...
> > > 2. rmmod libertas -> send FUNC_SHUTDOWN command to firmware; BT is still working.
> > > 3. insmod libertas -> skip firmware downloading, send FUNC_INIT, ...
> > >
> > > If FUNC_INIT is removed, I don't expect step 3 to work.
> > 
> > In case btmrvl_sdio is loaded, the driver always locks up in FUNC_INIT
> > upon probe time, thus I'm not able to proceed to further steps.
> > 
> > [  209.338953] [<c0502248>] (__schedule+0x610/0x764) from [<bf20ae24>] (__lbs_cmd+0xb8/0x130
> > [libertas])
> > [  209.348340] [<bf20ae24>] (__lbs_cmd+0xb8/0x130 [libertas]) from [<bf222474>]
> > (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio])
> > [  209.360136] [<bf222474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio]) from [<bf2226c4>]
> > (if_sdio_power_on+0x18c/0x20c [libertas_sdio])
> > [  209.373052] [<bf2226c4>] (if_sdio_power_on+0x18c/0x20c [libertas_sdio]) from [<bf222944>]
> > (if_sdio_probe+0x200/0x31c [libertas_sdio])
> > [  209.385316] [<bf222944>] (if_sdio_probe+0x200/0x31c [libertas_sdio]) from [<bf01d820>]
> > (sdio_bus_probe+0x94/0xfc [mmc_core])
> > [  209.396748] [<bf01d820>] (sdio_bus_probe+0x94/0xfc [mmc_core]) from [<c02e729c>]
> > (driver_probe_device+0x12c/0x348)
> > [  209.407214] [<c02e729c>] (driver_probe_device+0x12c/0x348) from [<c02e7530>]
> > (__driver_attach+0x78/0x9c)
> > [  209.416798] [<c02e7530>] (__driver_attach+0x78/0x9c) from [<c02e5658>] (bus_for_each_dev+0x50/0x88)
> > [  209.425946] [<c02e5658>] (bus_for_each_dev+0x50/0x88) from [<c02e6810>]
> > (bus_add_driver+0x108/0x268)
> > [  209.435180] [<c02e6810>] (bus_add_driver+0x108/0x268) from [<c02e782c>]
> > (driver_register+0xa4/0x134)
> > [  209.444426] [<c02e782c>] (driver_register+0xa4/0x134) from [<bf22601c>]
> > (if_sdio_init_module+0x1c/0x3c [libertas_sdio])
> > [  209.455339] [<bf22601c>] (if_sdio_init_module+0x1c/0x3c [libertas_sdio]) from [<c00085b8>]
> > (do_one_initcall+0x98/0x174)
> > [  209.466236] [<c00085b8>] (do_one_initcall+0x98/0x174) from [<c0076504>] (load_module+0x1c5c/0x1f80)
> > [  209.475390] [<c0076504>] (load_module+0x1c5c/0x1f80) from [<c007692c>]
> > (sys_init_module+0x104/0x128)
> > [  209.484632] [<c007692c>] (sys_init_module+0x104/0x128) from [<c0008c40>]
> > (ret_fast_syscall+0x0/0x38)
> > 
> > In case btmrvl_sdio is _not_ loaded, insmod returns, but driver locks up
> > waiting for FUNC_INIT to finish:
> > 
> > [  300.538859] [<c0502248>] (__schedule+0x610/0x764) from [<bf1fae24>] (__lbs_cmd+0xb8/0x130
> > [libertas])
> > [  300.548600] [<bf1fae24>] (__lbs_cmd+0xb8/0x130 [libertas]) from [<bf212474>]
> > (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio])
> > [  300.560398] [<bf212474>] (if_sdio_finish_power_on+0xec/0x1b0 [libertas_sdio]) from [<bf213230>]
> > (if_sdio_do_prog_firmware+0x414/0x454 [libertas_sdio])
> > [  300.574052] [<bf213230>] (if_sdio_do_prog_firmware+0x414/0x454 [libertas_sdio]) from [<bf1fffbc>]
> > (lbs_fw_loaded+0x24/0x58 [libertas])
> > [  300.586907] [<bf1fffbc>] (lbs_fw_loaded+0x24/0x58 [libertas]) from [<c02f02c0>]
> > (request_firmware_work_func+0xb0/0xf4)
> > [  300.597746] [<c02f02c0>] (request_firmware_work_func+0xb0/0xf4) from [<c003ae0c>]
> > (process_one_work+0x348/0x6a8)
> > [  300.608288] [<c003ae0c>] (process_one_work+0x348/0x6a8) from [<c003b408>]
> > (worker_thread+0x268/0x390)
> > [  300.617630] [<c003b408>] (worker_thread+0x268/0x390) from [<c00414b0>] (kthread+0xc0/0xd4)
> > [  300.625947] [<c00414b0>] (kthread+0xc0/0xd4) from [<c0008ce8>] (ret_from_fork+0x14/0x20)
> > [  300.634135] 2 locks held by kworker/0:1/19:
> > [  300.638383]  #0:  (events){.+.+.+}, at: [<c003accc>] process_one_work+0x208/0x6a8
> > [  300.646512]  #1:  ((&fw_work->work)){+.+.+.}, at: [<c003accc>] process_one_work+0x208/0x6a8
> 
> There seems to be a race condition in lbs_thread().
> 
> At line 582:
>  582                 if (!priv->fw_ready)
>  583                         continue;
> 
> The fw_ready is 0, so you never get the chance to execute the FUNC_INIT command.
> 
>  617                 /* Execute the next command */
>  618                 if (!priv->dnld_sent && !priv->cur_cmd)
>  619                         lbs_execute_next_command(priv);
> 
> 
> Could you try the following change?
> 
> diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libe
> index 739309e..8f5d977 100644
> --- a/drivers/net/wireless/libertas/if_sdio.c
> +++ b/drivers/net/wireless/libertas/if_sdio.c
> @@ -825,6 +825,8 @@ static void if_sdio_finish_power_on(struct if_sdio_card *car
> 
>         sdio_release_host(func);
> 
> +       priv->fw_ready = 1;
> +
>         /*
>          * FUNC_INIT is required for SD8688 WLAN/BT multiple functions
>          */
> @@ -839,7 +841,6 @@ static void if_sdio_finish_power_on(struct if_sdio_card *car
>                         netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n");
>         }
> 
> -       priv->fw_ready = 1;
>         wake_up(&card->pwron_waitq);
> 
>         if (!card->started) {

Thank you.
Everything seem to work fine for me with the patch applied.

Regards,
--
Lubo


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

* RE: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-02-24 18:31       ` Lubomir Rintel
@ 2013-02-25 23:21         ` Bing Zhao
  2013-02-26 15:33           ` Daniel Drake
  0 siblings, 1 reply; 9+ messages in thread
From: Bing Zhao @ 2013-02-25 23:21 UTC (permalink / raw)
  To: Lubomir Rintel, Daniel Drake
  Cc: Harro Haan, Dan Williams, libertas-dev, netdev, linux-wireless,
	John W. Linville, linux-kernel

SGkgRGFuaWVsLA0KDQo+ID4gVGhlcmUgc2VlbXMgdG8gYmUgYSByYWNlIGNvbmRpdGlvbiBpbiBs
YnNfdGhyZWFkKCkuDQo+ID4NCj4gPiBBdCBsaW5lIDU4MjoNCj4gPiAgNTgyICAgICAgICAgICAg
ICAgICBpZiAoIXByaXYtPmZ3X3JlYWR5KQ0KPiA+ICA1ODMgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7DQo+ID4NCj4gPiBUaGUgZndfcmVhZHkgaXMgMCwgc28geW91IG5ldmVyIGdl
dCB0aGUgY2hhbmNlIHRvIGV4ZWN1dGUgdGhlIEZVTkNfSU5JVCBjb21tYW5kLg0KPiA+DQo+ID4g
IDYxNyAgICAgICAgICAgICAgICAgLyogRXhlY3V0ZSB0aGUgbmV4dCBjb21tYW5kICovDQo+ID4g
IDYxOCAgICAgICAgICAgICAgICAgaWYgKCFwcml2LT5kbmxkX3NlbnQgJiYgIXByaXYtPmN1cl9j
bWQpDQo+ID4gIDYxOSAgICAgICAgICAgICAgICAgICAgICAgICBsYnNfZXhlY3V0ZV9uZXh0X2Nv
bW1hbmQocHJpdik7DQo+ID4NCj4gPg0KPiA+IENvdWxkIHlvdSB0cnkgdGhlIGZvbGxvd2luZyBj
aGFuZ2U/DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0
YXMvaWZfc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZQ0KPiA+IGluZGV4IDczOTMw
OWUuLjhmNWQ5NzcgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0
YXMvaWZfc2Rpby5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZf
c2Rpby5jDQo+ID4gQEAgLTgyNSw2ICs4MjUsOCBAQCBzdGF0aWMgdm9pZCBpZl9zZGlvX2Zpbmlz
aF9wb3dlcl9vbihzdHJ1Y3QgaWZfc2Rpb19jYXJkICpjYXINCj4gPg0KPiA+ICAgICAgICAgc2Rp
b19yZWxlYXNlX2hvc3QoZnVuYyk7DQo+ID4NCj4gPiArICAgICAgIHByaXYtPmZ3X3JlYWR5ID0g
MTsNCj4gPiArDQo+ID4gICAgICAgICAvKg0KPiA+ICAgICAgICAgICogRlVOQ19JTklUIGlzIHJl
cXVpcmVkIGZvciBTRDg2ODggV0xBTi9CVCBtdWx0aXBsZSBmdW5jdGlvbnMNCj4gPiAgICAgICAg
ICAqLw0KPiA+IEBAIC04MzksNyArODQxLDYgQEAgc3RhdGljIHZvaWQgaWZfc2Rpb19maW5pc2hf
cG93ZXJfb24oc3RydWN0IGlmX3NkaW9fY2FyZCAqY2FyDQo+ID4gICAgICAgICAgICAgICAgICAg
ICAgICAgbmV0ZGV2X2FsZXJ0KHByaXYtPmRldiwgIkNNRF9GVU5DX0lOSVQgY21kIGZhaWxlZFxu
Iik7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAtICAgICAgIHByaXYtPmZ3X3JlYWR5ID0gMTsN
Cj4gPiAgICAgICAgIHdha2VfdXAoJmNhcmQtPnB3cm9uX3dhaXRxKTsNCj4gPg0KPiA+ICAgICAg
ICAgaWYgKCFjYXJkLT5zdGFydGVkKSB7DQo+IA0KPiBUaGFuayB5b3UuDQo+IEV2ZXJ5dGhpbmcg
c2VlbSB0byB3b3JrIGZpbmUgZm9yIG1lIHdpdGggdGhlIHBhdGNoIGFwcGxpZWQuDQoNCkRvIHlv
dSBoYXZlIGFueSBjb25jZXJuIGZvciBPTFBDIHBsYXRmb3JtcyB3aXRoIGFib3ZlIGNoYW5nZT8g
SWYgaXQgZG9lc24ndCBzZWVtIHRvIGJyZWFrIE9MUEMgSSB3aWxsIHNlbmQgYSBwYXRjaCB0byB0
aGUgbGlzdC4NCg0KVGhhbmtzLA0KQmluZw0KDQo=

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

* Re: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-02-25 23:21         ` Bing Zhao
@ 2013-02-26 15:33           ` Daniel Drake
  2013-02-26 20:59             ` Bing Zhao
  0 siblings, 1 reply; 9+ messages in thread
From: Daniel Drake @ 2013-02-26 15:33 UTC (permalink / raw)
  To: Bing Zhao
  Cc: Lubomir Rintel, Harro Haan, Dan Williams, libertas-dev, netdev,
	linux-wireless, John W. Linville, linux-kernel

On Mon, Feb 25, 2013 at 5:21 PM, Bing Zhao <bzhao@marvell.com> wrote:
> Do you have any concern for OLPC platforms with above change? If it doesn't seem to break OLPC I will send a patch to the list.

Looks fine to me. Thanks for investigating.

Daniel

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

* RE: [PATCH] libertas sdio: remove CMD_FUNC_INIT call
  2013-02-26 15:33           ` Daniel Drake
@ 2013-02-26 20:59             ` Bing Zhao
  0 siblings, 0 replies; 9+ messages in thread
From: Bing Zhao @ 2013-02-26 20:59 UTC (permalink / raw)
  To: Daniel Drake
  Cc: Lubomir Rintel, Harro Haan, Dan Williams, libertas-dev, netdev,
	linux-wireless, John W. Linville, linux-kernel

Hi Daniel,

> > Do you have any concern for OLPC platforms with above change? If it doesn't seem to break OLPC I
> will send a patch to the list.
> 
> Looks fine to me. Thanks for investigating.

Thanks. I've just sent the patch.

Regards,
Bing

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

end of thread, other threads:[~2013-02-26 21:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-18  7:24 [PATCH] libertas sdio: remove CMD_FUNC_INIT call Lubomir Rintel
2013-01-18 20:28 ` Bing Zhao
2013-01-30 19:27   ` John W. Linville
2013-02-19  4:46   ` Lubomir Rintel
2013-02-21  1:59     ` Bing Zhao
2013-02-24 18:31       ` Lubomir Rintel
2013-02-25 23:21         ` Bing Zhao
2013-02-26 15:33           ` Daniel Drake
2013-02-26 20:59             ` Bing Zhao

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).