Skip to content

Commit e624485

Browse files
tmon-nordicanangl
authored andcommitted
[nrf fromtree] drivers: udc_dwc2: Allocate at least 8 bytes for control OUT
Make sure to feed control OUT endpoint with at least 8 bytes buffer to make it possible to always receive SETUP data. This solves the assertion failure in net_buf_add() called inside dwc2_handle_evt_setup() when a host decides to start new control transfer immediately after it has issued control transfer with Data Stage from host to device with wLength less than 8. Signed-off-by: Tomasz Moń <[email protected]> (cherry picked from commit fa0a6e2)
1 parent 4199b57 commit e624485

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

drivers/usb/udc/udc_dwc2.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,10 @@ static int dwc2_handle_evt_setup(const struct device *dev)
469469
/* Allocate and feed buffer for data OUT stage */
470470
LOG_DBG("s:%p|feed for -out-", buf);
471471

472-
err = dwc2_ctrl_feed_dout(dev, udc_data_stage_length(buf));
472+
/* Allocate at least 8 bytes in case the host decides to send
473+
* SETUP DATA instead of OUT DATA packet.
474+
*/
475+
err = dwc2_ctrl_feed_dout(dev, MAX(udc_data_stage_length(buf), 8));
473476
if (err == -ENOMEM) {
474477
err = udc_submit_ep_event(dev, buf, err);
475478
}

0 commit comments

Comments
 (0)