port-qmi: new helper macro to check for supported QMAP values

This commit is contained in:
Aleksander Morgado
2021-03-18 10:23:13 +01:00
parent c2114e50d5
commit 483f8f0559
3 changed files with 13 additions and 17 deletions

View File

@@ -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,

View File

@@ -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);

View File

@@ -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))