On 08. 07. 19, 21:02, Martin Hundebøll wrote: > Guessing the base tty for a gsm0710 multiplexed serial device is not > currently possible, which makes it racy to use with multiple modems. > > Add a way to map the physical serial tty to its related mux devices > using a ioctl. ... > --- a/Documentation/serial/n_gsm.rst > +++ b/Documentation/serial/n_gsm.rst ... > @@ -58,6 +61,11 @@ Major parts of the initialization program : > c.mtu = 127; > /* set the new configuration */ > ioctl(fd, GSMIOC_SETCONF, &c); > + /* get and print base gsmtty device node */ > + ioctl(fd, GSMIOC_GETBASE, &base); > + /* the base node is used for mux control by the driver */ > + printf(first muxed line: /dev/gsmtty%i\n", base + 1);
Missing " there. > --- a/drivers/tty/n_gsm.c > +++ b/drivers/tty/n_gsm.c ... > @@ -2623,6 +2624,11 @@ static int gsmld_ioctl(struct tty_struct *tty, struct > file *file, > if (copy_from_user(&c, (void *)arg, sizeof(c))) > return -EFAULT; > return gsm_config(gsm, &c); > + case GSMIOC_GETBASE: > + base = mux_num_to_base(gsm); > + if (copy_to_user((void *)arg, &base, sizeof(base))) put_user would be more appropriate (and easier) for an int here. thanks, -- js suse labs