uint32_t max_size_ul;
uint32_t max_datagrams_ul;
QmiWdaDataAggregationProtocol aggregation_protocol_ul;
+ int8_t flow_control;
} wda_aggregation_info = {
.max_size_dl = 0,
.max_datagrams_dl = 0,
.max_size_ul = 0,
.max_datagrams_ul = 0,
.aggregation_protocol_ul = QMI_WDA_DATA_AGGREGATION_PROTOCOL_DISABLED,
+ .flow_control = -1,
};
#define cmd_wda_set_data_format_cb no_cb
QMI_INIT(downlink_minimum_padding, 0),
};
+ if (wda_aggregation_info.flow_control >= 0)
+ qmi_set(&data_req, flow_control, wda_aggregation_info.flow_control);
+
qmi_set_wda_set_data_format_request(msg, &data_req);
}
return QMI_CMD_DONE;
}
+#define cmd_wda_flow_control_cb no_cb
+
+static enum qmi_cmd_result cmd_wda_flow_control_prepare(
+ struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg,
+ char *arg)
+{
+ uint32_t val = strtoul(arg, NULL, 10);
+
+ if (val != 0 && val != 1) {
+ uqmi_add_error("Invalid value (valid: 0, 1)");
+ return QMI_CMD_EXIT;
+ }
+
+ wda_aggregation_info.flow_control = !!val;
+
+ return QMI_CMD_DONE;
+}
+
static void
cmd_wda_get_data_format_cb(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg)
{
__uqmi_command(wda_uplink_data_aggregation_protocol, ul-aggregation-protocol, required, CMD_TYPE_OPTION), \
__uqmi_command(wda_uplink_data_aggregation_max_datagrams, ul-datagram-max-count, required, CMD_TYPE_OPTION), \
__uqmi_command(wda_uplink_data_aggregation_max_size, ul-datagram-max-size, required, CMD_TYPE_OPTION), \
+ __uqmi_command(wda_flow_control, flow-control, required, CMD_TYPE_OPTION), \
__uqmi_command(wda_get_data_format, wda-get-data-format, no, QMI_SERVICE_WDA)
" --ul-aggregation-protocol <proto>: Set uplink aggregation protocol (proto: tlp|qc-cm|mbim|rndis|qmap|qmapv5)\n" \
" --ul-datagram-max-count <count>: Set uplink aggregation max datagrams (number)\n" \
" --ul-datagram-max-size <size>: Set uplink aggregation max datagram size (bytes)\n" \
+ " --flow-control <state>: Enable flow-control (state: 0|1)\n" \
" --wda-get-data-format: Get data format\n" \