ath9k-devel.lists.ath9k.org archive mirror
 help / color / mirror / Atom feed
* [ath9k-devel] [PATCH] ath9k_htc: don't use HZ for usb msg timeouts
@ 2016-11-28  4:33 Anthony Romano
  2016-11-28 15:34 ` Oleksij Rempel
  2016-12-01 11:20 ` [ath9k-devel] " Kalle Valo
  0 siblings, 2 replies; 5+ messages in thread
From: Anthony Romano @ 2016-11-28  4:33 UTC (permalink / raw)
  To: ath9k-devel

The usb_*_msg() functions expect a timeout in msecs but are given HZ,
which is ticks per second. If HZ=100, firmware download often times out
when there is modest USB utilization and the device fails to initialize.

Replaces HZ in usb_*_msg timeouts with 1000 msec since HZ is one second
for timeouts in jiffies.

Signed-off-by: Anthony Romano <anthony.romano@coreos.com>
---
 drivers/net/wireless/ath/ath9k/hif_usb.c | 9 +++++----
 drivers/net/wireless/ath/ath9k/hif_usb.h | 2 ++
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index e1c338cb9cb5..de2d212f39ec 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -997,7 +997,8 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
 		err = usb_control_msg(hif_dev->udev,
 				      usb_sndctrlpipe(hif_dev->udev, 0),
 				      FIRMWARE_DOWNLOAD, 0x40 | USB_DIR_OUT,
-				      addr >> 8, 0, buf, transfer, HZ);
+				      addr >> 8, 0, buf, transfer,
+				      USB_MSG_TIMEOUT);
 		if (err < 0) {
 			kfree(buf);
 			return err;
@@ -1020,7 +1021,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
 	err = usb_control_msg(hif_dev->udev, usb_sndctrlpipe(hif_dev->udev, 0),
 			      FIRMWARE_DOWNLOAD_COMP,
 			      0x40 | USB_DIR_OUT,
-			      firm_offset >> 8, 0, NULL, 0, HZ);
+			      firm_offset >> 8, 0, NULL, 0, USB_MSG_TIMEOUT);
 	if (err)
 		return -EIO;
 
@@ -1249,7 +1250,7 @@ static int send_eject_command(struct usb_interface *interface)
 
 	dev_info(&udev->dev, "Ejecting storage device...\n");
 	r = usb_bulk_msg(udev, usb_sndbulkpipe(udev, bulk_out_ep),
-		cmd, 31, NULL, 2000);
+		cmd, 31, NULL, 2 * USB_MSG_TIMEOUT);
 	kfree(cmd);
 	if (r)
 		return r;
@@ -1314,7 +1315,7 @@ static void ath9k_hif_usb_reboot(struct usb_device *udev)
 		return;
 
 	ret = usb_interrupt_msg(udev, usb_sndintpipe(udev, USB_REG_OUT_PIPE),
-			   buf, 4, NULL, HZ);
+			   buf, 4, NULL, USB_MSG_TIMEOUT);
 	if (ret)
 		dev_err(&udev->dev, "ath9k_htc: USB reboot failed\n");
 
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.h b/drivers/net/wireless/ath/ath9k/hif_usb.h
index 7c2ef7ecd98b..7846916aa01d 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.h
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.h
@@ -71,6 +71,8 @@ extern int htc_use_dev_fw;
 #define USB_REG_IN_PIPE   3
 #define USB_REG_OUT_PIPE  4
 
+#define USB_MSG_TIMEOUT 1000 /* (ms) */
+
 #define HIF_USB_MAX_RXPIPES 2
 #define HIF_USB_MAX_TXPIPES 4
 
-- 
2.11.0.rc2

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

* [ath9k-devel] [PATCH] ath9k_htc: don't use HZ for usb msg timeouts
  2016-11-28  4:33 [ath9k-devel] [PATCH] ath9k_htc: don't use HZ for usb msg timeouts Anthony Romano
@ 2016-11-28 15:34 ` Oleksij Rempel
  2016-11-29  9:52   ` Anthony Romano
  2016-12-01 11:20 ` [ath9k-devel] " Kalle Valo
  1 sibling, 1 reply; 5+ messages in thread
From: Oleksij Rempel @ 2016-11-28 15:34 UTC (permalink / raw)
  To: ath9k-devel

Hi Anthony,

Am 28.11.2016 um 05:27 schrieb Anthony Romano:
> The usb_*_msg() functions expect a timeout in msecs but are given HZ,
> which is ticks per second. If HZ=100, firmware download often times out
> when there is modest USB utilization and the device fails to initialize.

> Replaces HZ in usb_*_msg timeouts with 1000 msec since HZ is one second
> for timeouts in jiffies.

wow..
This fix allow you use 4 adapter at same time?

> Signed-off-by: Anthony Romano <anthony.romano@coreos.com>
> ---
>  drivers/net/wireless/ath/ath9k/hif_usb.c | 9 +++++----
>  drivers/net/wireless/ath/ath9k/hif_usb.h | 2 ++
>  2 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
> index e1c338cb9cb5..de2d212f39ec 100644
> --- a/drivers/net/wireless/ath/ath9k/hif_usb.c
> +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
> @@ -997,7 +997,8 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
>  		err = usb_control_msg(hif_dev->udev,
>  				      usb_sndctrlpipe(hif_dev->udev, 0),
>  				      FIRMWARE_DOWNLOAD, 0x40 | USB_DIR_OUT,
> -				      addr >> 8, 0, buf, transfer, HZ);
> +				      addr >> 8, 0, buf, transfer,
> +				      USB_MSG_TIMEOUT);
>  		if (err < 0) {
>  			kfree(buf);
>  			return err;
> @@ -1020,7 +1021,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
>  	err = usb_control_msg(hif_dev->udev, usb_sndctrlpipe(hif_dev->udev, 0),
>  			      FIRMWARE_DOWNLOAD_COMP,
>  			      0x40 | USB_DIR_OUT,
> -			      firm_offset >> 8, 0, NULL, 0, HZ);
> +			      firm_offset >> 8, 0, NULL, 0, USB_MSG_TIMEOUT);
>  	if (err)
>  		return -EIO;
>  
> @@ -1249,7 +1250,7 @@ static int send_eject_command(struct usb_interface *interface)
>  
>  	dev_info(&udev->dev, "Ejecting storage device...\n");
>  	r = usb_bulk_msg(udev, usb_sndbulkpipe(udev, bulk_out_ep),
> -		cmd, 31, NULL, 2000);
> +		cmd, 31, NULL, 2 * USB_MSG_TIMEOUT);
>  	kfree(cmd);
>  	if (r)
>  		return r;
> @@ -1314,7 +1315,7 @@ static void ath9k_hif_usb_reboot(struct usb_device *udev)
>  		return;
>  
>  	ret = usb_interrupt_msg(udev, usb_sndintpipe(udev, USB_REG_OUT_PIPE),
> -			   buf, 4, NULL, HZ);
> +			   buf, 4, NULL, USB_MSG_TIMEOUT);
>  	if (ret)
>  		dev_err(&udev->dev, "ath9k_htc: USB reboot failed\n");
>  
> diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.h b/drivers/net/wireless/ath/ath9k/hif_usb.h
> index 7c2ef7ecd98b..7846916aa01d 100644
> --- a/drivers/net/wireless/ath/ath9k/hif_usb.h
> +++ b/drivers/net/wireless/ath/ath9k/hif_usb.h
> @@ -71,6 +71,8 @@ extern int htc_use_dev_fw;
>  #define USB_REG_IN_PIPE   3
>  #define USB_REG_OUT_PIPE  4
>  
> +#define USB_MSG_TIMEOUT 1000 /* (ms) */
> +
>  #define HIF_USB_MAX_RXPIPES 2
>  #define HIF_USB_MAX_TXPIPES 4
>  
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: OpenPGP digital signature
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20161128/dae0a7aa/attachment.pgp 

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

* [ath9k-devel] [PATCH] ath9k_htc: don't use HZ for usb msg timeouts
  2016-11-28 15:34 ` Oleksij Rempel
@ 2016-11-29  9:52   ` Anthony Romano
  2016-11-29 15:12     ` Oleksij Rempel
  0 siblings, 1 reply; 5+ messages in thread
From: Anthony Romano @ 2016-11-29  9:52 UTC (permalink / raw)
  To: ath9k-devel

Hi Oleksij,

I put 4 ar9271's on a 4 port hub into monitor mode for you and all
interfaces are simultaneously collecting packets. My cheap USB power
meter reads 4.37v at 650mA between the hub and the host, so it's pushing
the limit but appears stable.

On Mon, Nov 28, 2016 at 7:34 AM, Oleksij Rempel <fishor@gmx.net> wrote:
> Hi Anthony,
>
> Am 28.11.2016 um 05:27 schrieb Anthony Romano:
>> The usb_*_msg() functions expect a timeout in msecs but are given HZ,
>> which is ticks per second. If HZ=100, firmware download often times out
>> when there is modest USB utilization and the device fails to initialize.
>
>> Replaces HZ in usb_*_msg timeouts with 1000 msec since HZ is one second
>> for timeouts in jiffies.
>
> wow..
> This fix allow you use 4 adapter at same time?
>
>> Signed-off-by: Anthony Romano <anthony.romano@coreos.com>
>> ---
>>  drivers/net/wireless/ath/ath9k/hif_usb.c | 9 +++++----
>>  drivers/net/wireless/ath/ath9k/hif_usb.h | 2 ++
>>  2 files changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
>> index e1c338cb9cb5..de2d212f39ec 100644
>> --- a/drivers/net/wireless/ath/ath9k/hif_usb.c
>> +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
>> @@ -997,7 +997,8 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
>>               err = usb_control_msg(hif_dev->udev,
>>                                     usb_sndctrlpipe(hif_dev->udev, 0),
>>                                     FIRMWARE_DOWNLOAD, 0x40 | USB_DIR_OUT,
>> -                                   addr >> 8, 0, buf, transfer, HZ);
>> +                                   addr >> 8, 0, buf, transfer,
>> +                                   USB_MSG_TIMEOUT);
>>               if (err < 0) {
>>                       kfree(buf);
>>                       return err;
>> @@ -1020,7 +1021,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
>>       err = usb_control_msg(hif_dev->udev, usb_sndctrlpipe(hif_dev->udev, 0),
>>                             FIRMWARE_DOWNLOAD_COMP,
>>                             0x40 | USB_DIR_OUT,
>> -                           firm_offset >> 8, 0, NULL, 0, HZ);
>> +                           firm_offset >> 8, 0, NULL, 0, USB_MSG_TIMEOUT);
>>       if (err)
>>               return -EIO;
>>
>> @@ -1249,7 +1250,7 @@ static int send_eject_command(struct usb_interface *interface)
>>
>>       dev_info(&udev->dev, "Ejecting storage device...\n");
>>       r = usb_bulk_msg(udev, usb_sndbulkpipe(udev, bulk_out_ep),
>> -             cmd, 31, NULL, 2000);
>> +             cmd, 31, NULL, 2 * USB_MSG_TIMEOUT);
>>       kfree(cmd);
>>       if (r)
>>               return r;
>> @@ -1314,7 +1315,7 @@ static void ath9k_hif_usb_reboot(struct usb_device *udev)
>>               return;
>>
>>       ret = usb_interrupt_msg(udev, usb_sndintpipe(udev, USB_REG_OUT_PIPE),
>> -                        buf, 4, NULL, HZ);
>> +                        buf, 4, NULL, USB_MSG_TIMEOUT);
>>       if (ret)
>>               dev_err(&udev->dev, "ath9k_htc: USB reboot failed\n");
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.h b/drivers/net/wireless/ath/ath9k/hif_usb.h
>> index 7c2ef7ecd98b..7846916aa01d 100644
>> --- a/drivers/net/wireless/ath/ath9k/hif_usb.h
>> +++ b/drivers/net/wireless/ath/ath9k/hif_usb.h
>> @@ -71,6 +71,8 @@ extern int htc_use_dev_fw;
>>  #define USB_REG_IN_PIPE   3
>>  #define USB_REG_OUT_PIPE  4
>>
>> +#define USB_MSG_TIMEOUT 1000 /* (ms) */
>> +
>>  #define HIF_USB_MAX_RXPIPES 2
>>  #define HIF_USB_MAX_TXPIPES 4
>>
>>
>
>

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

* [ath9k-devel] [PATCH] ath9k_htc: don't use HZ for usb msg timeouts
  2016-11-29  9:52   ` Anthony Romano
@ 2016-11-29 15:12     ` Oleksij Rempel
  0 siblings, 0 replies; 5+ messages in thread
From: Oleksij Rempel @ 2016-11-29 15:12 UTC (permalink / raw)
  To: ath9k-devel

Am 29.11.2016 um 10:45 schrieb Anthony Romano:
> Hi Oleksij,
> 
> I put 4 ar9271's on a 4 port hub into monitor mode for you and all
> interfaces are simultaneously collecting packets. My cheap USB power
> meter reads 4.37v at 650mA between the hub and the host, so it's pushing
> the limit but appears stable.

Great work, thank you!

> On Mon, Nov 28, 2016 at 7:34 AM, Oleksij Rempel <fishor@gmx.net> wrote:
>> Hi Anthony,
>>
>> Am 28.11.2016 um 05:27 schrieb Anthony Romano:
>>> The usb_*_msg() functions expect a timeout in msecs but are given HZ,
>>> which is ticks per second. If HZ=100, firmware download often times out
>>> when there is modest USB utilization and the device fails to initialize.
>>
>>> Replaces HZ in usb_*_msg timeouts with 1000 msec since HZ is one second
>>> for timeouts in jiffies.
>>
>> wow..
>> This fix allow you use 4 adapter at same time?
>>> Signed-off-by: Anthony Romano <anthony.roman@coreos.com>

Acked-by: Oleksij Rempel <linux@rempel-privat.de>



-- 
Regards,
Oleksij

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: OpenPGP digital signature
Url : http://lists.ath9k.org/pipermail/ath9k-devel/attachments/20161129/4e3f1ebf/attachment.pgp 

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

* [ath9k-devel] ath9k_htc: don't use HZ for usb msg timeouts
  2016-11-28  4:33 [ath9k-devel] [PATCH] ath9k_htc: don't use HZ for usb msg timeouts Anthony Romano
  2016-11-28 15:34 ` Oleksij Rempel
@ 2016-12-01 11:20 ` Kalle Valo
  1 sibling, 0 replies; 5+ messages in thread
From: Kalle Valo @ 2016-12-01 11:20 UTC (permalink / raw)
  To: ath9k-devel

Anthony Romano <anthony.romano@coreos.com> wrote:
> The usb_*_msg() functions expect a timeout in msecs but are given HZ,
> which is ticks per second. If HZ=100, firmware download often times out
> when there is modest USB utilization and the device fails to initialize.
> 
> Replaces HZ in usb_*_msg timeouts with 1000 msec since HZ is one second
> for timeouts in jiffies.
> 
> Signed-off-by: Anthony Romano <anthony.romano@coreos.com>
> Acked-by: Oleksij Rempel <linux@rempel-privat.de>

Patch applied to ath-next branch of ath.git, thanks.

982a6151f6f1 ath9k_htc: don't use HZ for usb msg timeouts

-- 
https://patchwork.kernel.org/patch/9449097/

Documentation about submitting wireless patches and checking status
from patchwork:

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

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

end of thread, other threads:[~2016-12-01 11:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-28  4:33 [ath9k-devel] [PATCH] ath9k_htc: don't use HZ for usb msg timeouts Anthony Romano
2016-11-28 15:34 ` Oleksij Rempel
2016-11-29  9:52   ` Anthony Romano
2016-11-29 15:12     ` Oleksij Rempel
2016-12-01 11:20 ` [ath9k-devel] " 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).