diff options
Diffstat (limited to 'src/mm-port-qmi.c')
-rw-r--r-- | src/mm-port-qmi.c | 25 |
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; |