All of lore.kernel.org
 help / color / mirror / Atom feed
* [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue
@ 2011-02-12  9:41 martin.xu
  2011-02-12  9:41 ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package martin.xu
  2011-02-14 20:25 ` [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue Denis Kenzior
  0 siblings, 2 replies; 9+ messages in thread
From: martin.xu @ 2011-02-12  9:41 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1563 bytes --]

From: Martin Xu <martin.xu@intel.com>

Tramsmit ACCM and receive ACCM is mixed up.
According to RFC1662 Section 7.1, ACCM Configuration Option is
used to inform the peer which control characters MUST remain
mapped when the peer sends them.
---
 gatchat/ppp_lcp.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/gatchat/ppp_lcp.c b/gatchat/ppp_lcp.c
index 3a80a62..cc3e231 100644
--- a/gatchat/ppp_lcp.c
+++ b/gatchat/ppp_lcp.c
@@ -149,7 +149,13 @@ static void lcp_rca(struct pppcp_data *pppcp, const struct pppcp_packet *packet)
 	while (ppp_option_iter_next(&iter) == TRUE) {
 		switch (ppp_option_iter_get_type(&iter)) {
 		case ACCM:
-			ppp_set_xmit_accm(pppcp_get_ppp(pppcp), 0);
+			/*
+			 * RFC1662 Section 7.1
+			 * The Configuration Option is used to inform the peer
+			 * which control characters MUST remain mapped when
+			 * the peer sends them.
+			 */
+			ppp_set_recv_accm(pppcp_get_ppp(pppcp), 0);
 			break;
 		default:
 			break;
@@ -263,7 +269,13 @@ static enum rcr_result lcp_rcr(struct pppcp_data *pppcp,
 	while (ppp_option_iter_next(&iter) == TRUE) {
 		switch (ppp_option_iter_get_type(&iter)) {
 		case ACCM:
-			ppp_set_recv_accm(ppp,
+			/*
+			 * RFC1662 Section 7.1
+			 * The Configuration Option is used to inform the peer
+			 * which control characters MUST remain mapped when
+			 * the peer sends them.
+			 */
+			ppp_set_xmit_accm(ppp,
 				get_host_long(ppp_option_iter_get_data(&iter)));
 			break;
 		case AUTH_PROTO:
-- 
1.6.1.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package
  2011-02-12  9:41 [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue martin.xu
@ 2011-02-12  9:41 ` martin.xu
  2011-02-12  9:41   ` [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00 martin.xu
  2011-02-14 20:26   ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package Denis Kenzior
  2011-02-14 20:25 ` [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue Denis Kenzior
  1 sibling, 2 replies; 9+ messages in thread
From: martin.xu @ 2011-02-12  9:41 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1465 bytes --]

From: Martin Xu <martin.xu@intel.com>

Using my Huawei EM770W modem, if set ACCM as 0x00000000, RXJ-
event breaks PPP link, after IP package transmit for a while.
Using default ACCM, the issue can be fixed.
I tested it at China Unicom networks.
---
 gatchat/ppp_lcp.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/gatchat/ppp_lcp.c b/gatchat/ppp_lcp.c
index cc3e231..91a8b67 100644
--- a/gatchat/ppp_lcp.c
+++ b/gatchat/ppp_lcp.c
@@ -105,8 +105,7 @@ static void lcp_generate_config_options(struct lcp_data *lcp)
 
 static void lcp_reset_config_options(struct lcp_data *lcp)
 {
-	lcp->req_options = REQ_OPTION_ACCM;
-	lcp->accm = 0;
+	/* Using the default ACCM */
 
 	lcp_generate_config_options(lcp);
 }
@@ -147,6 +146,7 @@ static void lcp_rca(struct pppcp_data *pppcp, const struct pppcp_packet *packet)
 	ppp_option_iter_init(&iter, packet);
 
 	while (ppp_option_iter_next(&iter) == TRUE) {
+		const guint8 *data = ppp_option_iter_get_data(&iter);
 		switch (ppp_option_iter_get_type(&iter)) {
 		case ACCM:
 			/*
@@ -155,7 +155,9 @@ static void lcp_rca(struct pppcp_data *pppcp, const struct pppcp_packet *packet)
 			 * which control characters MUST remain mapped when
 			 * the peer sends them.
 			 */
-			ppp_set_recv_accm(pppcp_get_ppp(pppcp), 0);
+
+			ppp_set_recv_accm(pppcp_get_ppp(pppcp),
+					pppcpget_host_long(data));
 			break;
 		default:
 			break;
-- 
1.6.1.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00
  2011-02-12  9:41 ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package martin.xu
@ 2011-02-12  9:41   ` martin.xu
  2011-02-14 20:28     ` Denis Kenzior
  2011-02-14 20:26   ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package Denis Kenzior
  1 sibling, 1 reply; 9+ messages in thread
From: martin.xu @ 2011-02-12  9:41 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1125 bytes --]

From: Martin Xu <martin.xu@intel.com>

Device 00 is ppp port. Setting it as 01, my Huawei EM770W modem PPP
connection can't work
---
 plugins/ofono.rules |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/plugins/ofono.rules b/plugins/ofono.rules
index 111f071..7dec243 100644
--- a/plugins/ofono.rules
+++ b/plugins/ofono.rules
@@ -37,7 +37,7 @@ ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1401", ENV{OFONO_IFACE_NUM}=="02", E
 ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1402", ENV{OFONO_IFACE_NUM}=="00", ENV{OFONO_HUAWEI_TYPE}="Modem"
 ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1402", ENV{OFONO_IFACE_NUM}=="02", ENV{OFONO_HUAWEI_TYPE}="Pcui"
 
-ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_IFACE_NUM}=="01", ENV{OFONO_HUAWEI_TYPE}="Modem"
+ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_IFACE_NUM}=="00", ENV{OFONO_HUAWEI_TYPE}="Modem"
 ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_IFACE_NUM}=="02", ENV{OFONO_HUAWEI_TYPE}="Pcui"
 ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1404", ENV{OFONO_HUAWEI_VOICE}="1"
 
-- 
1.6.1.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue
  2011-02-12  9:41 [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue martin.xu
  2011-02-12  9:41 ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package martin.xu
@ 2011-02-14 20:25 ` Denis Kenzior
  1 sibling, 0 replies; 9+ messages in thread
From: Denis Kenzior @ 2011-02-14 20:25 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 492 bytes --]

Hi Martin,

On 02/12/2011 03:41 AM, martin.xu(a)intel.com wrote:
> From: Martin Xu <martin.xu@intel.com>
> 
> Tramsmit ACCM and receive ACCM is mixed up.
> According to RFC1662 Section 7.1, ACCM Configuration Option is
> used to inform the peer which control characters MUST remain
> mapped when the peer sends them.
> ---
>  gatchat/ppp_lcp.c |   16 ++++++++++++++--
>  1 files changed, 14 insertions(+), 2 deletions(-)
> 

Patch has been applied, thanks.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package
  2011-02-12  9:41 ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package martin.xu
  2011-02-12  9:41   ` [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00 martin.xu
@ 2011-02-14 20:26   ` Denis Kenzior
  1 sibling, 0 replies; 9+ messages in thread
From: Denis Kenzior @ 2011-02-14 20:26 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1934 bytes --]

Hi Martin,

On 02/12/2011 03:41 AM, martin.xu(a)intel.com wrote:
> From: Martin Xu <martin.xu@intel.com>
> 
> Using my Huawei EM770W modem, if set ACCM as 0x00000000, RXJ-
> event breaks PPP link, after IP package transmit for a while.
> Using default ACCM, the issue can be fixed.
> I tested it at China Unicom networks.
> ---
>  gatchat/ppp_lcp.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/gatchat/ppp_lcp.c b/gatchat/ppp_lcp.c
> index cc3e231..91a8b67 100644
> --- a/gatchat/ppp_lcp.c
> +++ b/gatchat/ppp_lcp.c
> @@ -105,8 +105,7 @@ static void lcp_generate_config_options(struct lcp_data *lcp)
>  
>  static void lcp_reset_config_options(struct lcp_data *lcp)
>  {
> -	lcp->req_options = REQ_OPTION_ACCM;
> -	lcp->accm = 0;
> +	/* Using the default ACCM */
>  
>  	lcp_generate_config_options(lcp);
>  }
> @@ -147,6 +146,7 @@ static void lcp_rca(struct pppcp_data *pppcp, const struct pppcp_packet *packet)
>  	ppp_option_iter_init(&iter, packet);
>  
>  	while (ppp_option_iter_next(&iter) == TRUE) {
> +		const guint8 *data = ppp_option_iter_get_data(&iter);
>  		switch (ppp_option_iter_get_type(&iter)) {
>  		case ACCM:
>  			/*
> @@ -155,7 +155,9 @@ static void lcp_rca(struct pppcp_data *pppcp, const struct pppcp_packet *packet)
>  			 * which control characters MUST remain mapped when
>  			 * the peer sends them.
>  			 */
> -			ppp_set_recv_accm(pppcp_get_ppp(pppcp), 0);
> +
> +			ppp_set_recv_accm(pppcp_get_ppp(pppcp),
> +					pppcpget_host_long(data));

make --no-print-directory all-am
  CC     gatchat/ppp_lcp.o
cc1: warnings being treated as errors
gatchat/ppp_lcp.c: In function ‘lcp_rca’:
gatchat/ppp_lcp.c:160: error: implicit declaration of function
‘pppcpget_host_long’
make[1]: *** [gatchat/ppp_lcp.o] Error 1
make: *** [all] Error 2


>  			break;
>  		default:
>  			break;

Regards,
-Denis

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00
  2011-02-12  9:41   ` [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00 martin.xu
@ 2011-02-14 20:28     ` Denis Kenzior
  2011-02-15  7:03       ` Xu, Martin
  0 siblings, 1 reply; 9+ messages in thread
From: Denis Kenzior @ 2011-02-14 20:28 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 437 bytes --]

Hi Martin,

On 02/12/2011 03:41 AM, martin.xu(a)intel.com wrote:
> From: Martin Xu <martin.xu@intel.com>
> 
> Device 00 is ppp port. Setting it as 01, my Huawei EM770W modem PPP
> connection can't work
> ---
>  plugins/ofono.rules |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 

This contradicts commit bb58a729073abcb6c5b0b2fb8b120973dfa42a07.

We really need a proper fix for this.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00
  2011-02-14 20:28     ` Denis Kenzior
@ 2011-02-15  7:03       ` Xu, Martin
  2011-02-16 18:04         ` Denis Kenzior
  0 siblings, 1 reply; 9+ messages in thread
From: Xu, Martin @ 2011-02-15  7:03 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 798 bytes --]

Denis/Marcel:
> -----Original Message-----
> From: Denis Kenzior [mailto:denkenz(a)gmail.com]
> Sent: Tuesday, February 15, 2011 4:28 AM
> To: ofono(a)ofono.org
> Cc: Xu, Martin
> Subject: Re: [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00
> 
> Hi Martin,
> 
> On 02/12/2011 03:41 AM, martin.xu(a)intel.com wrote:
> > From: Martin Xu <martin.xu@intel.com>
> >
> > Device 00 is ppp port. Setting it as 01, my Huawei EM770W modem PPP
> > connection can't work
> > ---
> >  plugins/ofono.rules |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> 
> This contradicts commit bb58a729073abcb6c5b0b2fb8b120973dfa42a07.
I can't quite understand why Dietrich needs to this commit. We formal configure can just make EM770W works.
Could you help on this?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00
  2011-02-15  7:03       ` Xu, Martin
@ 2011-02-16 18:04         ` Denis Kenzior
  2011-02-17  2:19           ` Marcel Holtmann
  0 siblings, 1 reply; 9+ messages in thread
From: Denis Kenzior @ 2011-02-16 18:04 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1239 bytes --]

Hi Martin,

On 02/15/2011 01:03 AM, Xu, Martin wrote:
> Denis/Marcel:
>> -----Original Message-----
>> From: Denis Kenzior [mailto:denkenz(a)gmail.com]
>> Sent: Tuesday, February 15, 2011 4:28 AM
>> To: ofono(a)ofono.org
>> Cc: Xu, Martin
>> Subject: Re: [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00
>>
>> Hi Martin,
>>
>> On 02/12/2011 03:41 AM, martin.xu(a)intel.com wrote:
>>> From: Martin Xu <martin.xu@intel.com>
>>>
>>> Device 00 is ppp port. Setting it as 01, my Huawei EM770W modem PPP
>>> connection can't work
>>> ---
>>>  plugins/ofono.rules |    2 +-
>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>
>> This contradicts commit bb58a729073abcb6c5b0b2fb8b120973dfa42a07.
> I can't quite understand why Dietrich needs to this commit. We formal configure can just make EM770W works.
> Could you help on this?

The Huawei firmware is funny, it can actually reconfigure the modem and
pcui ports (e.g. swap them).  So we might have to be a bit smarter and
figure out which ports are actually being used for what inside the modem
driver.

Talk to Marcel, I believe he has played with the Huawei hardware the
most and might have ideas on how to fix this.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00
  2011-02-16 18:04         ` Denis Kenzior
@ 2011-02-17  2:19           ` Marcel Holtmann
  0 siblings, 0 replies; 9+ messages in thread
From: Marcel Holtmann @ 2011-02-17  2:19 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1095 bytes --]

Hi Denis,

> >> This contradicts commit bb58a729073abcb6c5b0b2fb8b120973dfa42a07.
> > I can't quite understand why Dietrich needs to this commit. We formal configure can just make EM770W works.
> > Could you help on this?
> 
> The Huawei firmware is funny, it can actually reconfigure the modem and
> pcui ports (e.g. swap them).  So we might have to be a bit smarter and
> figure out which ports are actually being used for what inside the modem
> driver.

so I did apply this patch now since in the default settings the MDM port
should be on interface 0. All other ones are tempered with.

> Talk to Marcel, I believe he has played with the Huawei hardware the
> most and might have ideas on how to fix this.

And yes, I will add auto-detection for this now. It should be be
possible to figure this out.

ofonod[908]: PCUI: > AT^GETPORTMODE\r
ofonod[908]: PCUI: < \r\n^getportmode:type:WCDMA:Qualcomm,MDM:0,NDIS:1,DIAG:2,PCUI:3\r\n\r\nOK\r\n

All latest modules support ^GETPORTMODE command and the ones that don't
have only two ports anyway.

Regards

Marcel



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2011-02-17  2:19 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-12  9:41 [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue martin.xu
2011-02-12  9:41 ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package martin.xu
2011-02-12  9:41   ` [V3 PATCH 3/3] Huawei: set Huawei EM770W modem device to 00 martin.xu
2011-02-14 20:28     ` Denis Kenzior
2011-02-15  7:03       ` Xu, Martin
2011-02-16 18:04         ` Denis Kenzior
2011-02-17  2:19           ` Marcel Holtmann
2011-02-14 20:26   ` [V3 PATCH 2/3] PPP: Use default ACCM (0xffffffff) to trasmit package Denis Kenzior
2011-02-14 20:25 ` [V3 PATCH 1/3] PPP: Fix transmit ACCM and receive ACCM setting issue Denis Kenzior

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.