Aleksander Morgado <aleksan...@aleksander.es> writes:

> I'm just running --dms-get-operating-mode multiple times, and getting
> errors frequently:

Could you retry that with cdc-wdm debugging enabled (e.g.
"echo 'module cdc_wdm +fp' > /sys/kernel/debug/dynamic_debug/control")
and something like this:


diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
index 8fda45a45bd3..c0f25ace9fc6 100644
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -211,6 +211,8 @@ static void wdm_in_callback(struct urb *urb)
                }
        }
 
+       dev_dbg(&desc->intf->dev, "rerr=%d, status=%d, length=%d, 
resp_count=%d\n", desc->rerr, status, length, desc->resp_count);
+
        /*
         * Handling devices with the WDM_DRAIN_ON_OPEN flag set:
         * If desc->resp_count is unset, then the urb was submitted
@@ -516,6 +518,9 @@ static ssize_t wdm_read
                return -ERESTARTSYS;
 
        cntr = ACCESS_ONCE(desc->length);
+
+       dev_dbg(&desc->intf->dev, "rerr=%d, length=%d\n", desc->rerr, cntr);
+
        if (cntr == 0) {
                desc->read = 0;
 retry:



And/or a usbmon dump?  That would be.probably show us the sequence of
events leading to this problem.

Desperately trying to figure out some other way to solve the issue that
commit  833415a3e781 ("cdc-wdm: fix "out-of-sync" due to missing
notifications") was supposed to fix....



Bjørn


Reply via email to