* [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.