[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.1401301630340.31548-100000@netrider.rowland.org>
Date: Thu, 30 Jan 2014 16:43:54 -0500 (EST)
From: Alan Stern <stern@...land.harvard.edu>
To: Sarah Sharp <sarah.a.sharp@...ux.intel.com>
cc: David Laight <David.Laight@...LAB.COM>,
"linux-usb@...r.kernel.org" <linux-usb@...r.kernel.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
David Miller <davem@...emloft.net>,
Dan Williams <dan.j.williams@...el.com>,
"Nyman, Mathias" <mathias.nyman@...el.com>,
Mark Lord <mlord@...ox.com>, Freddy Xin <freddy@...x.com.tw>
Subject: Re: [PATCH RFC 1/1] usb: Tell xhci when usb data might be misaligned
On Thu, 30 Jan 2014, Sarah Sharp wrote:
> It should not matter what alignment or length of scatter-gather list the
> upper layers pass the xHCI driver, it should just work. I want to do
> this fix right, by changing the fundamental way we queue TRBs to the
> rings to fit the TD rules. We should break each TD into fragment-sized
> chunks, and add a link TRB in the middle of a segment where necessary.
That's a good plan. However _some_ restriction will turn out to be
necessary.
For example, what will you do if a driver submits an SG list containing
300 elements, each 3 bytes long? That's too many to fit in a single
ring segment, but it's smaller than a TD fragment -- it's even smaller
than maxpacket -- so there's no place to split it. (Not that I think
drivers _will_ submit requests like this; this is just to demonstrate
the point.)
It ought to be acceptable to require, for example, that an SG URB
contain no more than (say) 100 elements that are smaller than 512
bytes.
ehci-hcd gets along okay with the restriction that each SG element
except the last has to be a multiple of the maxpacket size. xhci-hcd
can relax this quite a lot, but not all the way.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists