port-qmi: new helper macro to check for supported QMAP values
This commit is contained in:
@@ -1561,8 +1561,7 @@ connect_context_step (GTask *task)
|
|||||||
|
|
||||||
/* if muxing has been enabled in the port, we need to create a new link
|
/* if muxing has been enabled in the port, we need to create a new link
|
||||||
* interface. */
|
* interface. */
|
||||||
if (ctx->dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5 ||
|
if (MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (ctx->dap)) {
|
||||||
ctx->dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP) {
|
|
||||||
mm_port_qmi_setup_link (ctx->qmi,
|
mm_port_qmi_setup_link (ctx->qmi,
|
||||||
ctx->data,
|
ctx->data,
|
||||||
ctx->link_prefix_hint,
|
ctx->link_prefix_hint,
|
||||||
|
@@ -652,8 +652,7 @@ mm_port_qmi_setup_link (MMPortQmi *self,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((self->priv->dap != QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5) &&
|
if (!MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (self->priv->dap)) {
|
||||||
(self->priv->dap != QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)) {
|
|
||||||
g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Aggregation not enabled");
|
g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Aggregation not enabled");
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
return;
|
return;
|
||||||
@@ -751,8 +750,7 @@ mm_port_qmi_cleanup_link (MMPortQmi *self,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((self->priv->dap != QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5) &&
|
if (!MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (self->priv->dap)) {
|
||||||
(self->priv->dap != QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)) {
|
|
||||||
g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Aggregation not enabled");
|
g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Aggregation not enabled");
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
return;
|
return;
|
||||||
@@ -1295,8 +1293,7 @@ setup_master_mtu (GTask *task)
|
|||||||
* aggregation size */
|
* aggregation size */
|
||||||
if (ctx->kernel_data_modes_requested & MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN) {
|
if (ctx->kernel_data_modes_requested & MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN) {
|
||||||
/* Load current max datagram size supported */
|
/* Load current max datagram size supported */
|
||||||
if (ctx->wda_dl_dap_requested == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5 ||
|
if (MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (ctx->wda_dl_dap_requested))
|
||||||
ctx->wda_dl_dap_requested == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)
|
|
||||||
mtu = ctx->wda_dl_dap_max_size_current;
|
mtu = ctx->wda_dl_dap_max_size_current;
|
||||||
|
|
||||||
/* If no max aggregation size was specified by the modem (e.g. if we requested QMAP
|
/* If no max aggregation size was specified by the modem (e.g. if we requested QMAP
|
||||||
@@ -1417,8 +1414,7 @@ setup_data_format_completed (GTask *task)
|
|||||||
|
|
||||||
/* if aggregation enabled we require link management supported; this covers the
|
/* if aggregation enabled we require link management supported; this covers the
|
||||||
* case of old qmi_wwan drivers where add_mux/del_mux wasn't available yet */
|
* case of old qmi_wwan drivers where add_mux/del_mux wasn't available yet */
|
||||||
if (((ctx->wda_dl_dap_requested == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5) ||
|
if ((MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (ctx->wda_dl_dap_requested)) &&
|
||||||
(ctx->wda_ul_dap_requested == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)) &&
|
|
||||||
(!(ctx->kernel_data_modes_current & (MM_PORT_QMI_KERNEL_DATA_MODE_MUX_RMNET | MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN)))) {
|
(!(ctx->kernel_data_modes_current & (MM_PORT_QMI_KERNEL_DATA_MODE_MUX_RMNET | MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN)))) {
|
||||||
mm_obj_dbg (self, "cannot enable data aggregation: link management unsupported");
|
mm_obj_dbg (self, "cannot enable data aggregation: link management unsupported");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1463,8 +1459,7 @@ check_data_format_combination (GTask *task)
|
|||||||
if (!(ctx->kernel_data_modes_supported & combination->kernel_data_mode))
|
if (!(ctx->kernel_data_modes_supported & combination->kernel_data_mode))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (((combination->wda_dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5) ||
|
if ((MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (combination->wda_dap)) &&
|
||||||
(combination->wda_dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)) &&
|
|
||||||
((!ctx->wda_dap_supported) ||
|
((!ctx->wda_dap_supported) ||
|
||||||
(ctx->action != MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_MULTIPLEX)))
|
(ctx->action != MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_MULTIPLEX)))
|
||||||
continue;
|
continue;
|
||||||
@@ -1899,8 +1894,7 @@ mm_port_qmi_setup_data_format (MMPortQmi *self,
|
|||||||
|
|
||||||
if ((action == MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_MULTIPLEX) &&
|
if ((action == MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_MULTIPLEX) &&
|
||||||
(self->priv->kernel_data_modes & (MM_PORT_QMI_KERNEL_DATA_MODE_MUX_RMNET | MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN)) &&
|
(self->priv->kernel_data_modes & (MM_PORT_QMI_KERNEL_DATA_MODE_MUX_RMNET | MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN)) &&
|
||||||
(self->priv->dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5 ||
|
MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (self->priv->dap)) {
|
||||||
self->priv->dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)) {
|
|
||||||
mm_obj_dbg (self, "multiplex support already available when setting up data format");
|
mm_obj_dbg (self, "multiplex support already available when setting up data format");
|
||||||
g_task_return_boolean (task, TRUE);
|
g_task_return_boolean (task, TRUE);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
@@ -1909,7 +1903,7 @@ mm_port_qmi_setup_data_format (MMPortQmi *self,
|
|||||||
|
|
||||||
if ((action == MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_DEFAULT) &&
|
if ((action == MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_DEFAULT) &&
|
||||||
(!(self->priv->kernel_data_modes & (MM_PORT_QMI_KERNEL_DATA_MODE_MUX_RMNET | MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN))) &&
|
(!(self->priv->kernel_data_modes & (MM_PORT_QMI_KERNEL_DATA_MODE_MUX_RMNET | MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN))) &&
|
||||||
(self->priv->dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_DISABLED)) {
|
!MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (self->priv->dap)) {
|
||||||
mm_obj_dbg (self, "multiplex support already disabled when setting up data format");
|
mm_obj_dbg (self, "multiplex support already disabled when setting up data format");
|
||||||
g_task_return_boolean (task, TRUE);
|
g_task_return_boolean (task, TRUE);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
@@ -1919,8 +1913,7 @@ mm_port_qmi_setup_data_format (MMPortQmi *self,
|
|||||||
/* support switching from multiplex to non-multiplex, but only if there are no active
|
/* support switching from multiplex to non-multiplex, but only if there are no active
|
||||||
* links allocated */
|
* links allocated */
|
||||||
if ((action == MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_DEFAULT) &&
|
if ((action == MM_PORT_QMI_SETUP_DATA_FORMAT_ACTION_SET_DEFAULT) &&
|
||||||
(self->priv->dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5 ||
|
MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP (self->priv->dap)) {
|
||||||
self->priv->dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)) {
|
|
||||||
guint n_links_setup;
|
guint n_links_setup;
|
||||||
|
|
||||||
n_links_setup = count_links_setup (self, data);
|
n_links_setup = count_links_setup (self, data);
|
||||||
|
@@ -36,6 +36,10 @@ typedef enum { /*< underscore_name=mm_port_qmi_kernel_data_mode >*/
|
|||||||
MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN = 1 << 3,
|
MM_PORT_QMI_KERNEL_DATA_MODE_MUX_QMIWWAN = 1 << 3,
|
||||||
} MMPortQmiKernelDataMode;
|
} MMPortQmiKernelDataMode;
|
||||||
|
|
||||||
|
#define MM_PORT_QMI_DAP_IS_SUPPORTED_QMAP(dap) \
|
||||||
|
(dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAPV5 || \
|
||||||
|
dap == QMI_WDA_DATA_AGGREGATION_PROTOCOL_QMAP)
|
||||||
|
|
||||||
#define MM_TYPE_PORT_QMI (mm_port_qmi_get_type ())
|
#define MM_TYPE_PORT_QMI (mm_port_qmi_get_type ())
|
||||||
#define MM_PORT_QMI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_PORT_QMI, MMPortQmi))
|
#define MM_PORT_QMI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_PORT_QMI, MMPortQmi))
|
||||||
#define MM_PORT_QMI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_PORT_QMI, MMPortQmiClass))
|
#define MM_PORT_QMI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_PORT_QMI, MMPortQmiClass))
|
||||||
|
Reference in New Issue
Block a user