diff mbox

usbnet: fix status interrupt urb handling

Message ID 1384270481-30972-1-git-send-email-nbd@openwrt.org
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Felix Fietkau Nov. 12, 2013, 3:34 p.m. UTC
Since commit 7b0c5f21f348a66de495868b8df0284e8dfd6bbf
"sierra_net: keep status interrupt URB active", sierra_net triggers
status interrupt polling before the net_device is opened (in order to
properly receive the sync message response).

To be able to receive further interrupts, the interrupt urb needs to be
re-submitted, so this patch removes the bogus check for netif_running().

Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
---
 drivers/net/usb/usbnet.c | 3 ---
 1 file changed, 3 deletions(-)

Comments

Dan Williams Nov. 12, 2013, 5:37 p.m. UTC | #1
On Tue, 2013-11-12 at 16:34 +0100, Felix Fietkau wrote:
> Since commit 7b0c5f21f348a66de495868b8df0284e8dfd6bbf
> "sierra_net: keep status interrupt URB active", sierra_net triggers
> status interrupt polling before the net_device is opened (in order to
> properly receive the sync message response).
> 
> To be able to receive further interrupts, the interrupt urb needs to be
> re-submitted, so this patch removes the bogus check for netif_running().
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Tested-by: Dan Williams <dcbw@redhat.com>

> ---
>  drivers/net/usb/usbnet.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
> index 90a429b..8494bb5 100644
> --- a/drivers/net/usb/usbnet.c
> +++ b/drivers/net/usb/usbnet.c
> @@ -204,9 +204,6 @@ static void intr_complete (struct urb *urb)
>  		break;
>  	}
>  
> -	if (!netif_running (dev->net))
> -		return;
> -
>  	status = usb_submit_urb (urb, GFP_ATOMIC);
>  	if (status != 0)
>  		netif_err(dev, timer, dev->net,


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Oliver Neukum Nov. 13, 2013, 8:01 a.m. UTC | #2
On Tue, 2013-11-12 at 16:34 +0100, Felix Fietkau wrote:
> Since commit 7b0c5f21f348a66de495868b8df0284e8dfd6bbf
> "sierra_net: keep status interrupt URB active", sierra_net triggers
> status interrupt polling before the net_device is opened (in order to
> properly receive the sync message response).
> 
> To be able to receive further interrupts, the interrupt urb needs to be
> re-submitted, so this patch removes the bogus check for netif_running().

And what about the other drivers for whom this patch means added
traffic? This fix is done with a sledge hammer and cares only about
some drivers.
I'd much prefer you introduced a driver flag for this.

	Regards
		Oliver


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjørn Mork Nov. 13, 2013, 9:09 a.m. UTC | #3
Oliver Neukum <oliver@neukum.org> writes:

> On Tue, 2013-11-12 at 16:34 +0100, Felix Fietkau wrote:
>> Since commit 7b0c5f21f348a66de495868b8df0284e8dfd6bbf
>> "sierra_net: keep status interrupt URB active", sierra_net triggers
>> status interrupt polling before the net_device is opened (in order to
>> properly receive the sync message response).
>> 
>> To be able to receive further interrupts, the interrupt urb needs to be
>> re-submitted, so this patch removes the bogus check for netif_running().
>
> And what about the other drivers for whom this patch means added
> traffic? This fix is done with a sledge hammer and cares only about
> some drivers.

usbnet_stop calls usbnet_status_stop which kills the status URB, unless
the driver explicitly asked for it not to be killed.  And the callback
properly returns on status == -ENOENT, before the lines in question.

So I think Felix is right.   None of the other drivers will ever hit the
code he deletes. It only affects sierra_net, and that is unwanted.



Bjørn
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Oliver Neukum Nov. 13, 2013, 9:15 a.m. UTC | #4
On Wed, 2013-11-13 at 10:09 +0100, Bjørn Mork wrote:
> Oliver Neukum <oliver@neukum.org> writes:
> 
> > On Tue, 2013-11-12 at 16:34 +0100, Felix Fietkau wrote:
> >> Since commit 7b0c5f21f348a66de495868b8df0284e8dfd6bbf
> >> "sierra_net: keep status interrupt URB active", sierra_net triggers
> >> status interrupt polling before the net_device is opened (in order to
> >> properly receive the sync message response).
> >> 
> >> To be able to receive further interrupts, the interrupt urb needs to be
> >> re-submitted, so this patch removes the bogus check for netif_running().
> >
> > And what about the other drivers for whom this patch means added
> > traffic? This fix is done with a sledge hammer and cares only about
> > some drivers.
> 
> usbnet_stop calls usbnet_status_stop which kills the status URB, unless
> the driver explicitly asked for it not to be killed.  And the callback
> properly returns on status == -ENOENT, before the lines in question.
> 
> So I think Felix is right.   None of the other drivers will ever hit the
> code he deletes. It only affects sierra_net, and that is unwanted.

True. I take back the objection.

	Regards
		Oliver


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller Nov. 14, 2013, 7:33 a.m. UTC | #5
From: Felix Fietkau <nbd@openwrt.org>
Date: Tue, 12 Nov 2013 16:34:41 +0100

> Since commit 7b0c5f21f348a66de495868b8df0284e8dfd6bbf
> "sierra_net: keep status interrupt URB active", sierra_net triggers
> status interrupt polling before the net_device is opened (in order to
> properly receive the sync message response).
> 
> To be able to receive further interrupts, the interrupt urb needs to be
> re-submitted, so this patch removes the bogus check for netif_running().
> 
> Signed-off-by: Felix Fietkau <nbd@openwrt.org>

Applied and queued up for -stable, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 90a429b..8494bb5 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -204,9 +204,6 @@  static void intr_complete (struct urb *urb)
 		break;
 	}
 
-	if (!netif_running (dev->net))
-		return;
-
 	status = usb_submit_urb (urb, GFP_ATOMIC);
 	if (status != 0)
 		netif_err(dev, timer, dev->net,