[PATCH 22/22] usb: document that URB transfer_buffer should be aligned

David Laight David.Laight at ACULAB.COM
Thu Mar 30 04:07:27 PDT 2017

From: Mauro Carvalho Chehab
> Sent: 30 March 2017 11:28
> While debugging this issue, I saw *a lot* of network-generated URB
> traffic from RPi3 Ethernet port drivers that were using non-aligned
> buffers and were subject to the temporary buffer conversion.

Buffers from the network stack will almost always be 4n+2 aligned.
Receive data being fed into the network stack really needs to be
4n=2 aligned.

The USB stack almost certainly has to live with that.

If the USB ethernet device doesn't have two bytes of 'pad' before
the frame data (destination MAC address) then you have to solve
the problem within the USB stack.

For transmits it might be possible to send an initial 2 byte fragment
from a separate buffer - but only if arbitrary fragment sizes are
A normal USB3 controller should allow this - but you have to be very
careful about what happens at the end of the ring.


More information about the linux-rpi-kernel mailing list