tty: n_gsm: Delete gsmtty open SABM frame when config requester
authorZhenguo Zhao <Zhenguo.Zhao1@unisoc.com>
Fri, 20 Aug 2021 12:17:50 +0000 (20:17 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:24:04 +0000 (14:24 +0200)
[ Upstream commit cbff2b32516881bef30bbebf413d1b49495bab1d ]

When n_gsm config "initiator=0",as requester ,it doesn't need to
send SABM frame data during gsmtty open.

Example,when gsmtty open,it will send SABM frame.for initiator,it
maybe not want to receive the frame.

[   88.410426] c1 gsmld_output: 00000000: f9 07 3f 01 de f9
[   88.420839] c1 --> 1) R: SABM(F)

Signed-off-by: Zhenguo Zhao <Zhenguo.Zhao1@unisoc.com>
Link: https://lore.kernel.org/r/1629461872-26965-6-git-send-email-zhenguo6858@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/tty/n_gsm.c

index 4946a24..f86c5eb 100644 (file)
@@ -3214,6 +3214,7 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp)
 {
        struct gsm_dlci *dlci = tty->driver_data;
        struct tty_port *port = &dlci->port;
+       struct gsm_mux *gsm = dlci->gsm;
 
        port->count++;
        tty_port_tty_set(port, tty);
@@ -3223,7 +3224,8 @@ static int gsmtty_open(struct tty_struct *tty, struct file *filp)
           a DM straight back. This is ok as that will have caused a hangup */
        tty_port_set_initialized(port, 1);
        /* Start sending off SABM messages */
-       gsm_dlci_begin_open(dlci);
+       if (gsm->initiator)
+               gsm_dlci_begin_open(dlci);
        /* And wait for virtual carrier */
        return tty_port_block_til_ready(port, tty, filp);
 }