For the capture endpoint, set the UAC_EP_CS_ATTR_FILL_MAX bit in
bmAttributes to that the host only send IN tokens with wMaxPacketSize
bytes. If that bit isn't set, snd-usb will calculate a smaller packet
size, which is answered by a fixed-size (512 bytes) response from the
gadget driver. That consequently leads to -EOVERFLOW errors on the
host side.

Reported-by: Sebastian Reimers <sebastian.reim...@googlemail.com>
Signed-off-by: Daniel Mack <zon...@gmail.com>
---
 drivers/usb/gadget/function/f_uac2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/f_uac2.c 
b/drivers/usb/gadget/function/f_uac2.c
index efe8add..1d6d085 100644
--- a/drivers/usb/gadget/function/f_uac2.c
+++ b/drivers/usb/gadget/function/f_uac2.c
@@ -813,7 +813,7 @@ static struct uac2_iso_endpoint_descriptor as_iso_in_desc = 
{
        .bDescriptorType = USB_DT_CS_ENDPOINT,
 
        .bDescriptorSubtype = UAC_EP_GENERAL,
-       .bmAttributes = 0,
+       .bmAttributes = UAC_EP_CS_ATTR_FILL_MAX,
        .bmControls = 0,
        .bLockDelayUnits = 0,
        .wLockDelay = 0,
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to