netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Oliver Neukum <oneukum@suse.com>
To: Hayes Wang <hayeswang@realtek.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	nic_swsd <nic_swsd@realtek.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Subject: Re: [PATCH net v2 2/2] r8152: reset device when tx timeout
Date: Wed, 29 Jul 2015 09:22:01 +0200	[thread overview]
Message-ID: <1438154521.9445.3.camel@suse.com> (raw)
In-Reply-To: <0835B3720019904CB8F7AA43166CEEB2F3C673@RTITMBSV03.realtek.com.tw>

On Wed, 2015-07-29 at 02:06 +0000, Hayes Wang wrote:
>  Oliver Neukum [mailto:oneukum@suse.com]
> > Sent: Tuesday, July 28, 2015 8:59 PM
> [...]
> > > > >  static void rtl8152_tx_timeout(struct net_device *netdev)  {
> > > > >         struct r8152 *tp = netdev_priv(netdev);
> > > > > -       int i;
> > > > >
> > > > >         netif_warn(tp, tx_err, netdev, "Tx timeout\n");
> > > > > -       for (i = 0; i < RTL8152_MAX_TX; i++)
> > > > > -               usb_unlink_urb(tp->tx_info[i].urb);
> > > > > +
> > > > > +       usb_queue_reset_device(tp->intf);
> > > > > +       cancel_delayed_work(&tp->schedule);
> > > >
> > > > Sorry to bother you again, but this looks wrong.
> > > > You want to cancel first. There is no point in running any work
> > > > before the reset is done. It will undo any progress anyway.
> > >
> > > Excuse me. Do you mean I don't need cancel the other work because it
> > > wouldn't be run before the reset is finished?
> > 
> > No, whatever the other work will do, the reset will undo.
> 
> Excuse me. I don't understand why I couldn't use usb_queue_reset_device() directly.
> Why the reset will undo? 

Now, I think I got the reason for the confusion.

You are using cancel_delayed_work(&tp->schedule); after you queue
a reset. Therefore the order in which the work and the reset will
be executed is undefined. Usually the scheduled work will be canceled,
but not always.

That is not good.

	Regards
		Oliver

  reply	other threads:[~2015-07-29  7:22 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-28  7:36 [PATCH net 0/2] r8152: device reset Hayes Wang
2015-07-28  7:36 ` [PATCH net 1/2] r8152: add pre_reset and post_reset Hayes Wang
2015-07-28  8:52   ` Oliver Neukum
     [not found]     ` <1438073562.11934.2.camel-IBi9RG/b67k@public.gmane.org>
2015-07-28  9:52       ` Hayes Wang
2015-07-28 12:05         ` Oliver Neukum
2015-07-28  7:36 ` [PATCH net 2/2] r8152: reset device when tx timeout Hayes Wang
2015-07-28  8:56   ` Oliver Neukum
2015-07-28  9:52     ` Hayes Wang
2015-07-28 12:08 ` [PATCH net v2 0/2] r8152: device reset Hayes Wang
2015-07-28 12:08   ` [PATCH net v2 1/2] r8152: add pre_reset and post_reset Hayes Wang
2015-07-28 12:08   ` [PATCH net v2 2/2] r8152: reset device when tx timeout Hayes Wang
2015-07-28 12:14     ` Oliver Neukum
2015-07-28 12:31       ` Hayes Wang
2015-07-28 12:58         ` Oliver Neukum
2015-07-29  2:06           ` Hayes Wang
2015-07-29  7:22             ` Oliver Neukum [this message]
2015-07-29 11:09               ` Hayes Wang
2015-07-29 12:39 ` [PATCH net v3 0/2] r8152: device reset Hayes Wang
2015-07-29 12:39   ` [PATCH net v3 1/2] r8152: add pre_reset and post_reset Hayes Wang
2015-07-29 12:39   ` [PATCH net v3 2/2] r8152: reset device when tx timeout Hayes Wang
2015-07-30 21:04   ` [PATCH net v3 0/2] r8152: device reset David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1438154521.9445.3.camel@suse.com \
    --to=oneukum@suse.com \
    --cc=hayeswang@realtek.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nic_swsd@realtek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).