Hi Patrice, Thank you for the patch and sorry for the review delays.
On Mon, Aug 17, 2026 at 17:41, Patrice Chotard <[email protected]> wrote: > schedule was added in sleep_thread() by commit 4b6a3e860878 > ("usb: gadget: f_mass_storage: Add schedule() in sleep_thread()"). > to ensure that watchdog is still reset periodically even on platform > that doesn't implement g_dnl_board_usb_cable_connected() and in case USB > cable is not connected. > > Instead of calling schedule() for each for() loop iteration, call > schedule() only in case g_dnl_board_usb_cable_connected() is not > overloaded, in this particular case, g_dnl_board_usb_cable_connected()'s > return value is -EOPNOTSUPP. > > Signed-off-by: Patrice Chotard <[email protected]> > --- > drivers/usb/gadget/f_mass_storage.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/gadget/f_mass_storage.c > b/drivers/usb/gadget/f_mass_storage.c > index 621852080e2..f467693d2cb 100644 > --- a/drivers/usb/gadget/f_mass_storage.c > +++ b/drivers/usb/gadget/f_mass_storage.c > @@ -651,6 +651,7 @@ static void busy_indicator(void) > static int sleep_thread(struct fsg_common *common) > { > int i = 0, k = 0; > + int ret; > > /* Wait until a signal arrives or we are woken up */ > for (;;) { > @@ -673,13 +674,15 @@ static int sleep_thread(struct fsg_common *common) > return -EPIPE; > > /* Check cable connection */ > - if (!g_dnl_board_usb_cable_connected()) > + ret = g_dnl_board_usb_cable_connected(); > + if (!ret) > return -EIO; > + if (ret == -EOPNOTSUPP) > + schedule(); What happens on boards that override g_dnl_board_usb_cable_connected() that return a positive value? Per my understanding, schedule() will never be called, and the watchdog will be triggered at some point, no? > > k = 0; > } > > - schedule(); > dm_usb_gadget_handle_interrupts(udcdev); > } > common->thread_wakeup_needed = 0; > > -- > 2.43.0
