hdr = msg;
        hdr->type = type;
-       hdr->txn_id = txn_id;
-       hdr->msg_id = msg_id;
-       hdr->msg_len = msglen;
+       hdr->txn_id = cpu_to_le16(txn_id);
+       hdr->msg_id = cpu_to_le16(msg_id);
+       hdr->msg_len = cpu_to_le16(msglen);
 
        *len = sizeof(*hdr) + msglen;
 
 
 
        for (handler = qmi->handlers; handler->fn; handler++) {
                if (handler->type == hdr->type &&
-                   handler->msg_id == hdr->msg_id)
+                   handler->msg_id == le16_to_cpu(hdr->msg_id))
                        break;
        }
 
        /* If this is a response, find the matching transaction handle */
        if (hdr->type == QMI_RESPONSE) {
                mutex_lock(&qmi->txn_lock);
-               txn = idr_find(&qmi->txns, hdr->txn_id);
+               txn = idr_find(&qmi->txns, le16_to_cpu(hdr->txn_id));
 
                /* Ignore unexpected responses */
                if (!txn) {
        } else {
                /* Create a txn based on the txn_id of the incoming message */
                memset(&tmp_txn, 0, sizeof(tmp_txn));
-               tmp_txn.id = hdr->txn_id;
+               tmp_txn.id = le16_to_cpu(hdr->txn_id);
 
                qmi_invoke_handler(qmi, sq, &tmp_txn, buf, len);
        }