> Hello,
>
> A customer has just brought to my attention that when you try to use the
> TIOCMIWAIT ioctl with our boards and CLOCAL is enabled, you can't check
> changes in the DCD signal. He also mentioned that that is possible with
> the regular serial ports.
>
> As I understood, CLOCAL meant disabling DCD sensitivity, so if CLOCAL is
> disabled, no changes in DCD will be passed from hardware driver to the
> kernel or userspace. The way the serial driver is implemented, this is not
> true (i.e. even with CLOCAL enabled, you can still see DCD changes through
> the TIOCMIWAIT command).
I remember auditing the exact code where this happens, but on 2.0 or earlier.
I had written a simple program 10-20 lines C to count pulses at rate of 1 per
second give or take. It turned out that the driver disabled the UART's
generation
of interrupts completely for certain signals. I don't remember which
exactly, but
I think it was DCD; I was using CLOCAL so the hangups wouldn't close the
descriptor. The problems was that by disabling the interrupt at the source,
the ioctl's to read the bits stopped working! not what I wanted.
I'm afraid I can't help, other that to suggest that that behaviour can have
problems.
The extra irq traffic was probably the motivation for this optimisation, but
I don't know of anyone's modem hanging up frequently enough to measure the
extra load. Only people crazy enough to use the built-in serial port ($0)
as opposed to an $500 industrial digital io card are likely to care though...
>
>
> My question is: what's the correct interpretation of CLOCAL?? If the
> serial driver's interpretation is the correct one, I'll be more than happy
> to change the Cyclades' driver to comply with that, I just want to make
> sure that this is the expected behavior before I patch the driver.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/