Browse Source

uqmi: fix big endian bugs in MBIM code

All MBIM integer fields are 32bit little endian.  So we need to convert
then all on big endian systems.

Fixes: e69bf24b00d8 ("uqmi: add support for MBIM devices with QMI service")
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Bjørn Mork 7 years ago
parent
commit
eb1dec7d0d
1 changed files with 3 additions and 3 deletions
  1. 3 3
      mbim.c

+ 3 - 3
mbim.c

@@ -39,12 +39,12 @@ bool is_mbim_qmi(struct mbim_command_message *msg)
 void mbim_qmi_cmd(struct mbim_command_message *msg, int len, uint16_t tid)
 {
 	msg->header.type = cpu_to_le32(MBIM_MESSAGE_TYPE_COMMAND);
-	msg->header.length = sizeof(*msg) + len;
+	msg->header.length = cpu_to_le32(sizeof(*msg) + len);
 	msg->header.transaction_id = cpu_to_le32(tid);
-	msg->fragment_header.total = 1;
+	msg->fragment_header.total = cpu_to_le32(1);
 	msg->fragment_header.current = 0;
 	memcpy(msg->service_id, qmiuuid, 16);
 	msg->command_id = cpu_to_le32(MBIM_CID_QMI_MSG);
 	msg->command_type = cpu_to_le32(MBIM_MESSAGE_COMMAND_TYPE_SET);
-	msg->buffer_length = len;
+	msg->buffer_length = cpu_to_le32(len);
 }