2013-07-19 18:16:27

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH 0/2] ath9k_htc fixes, resend

Hi John,
this patches needed to fix firmare/adapter hang issue on
reboot or module reload.

Oleksij Rempel (2):
ath9k_htc: do some initial hardware configuration
ath9k_htc: reboot firmware if it was loaded

drivers/net/wireless/ath/ath9k/hif_usb.c | 4 +++-
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)

--
1.8.1.2



2013-07-19 23:44:02

by Stefan Lippers-Hollmann

[permalink] [raw]
Subject: Re: [PATCH 0/2] ath9k_htc fixes, resend

Hi

On Friday 19 July 2013, Oleksij Rempel wrote:
> Hi John,
> this patches needed to fix firmare/adapter hang issue on
> reboot or module reload.
>
> Oleksij Rempel (2):
> ath9k_htc: do some initial hardware configuration
> ath9k_htc: reboot firmware if it was loaded

Given that this is a longstanding issue, affecting actual users, I'd
suggest to "Cc: <[email protected]>" for these patches. They
should meet the bar even under the new, stricter, interpretation of
the -stable rules and are small and self contained.

Regards
Stefan Lippers-Hollmann

2013-07-20 11:40:38

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH 0/2] ath9k_htc fixes, resend

From: Oleksij Rempel <[email protected]>

Am 20.07.2013 01:43, schrieb Stefan Lippers-Hollmann:
> Hi
>
> On Friday 19 July 2013, Oleksij Rempel wrote:
>> Hi John,
>> this patches needed to fix firmare/adapter hang issue on
>> reboot or module reload.
>>
>> Oleksij Rempel (2):
>> ath9k_htc: do some initial hardware configuration
>> ath9k_htc: reboot firmware if it was loaded
>
> Given that this is a longstanding issue, affecting actual users, I'd
> suggest to "Cc: <[email protected]>" for these patches. They
> should meet the bar even under the new, stricter, interpretation of
> the -stable rules and are small and self contained.

ok, thank you for the tip.

--
Regards,
Oleksij

2013-07-19 18:16:33

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH 2/2] ath9k_htc: reboot firmware if it was loaded

Currently ath9k_htc will reboot firmware only if interface was
ever started. Which lead to the problem in case where interface
was never started but module need to be reloaded.

This patch will partially fix bug "ath9k_htc: Target is unresponsive"
https://github.com/qca/open-ath9k-htc-firmware/issues/1

Reproduction case:
- plug adapter
- make sure nothing will touch it. Stop Networkmanager or blacklist mac address of this adapter.
- rmmod ath9k_htc; sleep 1; modprobe ath9k_htc

Signed-off-by: Oleksij Rempel <[email protected]>
---
drivers/net/wireless/ath/ath9k/hif_usb.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index 2469db5..5205a36 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -1295,7 +1295,9 @@ static void ath9k_hif_usb_disconnect(struct usb_interface *interface)

usb_set_intfdata(interface, NULL);

- if (!unplugged && (hif_dev->flags & HIF_USB_START))
+ /* If firmware was loaded we should drop it
+ * go back to first stage bootloader. */
+ if (!unplugged && (hif_dev->flags & HIF_USB_READY))
ath9k_hif_usb_reboot(udev);

kfree(hif_dev);
--
1.8.1.2


2013-07-10 19:27:34

by Adrian Chadd

[permalink] [raw]
Subject: Re: [PATCH 2/2] ath9k_htc: reboot firmware if it was loaded

Great catch!


-adrian

On 9 July 2013 23:40, Oleksij Rempel <[email protected]> wrote:
> Currently ath9k_htc will reboot firmware only if interface was
> ever started. Which lead to the problem in case where interface
> was never started but module need to be reloaded.
>
> This patch will partially fix bug "ath9k_htc: Target is unresponsive"
> https://github.com/qca/open-ath9k-htc-firmware/issues/1
>
> Reproduction case:
> - plug adapter
> - make sure nothing will touch it. Stop Networkmanager or blacklist mac address of this adapter.
> - rmmod ath9k_htc; sleep 1; modprobe ath9k_htc
>
> Signed-off-by: Oleksij Rempel <[email protected]>
> ---
> drivers/net/wireless/ath/ath9k/hif_usb.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
> index 2469db5..5205a36 100644
> --- a/drivers/net/wireless/ath/ath9k/hif_usb.c
> +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
> @@ -1295,7 +1295,9 @@ static void ath9k_hif_usb_disconnect(struct usb_interface *interface)
>
> usb_set_intfdata(interface, NULL);
>
> - if (!unplugged && (hif_dev->flags & HIF_USB_START))
> + /* If firmware was loaded we should drop it
> + * go back to first stage bootloader. */
> + if (!unplugged && (hif_dev->flags & HIF_USB_READY))
> ath9k_hif_usb_reboot(udev);
>
> kfree(hif_dev);
> --
> 1.8.1.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2013-07-19 18:16:29

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH 1/2] ath9k_htc: do some initial hardware configuration

Currently we configure harwdare and clock, only after
interface start. In this case, if we reload module or
reboot PC without configuring adapter, firmware will freeze.
There is no software way to reset adpter.

This patch add initial configuration and set it in
disabled state, to avoid this freeze. Behaviour of this patch
should be similar to: ifconfig wlan0 up; ifconfig wlan0 down.

Bug: https://github.com/qca/open-ath9k-htc-firmware/issues/1
Tested-by: Bo Shi <[email protected]>
Signed-off-by: Oleksij Rempel <[email protected]>
---
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
index 71a183f..c3676bf 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
@@ -861,6 +861,7 @@ static int ath9k_init_device(struct ath9k_htc_priv *priv,
if (error != 0)
goto err_rx;

+ ath9k_hw_disable(priv->ah);
#ifdef CONFIG_MAC80211_LEDS
/* must be initialized before ieee80211_register_hw */
priv->led_cdev.default_trigger = ieee80211_create_tpt_led_trigger(priv->hw,
--
1.8.1.2