* [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 @ 2021-06-16 2:56 Zhenguo Zhao 2021-06-16 6:19 ` Greg KH 0 siblings, 1 reply; 6+ messages in thread From: Zhenguo Zhao @ 2021-06-16 2:56 UTC (permalink / raw) To: zhenguo6858, gregkh, jirislaby; +Cc: linux-kernel From: Zhenguo Zhao <zhenguo.zhao1@unisoc.com> When set initiator=0,switch to Responder,gsmld received dlci SABM/DISC frame,CR bit should be 0 by calculation. receive DLC0 SABM CMD: [69.740263] c1 gsmld_receive: 00000000: f9 03 3f 01 1c f9 [69.893247] c1 gsm_queue cr:1 [69.897629] c1 <-- 0) C: SABM(P) [69.907516] c1 gsm_queue cr:0 Signed-off-by: Zhenguo Zhao <zhenguo.zhao1@unisoc.com> --- drivers/tty/n_gsm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index 5fea02c..becca2c 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -1779,7 +1779,7 @@ static void gsm_queue(struct gsm_mux *gsm) switch (gsm->control) { case SABM|PF: - if (cr == 0) + if (cr == 1) goto invalid; if (dlci == NULL) dlci = gsm_dlci_alloc(gsm, address); @@ -1793,7 +1793,7 @@ static void gsm_queue(struct gsm_mux *gsm) } break; case DISC|PF: - if (cr == 0) + if (cr == 1) goto invalid; if (dlci == NULL || dlci->state == DLCI_CLOSED) { gsm_response(gsm, address, DM); -- 1.9.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 2021-06-16 2:56 [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 Zhenguo Zhao @ 2021-06-16 6:19 ` Greg KH 2021-06-16 7:29 ` 赵振国 0 siblings, 1 reply; 6+ messages in thread From: Greg KH @ 2021-06-16 6:19 UTC (permalink / raw) To: Zhenguo Zhao; +Cc: jirislaby, linux-kernel On Wed, Jun 16, 2021 at 10:56:39AM +0800, Zhenguo Zhao wrote: > From: Zhenguo Zhao <zhenguo.zhao1@unisoc.com> > > When set initiator=0,switch to Responder,gsmld received dlci SABM/DISC > frame,CR bit should be 0 by calculation. > > receive DLC0 SABM CMD: > [69.740263] c1 gsmld_receive: 00000000: f9 03 3f 01 1c f9 > [69.893247] c1 gsm_queue cr:1 > [69.897629] c1 <-- 0) C: SABM(P) > [69.907516] c1 gsm_queue cr:0 Why is this changelog text indented by tabs? And I do not understand the changelog text here, what is this showing? What is wrong here and what is being fixed? > Signed-off-by: Zhenguo Zhao <zhenguo.zhao1@unisoc.com> Does this fix a long-standing issue? Should a "Fixes:" tag go here? If so, please provide it. Should it also be sent to stable kernels? > --- > drivers/tty/n_gsm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c > index 5fea02c..becca2c 100644 > --- a/drivers/tty/n_gsm.c > +++ b/drivers/tty/n_gsm.c > @@ -1779,7 +1779,7 @@ static void gsm_queue(struct gsm_mux *gsm) > > switch (gsm->control) { > case SABM|PF: > - if (cr == 0) > + if (cr == 1) How did the original code ever work properly? > goto invalid; > if (dlci == NULL) > dlci = gsm_dlci_alloc(gsm, address); > @@ -1793,7 +1793,7 @@ static void gsm_queue(struct gsm_mux *gsm) > } > break; > case DISC|PF: > - if (cr == 0) > + if (cr == 1) Same here, how did this ever work? Are you sure this change is correct? thanks, greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 2021-06-16 6:19 ` Greg KH @ 2021-06-16 7:29 ` 赵振国 2021-06-16 7:39 ` Greg KH 0 siblings, 1 reply; 6+ messages in thread From: 赵振国 @ 2021-06-16 7:29 UTC (permalink / raw) To: Greg KH; +Cc: jirislaby, linux-kernel Dear gregkh 1: Documentation/driver-api/serial/n_gsm.rst The text introduces the config of master ( c.initiator = 1), but the config of as responder is different. when set gsm->initiator=0 by GSMIOC_SETCONF ,ngsm driver should be responder(slaver) config: c.initiator = 0; // set initiator=0,ngsm as responder ioctl(fd, GSMIOC_SETCONF, &c); 2: if master side send SABM/DISC frame data by uart dev DLC0 control data frame:f9 03 3f 01 1c f9 kernel log: gsmld_receive: 00000000: f9 03 3f 01 1c f9 { cr = gsm->address & 1; /* C/R bit */ //CR value=1 gsm_print_packet("<--", address, cr, gsm->control, gsm->buf, gsm->len); cr ^= 1 - gsm->initiator; /* Flip so 1 always means command */ //when gsm->initiator is 0, CR value=0 by "^=" calculation dlci = gsm->dlci[address]; switch (gsm->control) { case SABM|PF: if (cr == 0) goto invalid; //if CR value=0,ngsm will goto invalid,but the dlc0 control frame data is right,if we can't modify ,ngsm can't send UA response data } 2021-06-16 14:19 GMT+08:00, Greg KH <gregkh@linuxfoundation.org>: > On Wed, Jun 16, 2021 at 10:56:39AM +0800, Zhenguo Zhao wrote: >> From: Zhenguo Zhao <zhenguo.zhao1@unisoc.com> >> >> When set initiator=0,switch to Responder,gsmld received dlci SABM/DISC >> frame,CR bit should be 0 by calculation. >> >> receive DLC0 SABM CMD: >> [69.740263] c1 gsmld_receive: 00000000: f9 03 3f 01 1c f9 >> [69.893247] c1 gsm_queue cr:1 >> [69.897629] c1 <-- 0) C: SABM(P) >> [69.907516] c1 gsm_queue cr:0 > > Why is this changelog text indented by tabs? > > And I do not understand the changelog text here, what is this showing? > What is wrong here and what is being fixed? > >> Signed-off-by: Zhenguo Zhao <zhenguo.zhao1@unisoc.com> > > Does this fix a long-standing issue? Should a "Fixes:" tag go here? If > so, please provide it. > > Should it also be sent to stable kernels? > >> --- >> drivers/tty/n_gsm.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c >> index 5fea02c..becca2c 100644 >> --- a/drivers/tty/n_gsm.c >> +++ b/drivers/tty/n_gsm.c >> @@ -1779,7 +1779,7 @@ static void gsm_queue(struct gsm_mux *gsm) >> >> switch (gsm->control) { >> case SABM|PF: >> - if (cr == 0) >> + if (cr == 1) > > How did the original code ever work properly? > >> goto invalid; >> if (dlci == NULL) >> dlci = gsm_dlci_alloc(gsm, address); >> @@ -1793,7 +1793,7 @@ static void gsm_queue(struct gsm_mux *gsm) >> } >> break; >> case DISC|PF: >> - if (cr == 0) >> + if (cr == 1) > > Same here, how did this ever work? Are you sure this change is correct? > > thanks, > > greg k-h > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 2021-06-16 7:29 ` 赵振国 @ 2021-06-16 7:39 ` Greg KH 2021-06-16 7:45 ` Jiri Slaby 0 siblings, 1 reply; 6+ messages in thread From: Greg KH @ 2021-06-16 7:39 UTC (permalink / raw) To: 赵振国; +Cc: jirislaby, linux-kernel A: http://en.wikipedia.org/wiki/Top_post Q: Were do I find info about this thing called top-posting? A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? A: Top-posting. Q: What is the most annoying thing in e-mail? A: No. Q: Should I include quotations after my reply? http://daringfireball.net/2007/07/on_top On Wed, Jun 16, 2021 at 03:29:11PM +0800, 赵振国 wrote: > Dear gregkh > > 1: Documentation/driver-api/serial/n_gsm.rst > > The text introduces the config of master ( c.initiator = 1), but the > config of as responder is different. > when set gsm->initiator=0 by GSMIOC_SETCONF ,ngsm driver should be > responder(slaver) > > config: > c.initiator = 0; // set initiator=0,ngsm as responder > ioctl(fd, GSMIOC_SETCONF, &c); > > 2: if master side send SABM/DISC frame data by uart dev > DLC0 control data frame:f9 03 3f 01 1c f9 > kernel log: gsmld_receive: 00000000: f9 03 3f 01 1c f9 > > { > cr = gsm->address & 1; /* C/R bit */ > //CR value=1 > > gsm_print_packet("<--", address, cr, gsm->control, gsm->buf, gsm->len); > > cr ^= 1 - gsm->initiator; /* Flip so 1 always means command */ > //when gsm->initiator is 0, CR value=0 by "^=" calculation > dlci = gsm->dlci[address]; > > switch (gsm->control) { > case SABM|PF: > if (cr == 0) > goto invalid; //if CR value=0,ngsm will goto > invalid,but the dlc0 control frame data is right,if we can't modify > ,ngsm can't send UA response data > } I am sorry, but I really do not understand what you are saying here. Please resubmit your patch with an updated changelog that explains why this change is needed and what it does. thanks, greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 2021-06-16 7:39 ` Greg KH @ 2021-06-16 7:45 ` Jiri Slaby 2021-06-16 8:01 ` 赵振国 0 siblings, 1 reply; 6+ messages in thread From: Jiri Slaby @ 2021-06-16 7:45 UTC (permalink / raw) To: Greg KH, 赵振国; +Cc: linux-kernel On 16. 06. 21, 9:39, Greg KH wrote: > > A: http://en.wikipedia.org/wiki/Top_post > Q: Were do I find info about this thing called top-posting? > A: Because it messes up the order in which people normally read text. > Q: Why is top-posting such a bad thing? > A: Top-posting. > Q: What is the most annoying thing in e-mail? > > A: No. > Q: Should I include quotations after my reply? > > http://daringfireball.net/2007/07/on_top > > On Wed, Jun 16, 2021 at 03:29:11PM +0800, 赵振国 wrote: >> Dear gregkh >> >> 1: Documentation/driver-api/serial/n_gsm.rst >> >> The text introduces the config of master ( c.initiator = 1), but the >> config of as responder is different. >> when set gsm->initiator=0 by GSMIOC_SETCONF ,ngsm driver should be >> responder(slaver) >> >> config: >> c.initiator = 0; // set initiator=0,ngsm as responder >> ioctl(fd, GSMIOC_SETCONF, &c); >> >> 2: if master side send SABM/DISC frame data by uart dev >> DLC0 control data frame:f9 03 3f 01 1c f9 >> kernel log: gsmld_receive: 00000000: f9 03 3f 01 1c f9 >> >> { >> cr = gsm->address & 1; /* C/R bit */ >> //CR value=1 >> >> gsm_print_packet("<--", address, cr, gsm->control, gsm->buf, gsm->len); >> >> cr ^= 1 - gsm->initiator; /* Flip so 1 always means command */ >> //when gsm->initiator is 0, CR value=0 by "^=" calculation >> dlci = gsm->dlci[address]; >> >> switch (gsm->control) { >> case SABM|PF: >> if (cr == 0) >> goto invalid; //if CR value=0,ngsm will goto >> invalid,but the dlc0 control frame data is right,if we can't modify >> ,ngsm can't send UA response data >> } > > I am sorry, but I really do not understand what you are saying here. > Please resubmit your patch with an updated changelog that explains why > this change is needed and what it does. And why it was able to work until now. I.e. isn't the Documentation wrong? thanks, -- js suse labs ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 2021-06-16 7:45 ` Jiri Slaby @ 2021-06-16 8:01 ` 赵振国 0 siblings, 0 replies; 6+ messages in thread From: 赵振国 @ 2021-06-16 8:01 UTC (permalink / raw) To: Jiri Slaby; +Cc: Greg KH, linux-kernel Dear gregkh,Jiri I think that linux ngsm is cp cmux function (config slaver,c.initiator = 0),pc side or ubuntu or terminal will send "AT+CMUX" by tty dev, and send SABM.DISC.CLD command。 because project is YOCTO,YOCTO is IOT open project,need config slaver,after config “c.initiator = 0”,ngsm can‘t work normally. slaver config ,it doesn't need to send "AT+CMUX" ---------------------------------------------------------- 2.1 switch the serial line to using the n_gsm line discipline by using TIOCSETD ioctl. 2.2 configure the mux using GSMIOC_GETCONF / GSMIOC_SETCONF ioctl. 2.3 obtain base gsmtty number for the used serial port, #include <stdio.h> #include <stdint.h> #include <linux/gsmmux.h> #include <linux/tty.h> #define DEFAULT_SPEED B115200 #define SERIAL_PORT /dev/ttyS0 int ldisc = N_GSM0710; struct gsm_config c; struct termios configuration; uint32_t first; /* open the serial port */ fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY); /* configure the serial port : speed, flow control ... */ /* use n_gsm line discipline */ ioctl(fd, TIOCSETD, &ldisc); /* get n_gsm configuration */ ioctl(fd, GSMIOC_GETCONF, &c); /* we are responter and need encoding 0 (basic) */ c.initiator = 0; c.encapsulation = 0; /* our modem defaults to a maximum size of 127 bytes */ c.mru = 127; c.mtu = 127; /* set the new configuration */ ioctl(fd, GSMIOC_SETCONF, &c); /* get first gsmtty device node */ ioctl(fd, GSMIOC_GETFIRST, &first); printf("first muxed line: /dev/gsmtty%i\n", first); /* and wait for ever to keep the line discipline enabled */ daemon(0,0); pause(); 2021-06-16 15:45 GMT+08:00, Jiri Slaby <jirislaby@kernel.org>: > On 16. 06. 21, 9:39, Greg KH wrote: >> >> A: http://en.wikipedia.org/wiki/Top_post >> Q: Were do I find info about this thing called top-posting? >> A: Because it messes up the order in which people normally read text. >> Q: Why is top-posting such a bad thing? >> A: Top-posting. >> Q: What is the most annoying thing in e-mail? >> >> A: No. >> Q: Should I include quotations after my reply? >> >> http://daringfireball.net/2007/07/on_top >> >> On Wed, Jun 16, 2021 at 03:29:11PM +0800, 赵振国 wrote: >>> Dear gregkh >>> >>> 1: Documentation/driver-api/serial/n_gsm.rst >>> >>> The text introduces the config of master ( c.initiator = 1), but the >>> config of as responder is different. >>> when set gsm->initiator=0 by GSMIOC_SETCONF ,ngsm driver should be >>> responder(slaver) >>> >>> config: >>> c.initiator = 0; // set initiator=0,ngsm as responder >>> ioctl(fd, GSMIOC_SETCONF, &c); >>> >>> 2: if master side send SABM/DISC frame data by uart dev >>> DLC0 control data frame:f9 03 3f 01 1c f9 >>> kernel log: gsmld_receive: 00000000: f9 03 3f 01 1c f9 >>> >>> { >>> cr = gsm->address & 1; /* C/R bit */ >>> //CR value=1 >>> >>> gsm_print_packet("<--", address, cr, gsm->control, gsm->buf, gsm->len); >>> >>> cr ^= 1 - gsm->initiator; /* Flip so 1 always means command */ >>> //when gsm->initiator is 0, CR value=0 by "^=" calculation >>> dlci = gsm->dlci[address]; >>> >>> switch (gsm->control) { >>> case SABM|PF: >>> if (cr == 0) >>> goto invalid; //if CR value=0,ngsm will goto >>> invalid,but the dlc0 control frame data is right,if we can't modify >>> ,ngsm can't send UA response data >>> } >> >> I am sorry, but I really do not understand what you are saying here. >> Please resubmit your patch with an updated changelog that explains why >> this change is needed and what it does. > > And why it was able to work until now. I.e. isn't the Documentation wrong? > > thanks, > -- > js > suse labs > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-06-16 8:01 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-06-16 2:56 [PATCH] tty: n_gsm: Fix CR bit value when initiator=0 Zhenguo Zhao 2021-06-16 6:19 ` Greg KH 2021-06-16 7:29 ` 赵振国 2021-06-16 7:39 ` Greg KH 2021-06-16 7:45 ` Jiri Slaby 2021-06-16 8:01 ` 赵振国
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.