linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 7/9] ath9k_htc: Use USB reboot
@ 2010-04-22  3:43 Sujith
  2010-04-22 14:21 ` Ming Lei
  0 siblings, 1 reply; 3+ messages in thread
From: Sujith @ 2010-04-22  3:43 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless

So, apparently there is a USB reboot command
that the target accepts. Using this instead of
usb_reset_device() fixes the issue of "descriptor read error"
that pops up on repeated load/unload.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
---
 drivers/net/wireless/ath/ath9k/hif_usb.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index cee5feb..ce13e08 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -889,6 +889,17 @@ err_alloc:
 	return ret;
 }
 
+static void ath9k_hif_usb_reboot(struct usb_device *udev)
+{
+	u32 cmd = 0xffffffff;
+	int ret;
+
+	ret = usb_bulk_msg(udev, usb_sndbulkpipe(udev, USB_REG_OUT_PIPE),
+			   &cmd, sizeof(cmd), NULL, HZ);
+	if (ret)
+		dev_err(&udev->dev, "ath9k_htc: USB reboot failed\n");
+}
+
 static void ath9k_hif_usb_disconnect(struct usb_interface *interface)
 {
 	struct usb_device *udev = interface_to_usbdev(interface);
@@ -903,7 +914,7 @@ static void ath9k_hif_usb_disconnect(struct usb_interface *interface)
 	}
 
 	if (hif_dev->flags & HIF_USB_START)
-		usb_reset_device(udev);
+		ath9k_hif_usb_reboot(udev);
 
 	kfree(hif_dev);
 	dev_info(&udev->dev, "ath9k_htc: USB layer deinitialized\n");
-- 
1.7.0.5


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

* Re: [PATCH 7/9] ath9k_htc: Use USB reboot
  2010-04-22  3:43 [PATCH 7/9] ath9k_htc: Use USB reboot Sujith
@ 2010-04-22 14:21 ` Ming Lei
  2010-04-23  4:53   ` Sujith
  0 siblings, 1 reply; 3+ messages in thread
From: Ming Lei @ 2010-04-22 14:21 UTC (permalink / raw)
  To: Sujith; +Cc: linville, linux-wireless

2010/4/22 Sujith <Sujith.Manoharan@atheros.com>:
> So, apparently there is a USB reboot command
> that the target accepts. Using this instead of
> usb_reset_device() fixes the issue of "descriptor read error"
> that pops up on repeated load/unload.
>
> Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
> ---
>  drivers/net/wireless/ath/ath9k/hif_usb.c |   13 ++++++++++++-
>  1 files changed, 12 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
> index cee5feb..ce13e08 100644
> --- a/drivers/net/wireless/ath/ath9k/hif_usb.c
> +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
> @@ -889,6 +889,17 @@ err_alloc:
>        return ret;
>  }
>
> +static void ath9k_hif_usb_reboot(struct usb_device *udev)
> +{
> +       u32 cmd = 0xffffffff;
> +       int ret;
> +
> +       ret = usb_bulk_msg(udev, usb_sndbulkpipe(udev, USB_REG_OUT_PIPE),
> +                          &cmd, sizeof(cmd), NULL, HZ);

The buffer passed to usb hcd should not be allocated from stack since
it will be DMAed to usb host controller. The 'cmd' should be allocated by
kmalloc even though it is only 4byte.


-- 
Lei Ming

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

* Re: [PATCH 7/9] ath9k_htc: Use USB reboot
  2010-04-22 14:21 ` Ming Lei
@ 2010-04-23  4:53   ` Sujith
  0 siblings, 0 replies; 3+ messages in thread
From: Sujith @ 2010-04-23  4:53 UTC (permalink / raw)
  To: Ming Lei; +Cc: linville, linux-wireless

Ming Lei wrote:
> The buffer passed to usb hcd should not be allocated from stack since
> it will be DMAed to usb host controller. The 'cmd' should be allocated by
> kmalloc even though it is only 4byte.

Indeed, I'll send an updated patch.

Sujith

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

end of thread, other threads:[~2010-04-23  4:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-22  3:43 [PATCH 7/9] ath9k_htc: Use USB reboot Sujith
2010-04-22 14:21 ` Ming Lei
2010-04-23  4:53   ` Sujith

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