Search Linux Wireless

Re: [PATCH] ath9k_htc: don't use HZ for usb msg timeouts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@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@xxxxxxx> 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@xxxxxxxxxx>
>> ---
>>  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
>>
>>
>
>



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux