Linux-USB Archive on lore.kernel.org
 help / color / Atom feed
From: Johan Hovold <johan@kernel.org>
To: Ikjoon Jang <ikjn@chromium.org>
Cc: Johan Hovold <johan@kernel.org>,
	linux-usb@vger.kernel.org,
	GregKroah-Hartman <gregkh@linuxfoundation.org>,
	RobHerring <robh+dt@kernel.org>,
	MarkRutland <mark.rutland@arm.com>,
	AlanStern <stern@rowland.harvard.edu>,
	SuwanKim <suwan.kim027@gmail.com>,
	"GustavoA . R . Silva" <gustavo@embeddedor.com>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Nicolas Boichat <drinkcat@chromium.org>,
	Mathias Nyman <mathias.nyman@linux.intel.com>
Subject: Re: [PATCH v4 2/2] usb: overridable hub bInterval by device node
Date: Fri, 6 Dec 2019 16:26:04 +0100
Message-ID: <20191206152604.GO10631@localhost> (raw)
In-Reply-To: <CAATdQgBK4gWvR06YJ3Z_y5NeqLKYY7Ajc0KG78rG2deR3Ga11A@mail.gmail.com>

On Fri, Dec 06, 2019 at 11:57:30AM +0800, Ikjoon Jang wrote:
> On Thu, Dec 5, 2019 at 10:26 PM Johan Hovold <johan@kernel.org> wrote:
> >
> > On Thu, Dec 05, 2019 at 03:32:38PM +0800, Ikjoon Jang wrote:
> > > On Wed, Dec 4, 2019 at 3:55 PM Johan Hovold <johan@kernel.org> wrote:
> >
> > > > But related to my question above, why do you need to do this during
> > > > enumeration? Why not just set the lower interval value in the hub
> > > > driver?
> > >
> > > Because I want device tree's bInterval to be checked against the same rules
> > > defined in usb_parse_endpoint(). e.g. although hardware says its maximum
> > > is 255, but the practical limit is still 0 to 16, so the code can
> > > print warnings when bInterval from device node is too weird.
> >
> > But that could be handled refactoring the code in question or similar.
> 
> Yes, that should be worked. I can't exactly figure out how to refactor
> the code for now, but maybe parsed endpoint descriptors are being
> checked with default hard wired bInterval value and after that
> an overridden value should be checked again.
> 
> Actually I don't care about the details of software policies. I just want
> all devices to be handled in the same manner without any further
> special treatments.

I'd say you're indeed trying to give a specific device special
treatment. ;)

> > The fundamental problem here is that you're using devicetree, which is
> > supposed to only describe the hardware, to encode policy which should be
> > deferred to user space.
> 
> The hub hardware has a default bInterval inside which is actually
> adjustable. So I can think setting bInterval is to describe the hardware
> rather than policy.

No, the USB spec says bInterval is a maximum requested value and that
the host is free to poll more often. And that's policy.

> > So I think you need to figure out an interface that allows user space to
> > set the polling interval for any hub at runtime instead.
> 
> Changing the interval at runtime is an another way to solve the
> power consumption problem, but it's not so easy. At least xhci needs
> to restart an endpoint and no devices are changing the interval after
> enumeration stage.

The usb-hid driver actually supports configuring the polling rate
for devices like mice and keyboards after enumeration (through a module
parameter, but still).

Unfortunately, the xhci driver does not yet support this and always uses
the device maximum bInterval. A bug report for this was filed many years
ago, perhaps it's time to address that (adding Mathias on CC):

	https://bugzilla.kernel.org/show_bug.cgi?id=82571

Johan

  parent reply index

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-03 10:15 Ikjoon Jang
2019-12-03 15:23 ` Alan Stern
2019-12-04  7:07   ` Ikjoon Jang
2019-12-03 16:53 ` Johan Hovold
2019-12-04  7:04   ` Ikjoon Jang
2019-12-04  7:55     ` Johan Hovold
2019-12-05  7:32       ` Ikjoon Jang
2019-12-05 14:26         ` Johan Hovold
2019-12-06  3:57           ` Ikjoon Jang
2019-12-06 15:00             ` Alan Stern
2019-12-09  3:47               ` Ikjoon Jang
2019-12-06 15:26             ` Johan Hovold [this message]
2019-12-09  4:05               ` Ikjoon Jang
2019-12-10 15:02                 ` Johan Hovold

Reply instructions:

You may reply publically 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=20191206152604.GO10631@localhost \
    --to=johan@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=drinkcat@chromium.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavo@embeddedor.com \
    --cc=ikjn@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mathias.nyman@linux.intel.com \
    --cc=robh+dt@kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=suwan.kim027@gmail.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

Linux-USB Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-usb/0 linux-usb/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-usb linux-usb/ https://lore.kernel.org/linux-usb \
		linux-usb@vger.kernel.org
	public-inbox-index linux-usb

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-usb


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git