aboutsummaryrefslogtreecommitdiff
path: root/src/mm-port-qmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-port-qmi.c')
-rw-r--r--src/mm-port-qmi.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/mm-port-qmi.c b/src/mm-port-qmi.c
index fa723dbb..33519ee7 100644
--- a/src/mm-port-qmi.c
+++ b/src/mm-port-qmi.c
@@ -36,6 +36,7 @@ struct _MMPortQmiPrivate {
gboolean opening;
QmiDevice *qmi_device;
GList *services;
+ gboolean llp_is_raw_ip;
};
/*****************************************************************************/
@@ -163,6 +164,14 @@ mm_port_qmi_allocate_client (MMPortQmi *self,
/*****************************************************************************/
+gboolean
+mm_port_qmi_llp_is_raw_ip (MMPortQmi *self)
+{
+ return self->priv->llp_is_raw_ip;
+}
+
+/*****************************************************************************/
+
typedef enum {
PORT_OPEN_STEP_FIRST,
PORT_OPEN_STEP_CHECK_OPENING,
@@ -421,10 +430,18 @@ port_open_context_step (PortOpenContext *ctx)
mm_dbg ("Checking data format: kernel %s, device %s",
qmi_device_expected_data_format_get_string (ctx->kernel_data_format),
qmi_wda_link_layer_protocol_get_string (ctx->llp));
- if ((ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_802_3 &&
- ctx->llp == QMI_WDA_LINK_LAYER_PROTOCOL_802_3) ||
- (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_RAW_IP &&
- ctx->llp == QMI_WDA_LINK_LAYER_PROTOCOL_RAW_IP)) {
+
+ if (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_802_3 &&
+ ctx->llp == QMI_WDA_LINK_LAYER_PROTOCOL_802_3) {
+ ctx->self->priv->llp_is_raw_ip = FALSE;
+ ctx->step = PORT_OPEN_STEP_LAST;
+ port_open_context_step (ctx);
+ return;
+ }
+
+ if (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_RAW_IP &&
+ ctx->llp == QMI_WDA_LINK_LAYER_PROTOCOL_RAW_IP) {
+ ctx->self->priv->llp_is_raw_ip = TRUE;
ctx->step = PORT_OPEN_STEP_LAST;
port_open_context_step (ctx);
return;