mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Alan Stern <stern@rowland.harvard.edu>
To: Michal Pecio <michal.pecio@gmail.com>
Cc: Julian Oes <julian@oes.ch>,
	oneukum@suse.com, gregkh@linuxfoundation.org, johan@kernel.org,
	linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: [PATCH v2] USB: serial: generic: recover from a stalled bulk-in endpoint
Date: Wed, 2 Sep 2026 10:33:13 -0400	[thread overview]
Message-ID: <bcc0f43a-3285-4ede-8bf5-fb9155d44e45@rowland.harvard.edu> (raw)
In-Reply-To: <20260902064204.1a47cd73.michal.pecio@gmail.com>

On Wed, Sep 02, 2026 at 06:42:04AM +0200, Michal Pecio wrote:
> What you are probably seeing is USB 2.0 hub(s) returning STALL
> handshake when a transaction attempt with downstream low/full-speed
> device fails three times. See USB 2.0 section 11.17.1 page 364.
> 
> If that's the case, the device endpoint isn't actually halted and you
> would see the traffic resume if you simply ignored the error and kept
> resubmitting until communication is restored.
> 
> That being said, calling usb_clear_halt() is indeed the only recovery
> supported by USB specs, both for -EPIPE and -EPROTO or similar. Linux
> has traditionally ignored this and things are quite broken sometimes,
> particularly with xhci-hcd, even if you call usb_clear_halt().
> 
> I suppose you can try this and see how it works, and if you run into
> xhci-hcd bugs we could try to fix them too. The -EPIPE case is easier
> because drivers don't rely on out of spec behavior of the USB stack.
> 
> Related discussion: (gonna need *a lot* of popcorn for that one)
> https://lore.kernel.org/linux-usb/261996a8-7ad4-4df2-a469-f6602da71255@suse.com/
> 
> Alan Stern tried to come up with some solution in USB core, but not sure
> how far that got.

For what it's worth, I did get started on that project and made some 
good progress.  But it started becoming rather complicated, particularly 
when taking into account that the core would need to stop trying to send 
Clear-Halt requests when it's about to do a Set-Interface or 
Set-Configuration, or handle a disconnection.  Then I got distracted 
with other things and never finished that part of the patch.

Maybe I can find time to go back and work on it some more.  It's likely 
to take a while...

Alan Stern

      parent reply	other threads:[~2026-09-02 14:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-01  3:49 Julian Oes
2026-09-01  4:33 ` Greg Kroah-Hartman
2026-09-01 22:44   ` Julian Oes
2026-09-01  8:28 ` Oliver Neukum
2026-09-01 23:13   ` Julian Oes
2026-09-02  4:42     ` Michal Pecio
2026-09-02  8:40       ` Oliver Neukum
2026-09-02 14:33       ` Alan Stern [this message]

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=bcc0f43a-3285-4ede-8bf5-fb9155d44e45@rowland.harvard.edu \
    --to=stern@rowland.harvard.edu \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=julian@oes.ch \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=michal.pecio@gmail.com \
    --cc=oneukum@suse.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

all inboxes | Powered by JetHome®