uqmi: extend wda-get-data-format master
authorDavid Bauer <[email protected]>
Mon, 28 Jul 2025 01:57:24 +0000 (03:57 +0200)
committerDavid Bauer <[email protected]>
Tue, 29 Jul 2025 22:08:11 +0000 (00:08 +0200)
With QMAP, more settings for the modem data format are relevant. Include
them into the wda-get-data-format output.

Signed-off-by: David Bauer <[email protected]>
uqmi/commands-wda.c

index fb205b4ff4c9e39d6fc6119f2a31ac5df28ba2d9..2f93c03ba386e44d1989ff6c7124a081cde07a34 100644 (file)
@@ -208,23 +208,53 @@ static enum qmi_cmd_result cmd_wda_flow_control_prepare(
        return QMI_CMD_DONE;
 }
 
+static const char *
+wda_link_layer_protocol_to_string(QmiWdaLinkLayerProtocol proto)
+{
+       for (int i = 0; i < ARRAY_SIZE(link_modes); i++) {
+               if (link_modes[i].val == proto)
+                       return link_modes[i].name;
+       }
+       return "unknown";
+}
+
+static const char *
+wda_data_aggregation_protocol_to_string(QmiWdaDataAggregationProtocol proto)
+{
+       for (int i = 0; i < ARRAY_SIZE(aggregation_protocols); i++) {
+               if (aggregation_protocols[i].aggreg == proto)
+                       return aggregation_protocols[i].name;
+       }
+       return "unknown";
+}
+
 static void
 cmd_wda_get_data_format_cb(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg)
 {
        struct qmi_wda_get_data_format_response res;
-       const char *name = "unknown";
-       int i;
+       void *root;
 
        qmi_parse_wda_get_data_format_response(msg, &res);
-       for (i = 0; i < ARRAY_SIZE(link_modes); i++) {
-               if (link_modes[i].val != res.data.link_layer_protocol)
-                       continue;
-
-               name = link_modes[i].name;
-               break;
-       }
-
-       blobmsg_add_string(&status, NULL, name);
+       root = blobmsg_open_table(&status, NULL);
+       blobmsg_add_u8(&status, "qos-format", res.data.qos_format);
+       blobmsg_add_string(&status, "link-layer-protocol",
+                          wda_link_layer_protocol_to_string(res.data.link_layer_protocol));
+       blobmsg_add_string(&status, "data-aggregation-protocol",
+                          wda_data_aggregation_protocol_to_string(res.data.uplink_data_aggregation_protocol));
+       blobmsg_add_u32(&status, "uplink-data-aggregation-max-datagrams",
+                       res.data.uplink_data_aggregation_max_datagrams);
+       blobmsg_add_u32(&status, "uplink-data-aggregation-max-size",
+                       res.data.uplink_data_aggregation_max_size);
+       blobmsg_add_string(&status, "downlink-data-aggregation-protocol",
+                          wda_data_aggregation_protocol_to_string(res.data.downlink_data_aggregation_protocol));
+       blobmsg_add_u32(&status, "downlink-data-aggregation-max-datagrams",
+                       res.data.downlink_data_aggregation_max_datagrams);
+       blobmsg_add_u32(&status, "downlink-data-aggregation-max-size",
+                       res.data.downlink_data_aggregation_max_size);
+       blobmsg_add_u32(&status, "download-minimum-padding",
+                       res.data.download_minimum_padding);
+       blobmsg_add_u8(&status, "flow-control", res.data.flow_control);
+       blobmsg_close_table(&status, root);
 }
 
 static enum qmi_cmd_result