Re: belkin usb serial converter (mct_u232), break not working

From: Thomas Stewart
Date: Thu Oct 21 2004 - 05:17:53 EST


On Wed, Oct 20, 2004 at 09:37:58PM -0500, Paul Fulghum wrote:
> static int send_break(struct tty_struct *tty, int duration)
> {
> set_current_state(TASK_INTERRUPTIBLE);
>
> tty->driver->break_ctl(tty, -1);
> if (!signal_pending(current))
> schedule_timeout(duration);
> tty->driver->break_ctl(tty, 0);
> if (signal_pending(current))
> return -EINTR;
> return 0;
> }
>
> The USB serial driver break_ctl() sends a URB which does
> a sleep and wakeup changing the task state back to TASK_RUNNING.
> Because of this, schedule_timeout() above gets short circuited
> and the break condition is not maintained long enough.
>
> The normal serial driver break_ctl() leaves the task state
> as TASK_INTERRUPTIBLE so you get the proper delay.
>
> Thomas: try the patch below and let me know the results.

I tryed again with your patch applyed, with both minicom and porttest

porttest.c:
#include <sys/fcntl.h>
#include <sys/ioctl.h>
main(int argc, char ** argv) {
int r, fd = open(argv[1], O_RDWR|O_NOCTTY);
r=ioctl(fd, TCSBRKP, 20);
printf("%d\n", r);
close(fd);
}

$ time ./porttest /dev/ttyS0
0

real 0m2.001s
user 0m0.000s
sys 0m0.001s
$ time ./porttest /dev/ttyUSB0
0

real 0m2.003s
user 0m0.000s
sys 0m0.001s

As you can see, this time there is the correct pause. However
it still does not send the break.

To add the mix, I dug about and found a differnt type of USB serial
converter, a no-brand one that uses the pl2303 module. Both minicom
and porttest with either stock 2.6.8.1 or 2.6.8.1 with your patch
send the break fine with this different converter.

This makes me think it is a problem with the mct_u232 driver?

Regards
--
Tom

PGP Fingerprint [DCCD 7DCB A74A 3E3B 60D5 DF4C FC1D 1ECA 68A7 0C48]
PGP Publickey [http://www.stewarts.org.uk/public-key.asc]
PGP ID [0x68A70C48]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/