<div dir="ltr">Logic is sound.<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px"> the user ends up changing the CID that the device uses for default LTE attachment (e.g. CID=1 for Qualcomm or CID=16 for Huawei ME909u)</span></blockquote><div>Wouldn't this still end up being okay for users too. Once they realize they're using the wrong CDC & switch pdp-cid (& the lte back off timer expires), the next 4g connection attempt should re-set the LTE(1 /14) pdp-cid? That's how I read the Cinterion AT doc.</div><div><br></div><div>Code LGTM</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 14, 2017 at 8:51 AM, Aleksander Morgado <span dir="ltr"><<a href="mailto:aleksander@aleksander.es" target="_blank">aleksander@aleksander.es</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Some operators, most notably Verizon, require connection to be<br>
performed through a specific PDP context (#3). This API update allows<br>
the user to specify the PDP CID via a new 'pdp-cid' parameter given in<br>
either the Simple.Connect() or the Modem.CreateBearer() methods.<br>
<br>
This implementation is currently bound to every modem that uses the AT<br>
protocol and the AT+CGDCONT command to manage available PDP contexts.<br>
---<br>
<br>
Hey Dan, Reinhard and Matthew,<br>
<br>
Some months ago we discussed about how we could define the PDP context to be used in a connection, as some operators would require specific PDP contexts (e.g. Verizon would require PDP context #3 for the internet connection).<br>
<br>
This patch is an initial approach to the problem, by letting the user select in which PDP context ID the APN should be configured and selected for the connection.<br>
<br>
This parameter is optional, and if not given we'll default to the original logic of looking for the best CID to use, e.g. by re-using one with the same settings we're requesting, if available.<br>
<br>
This feature may be risky if, as Reinhard pointed out, the user ends up changing the CID that the device uses for default LTE attachment (e.g. CID=1 for Qualcomm or CID=16 for Huawei ME909u). But being it optional, I don't see why we shouldn't have this, if it helps setting up proper connections with operators that require a specific PDP context ID.<br>
<br>
What do you guys think?<br>
<br>
---<br>
 cli/mmcli-bearer.c                                 |  9 ++++<br>
 docs/reference/libmm-glib/<wbr>libmm-glib-sections.txt  |  4 ++<br>
 .../org.freedesktop.<wbr>ModemManager1.Modem.xml        |  2 +<br>
 libmm-glib/mm-bearer-<wbr>properties.c                  | 59 +++++++++++++++++++++-<br>
 libmm-glib/mm-bearer-<wbr>properties.h                  |  3 ++<br>
 libmm-glib/mm-simple-connect-<wbr>properties.c          | 34 +++++++++++++<br>
 libmm-glib/mm-simple-connect-<wbr>properties.h          |  3 ++<br>
 src/mm-broadband-bearer.c                          | 41 ++++++++++-----<br>
 src/mm-iface-modem-simple.c                        | 13 +++--<br>
 9 files changed, 150 insertions(+), 18 deletions(-)<br>
<br>
diff --git a/cli/mmcli-bearer.c b/cli/mmcli-bearer.c<br>
index cd9ecca0..daa86148 100644<br>
--- a/cli/mmcli-bearer.c<br>
+++ b/cli/mmcli-bearer.c<br>
@@ -163,11 +163,18 @@ print_bearer_info (MMBearer *bearer)<br>
<br>
     if (properties) {<br>
         gchar *ip_family_str;<br>
+        gchar *pdp_cid_str = NULL;<br>
+        guint  pdp_cid;<br>
<br>
         ip_family_str = (mm_bearer_ip_family_build_<wbr>string_from_mask (<br>
                              mm_bearer_properties_get_ip_<wbr>type (properties)));<br>
+<br>
+        if ((pdp_cid = mm_bearer_properties_get_pdp_<wbr>cid (properties)) != 0)<br>
+            pdp_cid_str = g_strdup_printf ("%u", pdp_cid);<br>
+<br>
         g_print ("  -------------------------\n"<br>
                  "  Properties         |         apn: '%s'\n"<br>
+                 "                     |     PDP CID: '%s'\n"<br>
                  "                     |     roaming: '%s'\n"<br>
                  "                     |     IP type: '%s'\n"<br>
                  "                     |        user: '%s'\n"<br>
@@ -175,6 +182,7 @@ print_bearer_info (MMBearer *bearer)<br>
                  "                     |      number: '%s'\n"<br>
                  "                     | Rm protocol: '%s'\n",<br>
                  VALIDATE_NONE (mm_bearer_properties_get_apn (properties)),<br>
+                 VALIDATE_NONE (pdp_cid_str),<br>
                  mm_bearer_properties_get_<wbr>allow_roaming (properties) ? "allowed" : "forbidden",<br>
                  VALIDATE_UNKNOWN (ip_family_str),<br>
                  VALIDATE_NONE (mm_bearer_properties_get_user (properties)),<br>
@@ -183,6 +191,7 @@ print_bearer_info (MMBearer *bearer)<br>
                  VALIDATE_UNKNOWN (mm_modem_cdma_rm_protocol_<wbr>get_string (<br>
                                        mm_bearer_properties_get_rm_<wbr>protocol (properties))));<br>
         g_free (ip_family_str);<br>
+        g_free (pdp_cid_str);<br>
     }<br>
<br>
     /* IPv4 */<br>
diff --git a/docs/reference/libmm-glib/<wbr>libmm-glib-sections.txt b/docs/reference/libmm-glib/<wbr>libmm-glib-sections.txt<br>
index 46f2d923..077e7ee3 100644<br>
--- a/docs/reference/libmm-glib/<wbr>libmm-glib-sections.txt<br>
+++ b/docs/reference/libmm-glib/<wbr>libmm-glib-sections.txt<br>
@@ -779,6 +779,8 @@ mm_simple_connect_properties_<wbr>get_operator_id<br>
 mm_simple_connect_properties_<wbr>set_operator_id<br>
 mm_simple_connect_properties_<wbr>get_apn<br>
 mm_simple_connect_properties_<wbr>set_apn<br>
+mm_simple_connect_properties_<wbr>get_pdp_cid<br>
+mm_simple_connect_properties_<wbr>set_pdp_cid<br>
 mm_simple_connect_properties_<wbr>get_allowed_auth<br>
 mm_simple_connect_properties_<wbr>set_allowed_auth<br>
 mm_simple_connect_properties_<wbr>get_user<br>
@@ -1064,6 +1066,8 @@ mm_bearer_properties_new<br>
 <SUBSECTION GettersSetters><br>
 mm_bearer_properties_get_apn<br>
 mm_bearer_properties_set_apn<br>
+mm_bearer_properties_get_pdp_<wbr>cid<br>
+mm_bearer_properties_set_pdp_<wbr>cid<br>
 mm_bearer_properties_get_<wbr>allowed_auth<br>
 mm_bearer_properties_set_<wbr>allowed_auth<br>
 mm_bearer_properties_get_user<br>
diff --git a/introspection/org.<wbr>freedesktop.ModemManager1.<wbr>Modem.xml b/introspection/org.<wbr>freedesktop.ModemManager1.<wbr>Modem.xml<br>
index a5a236c5..23c14ede 100644<br>
--- a/introspection/org.<wbr>freedesktop.ModemManager1.<wbr>Modem.xml<br>
+++ b/introspection/org.<wbr>freedesktop.ModemManager1.<wbr>Modem.xml<br>
@@ -61,6 +61,8 @@<br>
         <variablelist><br>
         <varlistentry><term><literal>"<wbr>apn"</literal></term><br>
           <listitem><para>Access Point Name, given as a string value (signature <literal>"s"</literal>). Required in 3GPP.</para></listitem></<wbr>varlistentry><br>
+        <varlistentry><term><literal>"<wbr>pdp-cid"</literal></term><br>
+          <listitem><para>PDP context identifier, given as an unsigned 32-bit integer value (signature <literal>"u"</literal>). Optional in 3GPP.</para></listitem></<wbr>varlistentry><br>
         <varlistentry><term><literal>"<wbr>ip-type"</literal></term><br>
           <listitem><para>Addressing type, given as a <link linkend="MMBearerIpFamily"><wbr>MMBearerIpFamily</link> value (signature <literal>"u"</literal>). Optional in 3GPP and CDMA.</para></listitem></<wbr>varlistentry><br>
         <varlistentry><term><literal>"<wbr>allowed-auth"</literal></term><br>
diff --git a/libmm-glib/mm-bearer-<wbr>properties.c b/libmm-glib/mm-bearer-<wbr>properties.c<br>
index c87068ff..8e54f108 100644<br>
--- a/libmm-glib/mm-bearer-<wbr>properties.c<br>
+++ b/libmm-glib/mm-bearer-<wbr>properties.c<br>
@@ -34,6 +34,7 @@<br>
 G_DEFINE_TYPE (MMBearerProperties, mm_bearer_properties, G_TYPE_OBJECT);<br>
<br>
 #define PROPERTY_APN             "apn"<br>
+#define PROPERTY_PDP_CID         "pdp-cid"<br>
 #define PROPERTY_ALLOWED_AUTH    "allowed-auth"<br>
 #define PROPERTY_USER            "user"<br>
 #define PROPERTY_PASSWORD        "password"<br>
@@ -45,6 +46,8 @@ G_DEFINE_TYPE (MMBearerProperties, mm_bearer_properties, G_TYPE_OBJECT);<br>
 struct _MMBearerPropertiesPrivate {<br>
     /* APN */<br>
     gchar *apn;<br>
+    /* PDP CID */<br>
+    guint pdp_cid;<br>
     /* IP type */<br>
     MMBearerIpFamily ip_type;<br>
     /* Allowed auth */<br>
@@ -100,6 +103,40 @@ mm_bearer_properties_get_apn (MMBearerProperties *self)<br>
 /*****************************<wbr>******************************<wbr>******************/<br>
<br>
 /**<br>
+ * mm_bearer_properties_set_pdp_<wbr>cid:<br>
+ * @self: a #MMBearerProperties.<br>
+ * @pdp_cid: PDP context ID.<br>
+ *<br>
+ * Sets the PDP context ID to use in the connection attempt.<br>
+ */<br>
+void<br>
+mm_bearer_properties_set_pdp_<wbr>cid (MMBearerProperties *self,<br>
+                                  guint               pdp_cid)<br>
+{<br>
+    g_return_if_fail (MM_IS_BEARER_PROPERTIES (self));<br>
+<br>
+    self->priv->pdp_cid = pdp_cid;<br>
+}<br>
+<br>
+/**<br>
+ * mm_bearer_properties_get_pdp_<wbr>cid:<br>
+ * @self: a #MMBearerProperties.<br>
+ *<br>
+ * Gets the PDP context ID to use in the connection attempt.<br>
+ *<br>
+ * Returns: the context number, or 0 if not set.<br>
+ */<br>
+guint<br>
+mm_bearer_properties_get_pdp_<wbr>cid (MMBearerProperties *self)<br>
+{<br>
+    g_return_val_if_fail (MM_IS_BEARER_PROPERTIES (self), 0);<br>
+<br>
+    return self->priv->pdp_cid;<br>
+}<br>
+<br>
+/****************************<wbr>******************************<wbr>*******************/<br>
+<br>
+/**<br>
  * mm_bearer_properties_set_<wbr>allowed_auth:<br>
  * @self: a #MMBearerProperties.<br>
  * @allowed_auth: a bitmask of #MMBearerAllowedAuth values. %MM_BEARER_ALLOWED_AUTH_<wbr>UNKNOWN may be given to request the modem-default method.<br>
@@ -361,6 +398,12 @@ mm_bearer_properties_get_<wbr>dictionary (MMBearerProperties *self)<br>
                                PROPERTY_APN,<br>
                                g_variant_new_string (self->priv->apn));<br>
<br>
+    if (self->priv->pdp_cid)<br>
+        g_variant_builder_add (&builder,<br>
+                               "{sv}",<br>
+                               PROPERTY_PDP_CID,<br>
+                               g_variant_new_uint32 (self->priv->pdp_cid));<br>
+<br>
     if (self->priv->allowed_auth != MM_BEARER_ALLOWED_AUTH_<wbr>UNKNOWN)<br>
         g_variant_builder_add (&builder,<br>
                                "{sv}",<br>
@@ -428,7 +471,16 @@ mm_bearer_properties_consume_<wbr>string (MMBearerProperties *self,<br>
<br>
     if (g_str_equal (key, PROPERTY_APN))<br>
         mm_bearer_properties_set_apn (self, value);<br>
-    else if (g_str_equal (key, PROPERTY_ALLOWED_AUTH)) {<br>
+    else if (g_str_equal (key, PROPERTY_PDP_CID)) {<br>
+        guint aux;<br>
+<br>
+        if (!mm_get_uint_from_str (value, &aux)) {<br>
+            g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,<br>
+                         "Invalid PDP CID given: %s", value);<br>
+            return FALSE;<br>
+        }<br>
+        mm_bearer_properties_set_pdp_<wbr>cid (self, aux);<br>
+    }else if (g_str_equal (key, PROPERTY_ALLOWED_AUTH)) {<br>
         GError *inner_error = NULL;<br>
         MMBearerAllowedAuth allowed_auth;<br>
<br>
@@ -548,6 +600,10 @@ mm_bearer_properties_consume_<wbr>variant (MMBearerProperties *properties,<br>
         mm_bearer_properties_set_apn (<br>
             properties,<br>
             g_variant_get_string (value, NULL));<br>
+    else if (g_str_equal (key, PROPERTY_PDP_CID))<br>
+        mm_bearer_properties_set_pdp_<wbr>cid (<br>
+            properties,<br>
+            g_variant_get_uint32 (value));<br>
     else if (g_str_equal (key, PROPERTY_ALLOWED_AUTH))<br>
         mm_bearer_properties_set_<wbr>allowed_auth (<br>
             properties,<br>
@@ -664,6 +720,7 @@ mm_bearer_properties_cmp (MMBearerProperties *a,<br>
                           MMBearerProperties *b)<br>
 {<br>
     return ((!g_strcmp0 (a->priv->apn, b->priv->apn)) &&<br>
+            (a->priv->pdp_cid == b->priv->pdp_cid) &&<br>
             (a->priv->ip_type == b->priv->ip_type) &&<br>
             (!g_strcmp0 (a->priv->number, b->priv->number)) &&<br>
             (a->priv->allowed_auth == b->priv->allowed_auth) &&<br>
diff --git a/libmm-glib/mm-bearer-<wbr>properties.h b/libmm-glib/mm-bearer-<wbr>properties.h<br>
index 361c8678..6fc1347d 100644<br>
--- a/libmm-glib/mm-bearer-<wbr>properties.h<br>
+++ b/libmm-glib/mm-bearer-<wbr>properties.h<br>
@@ -59,6 +59,8 @@ MMBearerProperties *mm_bearer_properties_new (void);<br>
<br>
 void mm_bearer_properties_set_apn           (MMBearerProperties *self,<br>
                                              const gchar *apn);<br>
+void mm_bearer_properties_set_pdp_<wbr>cid       (MMBearerProperties *self,<br>
+                                             guint               pdp_cid);<br>
 void mm_bearer_properties_set_<wbr>allowed_auth  (MMBearerProperties *self,<br>
                                              MMBearerAllowedAuth allowed_auth);<br>
 void mm_bearer_properties_set_user          (MMBearerProperties *self,<br>
@@ -75,6 +77,7 @@ void mm_bearer_properties_set_rm_<wbr>protocol   (MMBearerProperties *self,<br>
                                              MMModemCdmaRmProtocol protocol);<br>
<br>
 const gchar           *mm_bearer_properties_get_apn           (MMBearerProperties *self);<br>
+guint                  mm_bearer_properties_get_pdp_<wbr>cid       (MMBearerProperties *self);<br>
 MMBearerAllowedAuth    mm_bearer_properties_get_<wbr>allowed_auth  (MMBearerProperties *self);<br>
 const gchar           *mm_bearer_properties_get_user          (MMBearerProperties *self);<br>
 const gchar           *mm_bearer_properties_get_<wbr>password      (MMBearerProperties *self);<br>
diff --git a/libmm-glib/mm-simple-<wbr>connect-properties.c b/libmm-glib/mm-simple-<wbr>connect-properties.c<br>
index 200b7c38..c696f50c 100644<br>
--- a/libmm-glib/mm-simple-<wbr>connect-properties.c<br>
+++ b/libmm-glib/mm-simple-<wbr>connect-properties.c<br>
@@ -153,6 +153,40 @@ mm_simple_connect_properties_<wbr>get_apn (MMSimpleConnectProperties *self)<br>
 /*****************************<wbr>******************************<wbr>******************/<br>
<br>
 /**<br>
+ * mm_simple_connect_properties_<wbr>set_pdp_cid:<br>
+ * @self: a #MMSimpleConnectProperties.<br>
+ * @pdp_cid: PDP context ID.<br>
+ *<br>
+ * Sets the PDP context ID to use in the connection attempt.<br>
+ */<br>
+void<br>
+mm_simple_connect_properties_<wbr>set_pdp_cid (MMSimpleConnectProperties *self,<br>
+                                          guint                      pdp_cid)<br>
+{<br>
+    g_return_if_fail (MM_IS_SIMPLE_CONNECT_<wbr>PROPERTIES (self));<br>
+<br>
+    mm_bearer_properties_set_pdp_<wbr>cid (self->priv->bearer_<wbr>properties, pdp_cid);<br>
+}<br>
+<br>
+/**<br>
+ * mm_simple_connect_properties_<wbr>get_pdp_cid:<br>
+ * @self: a #MMSimpleConnectProperties.<br>
+ *<br>
+ * Gets the PDP context ID to use in the connection attempt.<br>
+ *<br>
+ * Returns: the context number, or 0 if not set.<br>
+ */<br>
+guint<br>
+mm_simple_connect_properties_<wbr>get_pdp_cid (MMSimpleConnectProperties *self)<br>
+{<br>
+    g_return_val_if_fail (MM_IS_SIMPLE_CONNECT_<wbr>PROPERTIES (self), 0);<br>
+<br>
+    return mm_bearer_properties_get_pdp_<wbr>cid (self->priv->bearer_<wbr>properties);<br>
+}<br>
+<br>
+/****************************<wbr>******************************<wbr>*******************/<br>
+<br>
+/**<br>
  * mm_simple_connect_properties_<wbr>set_allowed_auth:<br>
  * @self: a #MMSimpleConnectProperties.<br>
  * @allowed_auth: a bitmask of #MMBearerAllowedAuth values. %MM_BEARER_ALLOWED_AUTH_<wbr>UNKNOWN may be given to request the modem-default method.<br>
diff --git a/libmm-glib/mm-simple-<wbr>connect-properties.h b/libmm-glib/mm-simple-<wbr>connect-properties.h<br>
index 3167db0a..5378c5e9 100644<br>
--- a/libmm-glib/mm-simple-<wbr>connect-properties.h<br>
+++ b/libmm-glib/mm-simple-<wbr>connect-properties.h<br>
@@ -65,6 +65,8 @@ void mm_simple_connect_properties_<wbr>set_operator_id   (MMSimpleConnectProperties *<br>
                                                      const gchar *operator_id);<br>
 void mm_simple_connect_properties_<wbr>set_apn           (MMSimpleConnectProperties *self,<br>
                                                      const gchar *apn);<br>
+void mm_simple_connect_properties_<wbr>set_pdp_cid       (MMSimpleConnectProperties *self,<br>
+                                                     guint pdp_cid);<br>
 void mm_simple_connect_properties_<wbr>set_allowed_auth  (MMSimpleConnectProperties *self,<br>
                                                      MMBearerAllowedAuth allowed_auth);<br>
 void mm_simple_connect_properties_<wbr>set_user          (MMSimpleConnectProperties *self,<br>
@@ -81,6 +83,7 @@ void mm_simple_connect_properties_<wbr>set_number        (MMSimpleConnectProperties *<br>
 const gchar         *mm_simple_connect_properties_<wbr>get_pin           (MMSimpleConnectProperties *self);<br>
 const gchar         *mm_simple_connect_properties_<wbr>get_operator_id   (MMSimpleConnectProperties *self);<br>
 const gchar         *mm_simple_connect_properties_<wbr>get_apn           (MMSimpleConnectProperties *self);<br>
+guint                mm_simple_connect_properties_<wbr>get_pdp_cid       (MMSimpleConnectProperties *self);<br>
 MMBearerAllowedAuth  mm_simple_connect_properties_<wbr>get_allowed_auth  (MMSimpleConnectProperties *self);<br>
 const gchar         *mm_simple_connect_properties_<wbr>get_user          (MMSimpleConnectProperties *self);<br>
 const gchar         *mm_simple_connect_properties_<wbr>get_password      (MMSimpleConnectProperties *self);<br>
diff --git a/src/mm-broadband-bearer.c b/src/mm-broadband-bearer.c<br>
index ac701733..de4fa72e 100644<br>
--- a/src/mm-broadband-bearer.c<br>
+++ b/src/mm-broadband-bearer.c<br>
@@ -732,25 +732,17 @@ initialize_pdp_context_ready (MMBaseModem  *modem,<br>
 }<br>
<br>
 static void<br>
-find_cid_ready (MMBaseModem  *modem,<br>
-                GAsyncResult *res,<br>
-                GTask        *task)<br>
+initialize_pdp_context (GTask *task)<br>
 {<br>
     gchar                   *apn;<br>
     gchar                   *command;<br>
-    GError                  *error = NULL;<br>
     const gchar             *pdp_type;<br>
     CidSelection3gppContext *ctx;<br>
<br>
     ctx = (CidSelection3gppContext *) g_task_get_task_data (task);<br>
<br>
-    mm_base_modem_at_sequence_<wbr>full_finish (modem, res, NULL, &error);<br>
-    if (error) {<br>
-        mm_warn ("Couldn't find best CID to use: '%s'", error->message);<br>
-        g_task_return_error (task, error);<br>
-        g_object_unref (task);<br>
-        return;<br>
-    }<br>
+    /* If no error reported, we must have a valid CID to be used */<br>
+    g_assert (ctx->cid != 0);<br>
<br>
     /* Validate requested PDP type */<br>
     pdp_type = mm_3gpp_get_pdp_type_from_ip_<wbr>family (ctx->ip_family);<br>
@@ -766,9 +758,6 @@ find_cid_ready (MMBaseModem  *modem,<br>
         return;<br>
     }<br>
<br>
-    /* If no error reported, we must have a valid CID to be used */<br>
-    g_assert (ctx->cid != 0);<br>
-<br>
     /* If there's already a PDP context defined, just use it */<br>
     if (ctx->use_existing_cid) {<br>
         g_task_return_int (task, (gssize) ctx->cid);<br>
@@ -792,6 +781,24 @@ find_cid_ready (MMBaseModem  *modem,<br>
     g_free (command);<br>
 }<br>
<br>
+static void<br>
+find_cid_ready (MMBaseModem  *modem,<br>
+                GAsyncResult *res,<br>
+                GTask        *task)<br>
+{<br>
+    GError *error = NULL;<br>
+<br>
+    mm_base_modem_at_sequence_<wbr>full_finish (modem, res, NULL, &error);<br>
+    if (error) {<br>
+        mm_warn ("Couldn't find best CID to use: '%s'", error->message);<br>
+        g_task_return_error (task, error);<br>
+        g_object_unref (task);<br>
+        return;<br>
+    }<br>
+<br>
+    initialize_pdp_context (task);<br>
+}<br>
+<br>
 static gboolean<br>
 parse_cid_range (MMBaseModem              *modem,<br>
                  CidSelection3gppContext  *ctx,<br>
@@ -998,6 +1005,12 @@ cid_selection_3gpp (MMBroadbandBearer   *self,<br>
     task = g_task_new (self, cancellable, callback, user_data);<br>
     g_task_set_task_data (task, ctx, (GDestroyNotify) cid_selection_3gpp_context_<wbr>free);<br>
<br>
+    if ((ctx->cid = mm_bearer_properties_get_pdp_<wbr>cid (mm_base_bearer_peek_config (MM_BASE_BEARER (ctx->self)))) != 0) {<br>
+        mm_dbg ("Explicit CID requested by the user: %u", ctx->cid);<br>
+        initialize_pdp_context (task);<br>
+        return;<br>
+    }<br>
+<br>
     mm_dbg ("Looking for best CID...");<br>
     mm_base_modem_at_sequence_full (ctx->modem,<br>
                                     ctx->primary,<br>
diff --git a/src/mm-iface-modem-simple.c b/src/mm-iface-modem-simple.c<br>
index a16adb19..59d980e4 100644<br>
--- a/src/mm-iface-modem-simple.c<br>
+++ b/src/mm-iface-modem-simple.c<br>
@@ -651,9 +651,10 @@ connect_auth_ready (MMBaseModem *self,<br>
<br>
     /* Log about all the parameters being used for the simple connect */<br>
     {<br>
-        MMBearerAllowedAuth allowed_auth;<br>
-        gchar *str;<br>
-        MMBearerIpFamily ip_family;<br>
+        MMBearerAllowedAuth  allowed_auth;<br>
+        gchar               *str;<br>
+        MMBearerIpFamily     ip_family;<br>
+        guint                aux_uint;<br>
<br>
 #define VALIDATE_UNSPECIFIED(str) (str ? str : "unspecified")<br>
<br>
@@ -665,6 +666,12 @@ connect_auth_ready (MMBaseModem *self,<br>
<br>
         mm_dbg ("   APN: %s", VALIDATE_UNSPECIFIED (mm_simple_connect_properties_<wbr>get_apn (ctx->properties)));<br>
<br>
+        aux_uint = mm_simple_connect_properties_<wbr>get_pdp_cid (ctx->properties);<br>
+        if (aux_uint)<br>
+            mm_dbg ("   PDP CID: %u", aux_uint);<br>
+        else<br>
+            mm_dbg ("   PDP CID: unspecified");<br>
+<br>
         ip_family = mm_simple_connect_properties_<wbr>get_ip_type (ctx->properties);<br>
         if (ip_family != MM_BEARER_IP_FAMILY_NONE) {<br>
             str = mm_bearer_ip_family_build_<wbr>string_from_mask (ip_family);<br>
--<br>
2.12.2<br>
</blockquote></div><br></div>