* context activation quickly after context deactivation fails @ 2012-09-03 12:50 Cedric Jehasse 2012-09-05 19:41 ` Denis Kenzior 0 siblings, 1 reply; 5+ messages in thread From: Cedric Jehasse @ 2012-09-03 12:50 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 2934 bytes --] Hi, When i want to change a Property (eg. APN) of an Active ConnectionContext. I first deactivate the context, wait for a reply then set the property and re-activate the context. The problem is i'm already trying to re-activate the context, before oFono gets a "NO CARRIER" from the modem. oFono tries to send AT+CGDCONT, but get's a "NO CARRIER" response and fails to activate the context. Is there a way to tell if it's ready to re-activate? Should oFono wait for the "NO CARRIER" before it sends a reply to the deactivation? Here's a log of the problem Jan 4 22:14:38 ofonod[3022]: drivers/atmodem/gprs-context.c:at_gprs_deactivate_primary() cid 1 Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_generate_event: current state 9:OPENED Jan 4 22:14:38 ofonod[3022]: PPP: event: 3 (Close), action: 8224, new_state: 4 (CLOSING) Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_initialize_restart_count: current state 9:OPENED Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_send_terminate_request: current state 9:OPENED Jan 4 22:14:38 ofonod[3022]: PPP: ipcp: pppcp_generate_event: current state 9:OPENED Jan 4 22:14:38 ofonod[3022]: PPP: event: 1 (Down), action: 201, new_state: 1 (STARTING) Jan 4 22:14:38 ofonod[3022]: PPP: gatchat/gatppp.c:ppp_enter_phase() 5 Jan 4 22:14:38 ofonod[3022]: plugins/udevng.c:remove_device() /sys/devices/virtual/net/ppp0 Jan 4 22:14:38 ofonod[3022]: plugins/udev.c:udev_event() subsystem net remove Jan 4 22:14:38 ofonod[3022]: plugins/udev.c:remove_modem() /devices/virtual/net/ppp0 Jan 4 22:14:38 ofonod[3022]: plugins/udev.c:udev_event() subsystem net finished Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_process_terminate_ack: current state 4:CLOSING Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_generate_event: current state 4:CLOSING Jan 4 22:14:38 ofonod[3022]: PPP: event: 11 (RTA), action: 802, new_state: 2 (CLOSED) Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_this_layer_finished: current state 2:CLOSED Jan 4 22:14:38 ofonod[3022]: PPP: gatchat/gatppp.c:ppp_enter_phase() 0 Jan 4 22:14:38 ofonod[3022]: PPP: gatchat/gatppp.c:ppp_dead() Jan 4 22:14:38 ofonod[3022]: src/gprs.c:assign_context() Jan 4 22:14:38 ofonod[3022]: src/gprs.c:assign_context() gprs[0x557f80] context_driver[0x556a40] Jan 4 22:14:38 ofonod[3022]: drivers/atmodem/gprs-context.c:at_gprs_activate_primary() cid 1 Jan 4 22:14:38 ofonod[3022]: Modem: > AT+CGDCONT=1,"IP","test"\r Jan 4 22:14:39 ofonod[3022]: PCUI: < \r\n^RSSI:17\r\n Jan 4 22:14:40 ofonod[3022]: PCUI: < \r\n^MODE:5,4\r\n Jan 4 22:14:40 ofonod[3022]: Modem: < \r\nNO CARRIER\r\n Jan 4 22:14:40 ofonod[3022]: drivers/atmodem/gprs-context.c:at_cgdcont_cb() ok 0 Jan 4 22:14:40 ofonod[3022]: src/gprs.c:pri_activate_callback() 0x55dc88 Jan 4 22:14:40 ofonod[3022]: src/gprs.c:pri_activate_callback() Activating context failed with error: Unknown error type Thanks, Cedric ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: context activation quickly after context deactivation fails 2012-09-03 12:50 context activation quickly after context deactivation fails Cedric Jehasse @ 2012-09-05 19:41 ` Denis Kenzior 2012-09-06 14:09 ` Cedric Jehasse 0 siblings, 1 reply; 5+ messages in thread From: Denis Kenzior @ 2012-09-05 19:41 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 3347 bytes --] Hi Cedric, On 09/03/2012 07:50 AM, Cedric Jehasse wrote: > Hi, > > When i want to change a Property (eg. APN) of an Active > ConnectionContext. I first deactivate the context, wait for a reply > then set the property and re-activate the context. > The problem is i'm already trying to re-activate the context, before > oFono gets a "NO CARRIER" from the modem. oFono tries to send > AT+CGDCONT, but get's a "NO CARRIER" response and fails to activate > the context. > Is there a way to tell if it's ready to re-activate? Should oFono wait > for the "NO CARRIER" before it sends a reply to the deactivation? > > Here's a log of the problem > Jan 4 22:14:38 ofonod[3022]: > drivers/atmodem/gprs-context.c:at_gprs_deactivate_primary() cid 1 > Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_generate_event: current > state 9:OPENED > Jan 4 22:14:38 ofonod[3022]: PPP: event: 3 (Close), action: 8224, > new_state: 4 (CLOSING) > Jan 4 22:14:38 ofonod[3022]: PPP: lcp: > pppcp_initialize_restart_count: current state 9:OPENED > Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_send_terminate_request: > current state 9:OPENED > Jan 4 22:14:38 ofonod[3022]: PPP: ipcp: pppcp_generate_event: current > state 9:OPENED > Jan 4 22:14:38 ofonod[3022]: PPP: event: 1 (Down), action: 201, > new_state: 1 (STARTING) > Jan 4 22:14:38 ofonod[3022]: PPP: gatchat/gatppp.c:ppp_enter_phase() 5 > Jan 4 22:14:38 ofonod[3022]: plugins/udevng.c:remove_device() > /sys/devices/virtual/net/ppp0 > Jan 4 22:14:38 ofonod[3022]: plugins/udev.c:udev_event() subsystem net remove > Jan 4 22:14:38 ofonod[3022]: plugins/udev.c:remove_modem() > /devices/virtual/net/ppp0 > Jan 4 22:14:38 ofonod[3022]: plugins/udev.c:udev_event() subsystem net finished > Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_process_terminate_ack: > current state 4:CLOSING > Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_generate_event: current > state 4:CLOSING > Jan 4 22:14:38 ofonod[3022]: PPP: event: 11 (RTA), action: 802, > new_state: 2 (CLOSED) > Jan 4 22:14:38 ofonod[3022]: PPP: lcp: pppcp_this_layer_finished: > current state 2:CLOSED > Jan 4 22:14:38 ofonod[3022]: PPP: gatchat/gatppp.c:ppp_enter_phase() 0 > Jan 4 22:14:38 ofonod[3022]: PPP: gatchat/gatppp.c:ppp_dead() > Jan 4 22:14:38 ofonod[3022]: src/gprs.c:assign_context() > Jan 4 22:14:38 ofonod[3022]: src/gprs.c:assign_context() > gprs[0x557f80] context_driver[0x556a40] > Jan 4 22:14:38 ofonod[3022]: > drivers/atmodem/gprs-context.c:at_gprs_activate_primary() cid 1 > Jan 4 22:14:38 ofonod[3022]: Modem:> AT+CGDCONT=1,"IP","test"\r > Jan 4 22:14:39 ofonod[3022]: PCUI:< \r\n^RSSI:17\r\n > Jan 4 22:14:40 ofonod[3022]: PCUI:< \r\n^MODE:5,4\r\n > Jan 4 22:14:40 ofonod[3022]: Modem:< \r\nNO CARRIER\r\n > Jan 4 22:14:40 ofonod[3022]: > drivers/atmodem/gprs-context.c:at_cgdcont_cb() ok 0 > Jan 4 22:14:40 ofonod[3022]: src/gprs.c:pri_activate_callback() 0x55dc88 > Jan 4 22:14:40 ofonod[3022]: src/gprs.c:pri_activate_callback() > Activating context failed with error: Unknown error type > It does indeed sound like oFono is not waiting for the final response, in this case a 'NO CARRIER'. Can you try a highly experimental patch (attached) and tell me if something along these lines would work for your case? Regards, -Denis [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-gprs-experimental-no-carrier-fix.patch --] [-- Type: text/x-patch, Size: 1789 bytes --] >From ec0798643cad94c5f337c891fe7447003613ca54 Mon Sep 17 00:00:00 2001 From: Denis Kenzior <denkenz@gmail.com> Date: Wed, 5 Sep 2012 14:40:06 -0500 Subject: [PATCH] gprs: experimental no carrier fix --- drivers/atmodem/gprs-context.c | 21 +++++++++++++++------ 1 files changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/atmodem/gprs-context.c b/drivers/atmodem/gprs-context.c index 3694c27..4d5ed91 100644 --- a/drivers/atmodem/gprs-context.c +++ b/drivers/atmodem/gprs-context.c @@ -110,6 +110,19 @@ static void ppp_disconnect(GAtPPPDisconnectReason reason, gpointer user_data) g_at_ppp_unref(gcd->ppp); gcd->ppp = NULL; + /* + * If the channel of gcd->chat is NULL, it might cause + * gprs_context_remove get called and the gprs context will be + * removed. + */ + g_at_chat_resume(gcd->chat); +} + +static void no_carrier_notify(GAtResult *result, gpointer user_data) +{ + struct ofono_gprs_context *gc = user_data; + struct gprs_context_data *gcd = ofono_gprs_context_get_data(gc); + switch (gcd->state) { case STATE_ENABLING: CALLBACK_WITH_FAILURE(gcd->cb, gcd->cb_data); @@ -124,12 +137,6 @@ static void ppp_disconnect(GAtPPPDisconnectReason reason, gpointer user_data) gcd->active_context = 0; gcd->state = STATE_IDLE; - /* - * If the channel of gcd->chat is NULL, it might cause - * gprs_context_remove get called and the gprs context will be - * removed. - */ - g_at_chat_resume(gcd->chat); } static gboolean setup_ppp(struct ofono_gprs_context *gc) @@ -363,6 +370,8 @@ static int at_gprs_context_probe(struct ofono_gprs_context *gc, return 0; g_at_chat_register(chat, "+CGEV:", cgev_notify, FALSE, gc, NULL); + g_at_chat_register(chat, "NO CARRIER", no_carrier_notify, + FALSE, gc, NULL); return 0; } -- 1.7.8.6 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: context activation quickly after context deactivation fails 2012-09-05 19:41 ` Denis Kenzior @ 2012-09-06 14:09 ` Cedric Jehasse 2012-09-06 15:13 ` Denis Kenzior 0 siblings, 1 reply; 5+ messages in thread From: Cedric Jehasse @ 2012-09-06 14:09 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1187 bytes --] Hi Denis, with the patch i don't get a reply when deactivating the context. From the on it's not possible to activate the context, because the operation is still in progress. This is a log of the deactivation: Jan 1 03:13:05 ofonod[6856]: drivers/atmodem/gprs-context.c:at_gprs_deactivate_primary() cid 1 Jan 1 03:13:05 ofonod[6856]: PPP: lcp: pppcp_generate_event: current state 9:OPENED Jan 1 03:13:05 ofonod[6856]: PPP: event: 3 (Close), action: 8224, new_state: 4 (CLOSING) Jan 1 03:13:05 ofonod[6856]: PPP: lcp: pppcp_initialize_restart_count: current state 9:OPENED Jan 1 03:13:05 ofonod[6856]: PPP: lcp: pppcp_send_terminate_request: current state 9:OPENED Jan 1 03:13:05 ofonod[6856]: PPP: ipcp: pppcp_generate_event: current state 9:OPENED Jan 1 03:13:05 ofonod[6856]: PPP: event: 1 (Down), action: 201, new_state: 1 (STARTING) Jan 1 03:13:05 ofonod[6856]: PPP: gatchat/gatppp.c:ppp_enter_phase() 5 Jan 1 03:13:07 ofonod[6856]: PCUI: < \r\n^MODE:5,4\r\n Jan 1 03:13:07 ofonod[6856]: Modem: < \r\nNO CARRIER\r\n Jan 1 03:13:08 ofonod[6856]: PCUI: < \r\n^RSSI:18\r\n Jan 1 03:13:11 ofonod[6856]: PCUI: < \r\n^RSSI:18\r\n thanks, Cedric ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: context activation quickly after context deactivation fails 2012-09-06 14:09 ` Cedric Jehasse @ 2012-09-06 15:13 ` Denis Kenzior 2012-09-07 9:27 ` Cedric Jehasse 0 siblings, 1 reply; 5+ messages in thread From: Denis Kenzior @ 2012-09-06 15:13 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 1668 bytes --] Hi Cedric, On 09/06/2012 09:09 AM, Cedric Jehasse wrote: > Hi Denis, > > with the patch i don't get a reply when deactivating the context. From > the on it's not possible to activate the context, because the > operation is still in progress. > This is a log of the deactivation: > > Jan 1 03:13:05 ofonod[6856]: > drivers/atmodem/gprs-context.c:at_gprs_deactivate_primary() cid 1 > Jan 1 03:13:05 ofonod[6856]: PPP: lcp: pppcp_generate_event: current > state 9:OPENED > Jan 1 03:13:05 ofonod[6856]: PPP: event: 3 (Close), action: 8224, > new_state: 4 (CLOSING) > Jan 1 03:13:05 ofonod[6856]: PPP: lcp: > pppcp_initialize_restart_count: current state 9:OPENED > Jan 1 03:13:05 ofonod[6856]: PPP: lcp: pppcp_send_terminate_request: > current state 9:OPENED > Jan 1 03:13:05 ofonod[6856]: PPP: ipcp: pppcp_generate_event: current > state 9:OPENED > Jan 1 03:13:05 ofonod[6856]: PPP: event: 1 (Down), action: 201, > new_state: 1 (STARTING) > Jan 1 03:13:05 ofonod[6856]: PPP: gatchat/gatppp.c:ppp_enter_phase() 5 > Jan 1 03:13:07 ofonod[6856]: PCUI:< \r\n^MODE:5,4\r\n > Jan 1 03:13:07 ofonod[6856]: Modem:< \r\nNO CARRIER\r\n > Jan 1 03:13:08 ofonod[6856]: PCUI:< \r\n^RSSI:18\r\n > Jan 1 03:13:11 ofonod[6856]: PCUI:< \r\n^RSSI:18\r\n Looks like I got the chat instances mixed up since the NO CARRIER is not being picked up. Can you change: + g_at_chat_register(chat, "NO CARRIER", no_carrier_notify, + FALSE, gc, NULL); to read: + g_at_chat_register(gcd->chat, "NO CARRIER", no_carrier_notify, + FALSE, gc, NULL); Regards, -Denis ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: context activation quickly after context deactivation fails 2012-09-06 15:13 ` Denis Kenzior @ 2012-09-07 9:27 ` Cedric Jehasse 0 siblings, 0 replies; 5+ messages in thread From: Cedric Jehasse @ 2012-09-07 9:27 UTC (permalink / raw) To: ofono [-- Attachment #1: Type: text/plain, Size: 343 bytes --] Hi Dennis, > Can you change: > + g_at_chat_register(chat, "NO CARRIER", no_carrier_notify, > + FALSE, gc, NULL); > > to read: > > + g_at_chat_register(gcd->chat, "NO CARRIER", no_carrier_notify, > + FALSE, gc, NULL); > it's working now! Thanks, Cedric ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-09-07 9:27 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-09-03 12:50 context activation quickly after context deactivation fails Cedric Jehasse 2012-09-05 19:41 ` Denis Kenzior 2012-09-06 14:09 ` Cedric Jehasse 2012-09-06 15:13 ` Denis Kenzior 2012-09-07 9:27 ` Cedric Jehasse
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.