CDC ACM interrupt endpoint polling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

I could not find an explicit statement in any specification, when the
polling should start.

Currently the linux host cdc-acm driver starts polling as soon as
application starts (well, opens the tty device, from acm_tty_open()) and
stops as soon as application stops. As the result if there is any line
change in between, the host "looses" notifications about that. The PSTN
spec states (page 32), that: 


SerialState is used like a real interrupt status register. Once a
notification has been sent, the device will reset and re-evaluate the
different signals. For the consistent signals like carrier detect or
transmission carrier, this will mean another notification will not be
generated until there is a state change. For the irregular signals like
break, the incoming ring signal, or the overrun error state, this will
reset their values to zero and again will not send another notification
until their state changes.


And I have another problem: when cdc-acm (host side) shuts down the port
and calls "acm_set_control(acm, acm->ctrlout = 0)", f_acm (gadget side)
gets "DTR off" and hangups it's tty, what causes the gadget application to
close the port, what in order causes f_acm to send a notification to
cdc-acm (host) that DCD is off. But host executes
usb_kill_urb(acm->ctrlurb) by the moment. So that notification reaches host
only as soon as tty device is opened again (and there is one more race
there as well).

I think, that the host is wrong here: the line status doesn't depend of the
application running and should be checked by host. Moreover for me looks
reasonable, that host is polling interrupt endpoint as soon as it claims
the interface in this case (well, I see in usb spec only something like:

The client software and device can depend only on the fact that the host
will ensure that the time duration between two transaction attempts with
the endpoint will be no longer than the desired period.)

Note, that windows host behaves exactly that way.

What do you think and what I missed?

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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux