Skip to content

Commit 387f869

Browse files
author
Felipe Balbi
committed
usb: gadget: u_ether: conditionally align transfer size
Unless HW sets quirk_ep_out_aligned_size, gadget driver shouldn't make any efforts towards aligning transfers. If the UDC needs, it *must* set the quirk flag. Signed-off-by: Felipe Balbi <[email protected]>
1 parent fea14e6 commit 387f869

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

drivers/usb/gadget/function/u_ether.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ static void rx_complete(struct usb_ep *ep, struct usb_request *req);
178178
static int
179179
rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
180180
{
181+
struct usb_gadget *g = dev->gadget;
181182
struct sk_buff *skb;
182183
int retval = -ENOMEM;
183184
size_t size = 0;
@@ -209,8 +210,11 @@ rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
209210
*/
210211
size += sizeof(struct ethhdr) + dev->net->mtu + RX_EXTRA;
211212
size += dev->port_usb->header_len;
212-
size += out->maxpacket - 1;
213-
size -= size % out->maxpacket;
213+
214+
if (g->quirk_ep_out_aligned_size) {
215+
size += out->maxpacket - 1;
216+
size -= size % out->maxpacket;
217+
}
214218

215219
if (dev->port_usb->is_fixed)
216220
size = max_t(size_t, size, dev->port_usb->fixed_out_len);

0 commit comments

Comments
 (0)