All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ondrej Zary <linux@rainbow-software.org>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Josua Dietze <digidietze@draisberghof.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Ben Efros <ben@pc-doctor.com>, fangxiaozhi <huananhu@huawei.com>,
	Greg KH <greg@kroah.com>,
	Kernel development list <linux-kernel@vger.kernel.org>,
	USB list <linux-usb@vger.kernel.org>,
	Hugh Blemings <hugh@blemings.org>
Subject: Re: USB serial regression 2.6.31.1 -> 2.6.31.2
Date: Sat, 10 Oct 2009 19:43:45 +0200	[thread overview]
Message-ID: <200910101943.49326.linux@rainbow-software.org> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0910101220540.3859-100000@netrider.rowland.org>

On Saturday 10 October 2009 19:05:22 Alan Stern wrote:
> On Sat, 10 Oct 2009, Josua Dietze wrote:
> > Benjamin Herrenschmidt schrieb:
> > > The symptom is that the USB modem just disconnects/reconnects in a
> > > loop. The log looks like what I pasted below when plugging the device
> > > (and leaving it in, the disconnects don't correspond to the device
> > > being removed).
> >
> > This is one of the mode switching devices. It is switched to modem
> > mode by "usb_stor_huawei_e220_init".
> >
> > Something keeps resetting it to initial mode. It might be a
> > powersave/suspend issue.
>
> It's not related to powersave or suspend.  (Although both trace files
> show that the device's remote-wakeup feature did get enabled; I have no
> idea what code was responsible for doing that.  AFAIK it shouldn't
> happen unless the device is about to be suspended.)
>
> No, the problem is related to the mode-switching.  In particular, the
> 2.6.31.3 log shows that the mass-storage interface got into trouble
> because of a couple of bugs in the device.  These bugs caused
> usb-storage to issue a device reset, but after the reset the same thing
> happened again and we entered an endless loop.
>
> The reason this doesn't happen under 2.6.31.1 is explained by commit
> b7c8b54df8c2a82757d8aab48aaac198a49e2ff9 (which in the upstream kernel
> is commit d0defb855c8504c49b92bdc0203689ce9b4cf7ba).  It allows
> usb-storage to bind to the Huawei Datacard device, whereas before the
> mode switch would occur with no binding.
>
> Regardless, we have to figure out some way to work around the device's
> bugs.  In some detail, here's what happened:
>
> The device presented two LUNs on the mass-storage interface.  LUN 0 was
> the emulated CDROM (named "Mass Storage") and LUN 1 was direct-access
> (named "SD Storage").  LUN 0 appeared to work normally, although it
> reported Not Ready, No Medium Present errors.  LUN 1 did the same
> thing, but in its response to the REQUEST SENSE command it set the
> additional-sense-length byte to 0x12 instead of 0x0a, for no apparent
> reason.  This caused usb-storage to assume the device supported SANE
> SENSE, which presumably it doesn't.
>
> Further REQUEST SENSE commands therefore requested 96 bytes of data
> instead of the standard 18 bytes.  With LUN 0 this worked okay.  But
> with LUN 1 it didn't; the device reported a failure of the REQUEST
> SENSE.  This is what caused usb-storage to issue the device reset.
>
> After the reset usb-storage continued to ask for 96 bytes of sense
> data, and LUN 1 continued to fail the commands.  Hence the repeated
> resets.
>
> Thus the two bugs in the Huawei device are: Incorrect
> additional-sense-length byte for LUN 1, and incorrect CSW for a 96-byte
> REQUEST SENSE on LUN 1.
>
> I can see two approaches for working around this.  The first is to make
> the SENSE SENSE test more discriminating.  For example, test for
> additional-sense-length values larger than 0x12 instead of larger than
> 0x0a.  Ben Efros, would this be acceptable?
>
> The second approach is to add a SINGLE_LUN flag to all the Huawei
> entries in unusual_devs.h.  It's not clear that this is a good idea; if
> one of those devices really does have an SD card then people might want
> to be able to use it.

No, this is not a good idea. Some of the devices have a MicroSD slot - like 
Huawei E176. The bad thing is that E176 uses the same device ID as Huawei 
E220 (and possibly some other devices too).

-- 
Ondrej Zary

  reply	other threads:[~2009-10-10 17:44 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-10  0:25 USB serial regression 2.6.31.1 -> 2.6.31.2 Benjamin Herrenschmidt
2009-10-10  0:31 ` USB serial regression 2.6.31.1 -> 2.6.31.2 (and 2.6.32-rc3) Benjamin Herrenschmidt
2009-10-10  0:32   ` Benjamin Herrenschmidt
2009-10-10  1:56     ` Alan Stern
2009-10-10  2:03       ` Alan Stern
2009-10-10  2:48         ` Benjamin Herrenschmidt
2009-10-10  3:11         ` Benjamin Herrenschmidt
2009-10-10 16:20           ` Alan Stern
2009-10-10  2:45       ` Benjamin Herrenschmidt
2009-10-10  7:38 ` USB serial regression 2.6.31.1 -> 2.6.31.2 Josua Dietze
2009-10-10  7:41   ` Benjamin Herrenschmidt
2009-10-10  9:55     ` Oliver Neukum
2009-10-10 15:05       ` Greg KH
2009-10-10 17:05   ` Alan Stern
2009-10-10 17:43     ` Ondrej Zary [this message]
2009-10-10 20:41     ` Alan Stern
2009-10-10 21:20       ` Benjamin Herrenschmidt
2009-10-10 22:17         ` Benjamin Herrenschmidt
2009-10-11 14:45           ` Alan Stern
2009-10-10 21:18     ` Benjamin Herrenschmidt
2009-10-10 21:56     ` Benjamin Herrenschmidt
2009-10-10 22:52       ` Alan Stern
2009-10-10 23:26         ` Benjamin Herrenschmidt
2009-10-10 23:47           ` Benjamin Herrenschmidt
     [not found] <11818577.563251255220394815.JavaMail.root@mail.pc-doctor.com>
2009-10-11  0:21 ` Ben Efros
2009-10-11  5:24   ` Benjamin Herrenschmidt

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=200910101943.49326.linux@rainbow-software.org \
    --to=linux@rainbow-software.org \
    --cc=ben@pc-doctor.com \
    --cc=benh@kernel.crashing.org \
    --cc=digidietze@draisberghof.de \
    --cc=greg@kroah.com \
    --cc=huananhu@huawei.com \
    --cc=hugh@blemings.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.