On Mon, 2016-06-13 at 00:37 +0200, Ladislav Michl wrote:
> On Sun, Jun 12, 2016 at 11:03:45PM +0200, Ladislav Michl wrote:
> > Once ttyACM0 starts behave strangely, read() returns only what's in buffer 
> > before
> > ttyACM0 was opened and then hangs infinitely. As this bug is hard to 
> > trigger, has
> > anyone clue where to start debugging?
> 
> Forgot to mention, once this happens "usb 3-1.4: clear tt 1 (9061) error -75"
> starts showing in the syslog. Also "cdc_acm 3-1.4.3:1.0: failed to set 
> dtr/rts",
> but this one is there normally.

The translation transactor in the hub is reporting an error.
That should be reported to the driver, but there is no good
error handling.

static void acm_read_bulk_callback(struct urb *urb)
{
        struct acm_rb *rb = urb->context;
        struct acm *acm = rb->instance;
        unsigned long flags;
        int status = urb->status;

        dev_vdbg(&acm->data->dev, "%s - urb %d, len %d\n", __func__,
                                        rb->index, urb->actual_length);

        if (!acm->dev) {
                set_bit(rb->index, &acm->read_urbs_free);
                dev_dbg(&acm->data->dev, "%s - disconnected\n", __func__);
                return;
        }

        if (status) {
                set_bit(rb->index, &acm->read_urbs_free);
                dev_dbg(&acm->data->dev, "%s - non-zero urb status: %d\n",
                                                        __func__, status);
                if ((status != -ENOENT) || (urb->actual_length == 0))
                        return;
        }

Can you please switch on dynamic debugging for cdc_acm to see what
is being reported?

        Regards
                Oliver


--
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