summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTautvydas Belgeras <tautvydas.b@8devices.com>2019-06-20 13:45:19 +0300
committerKoen Vandeputte <koen.vandeputte@ncentric.com>2019-06-27 12:06:56 +0200
commit1965c713937495a5cb029165c16acdb6572c3f87 (patch)
treeab9da4b412fa0656a2429e809cd4231fc23f1b4d
parent01944dd7089b15f55b463072e1b46f1144e8aab4 (diff)
uqmi: add explicit check for message type when expecting a responseHEADmaster
When the utility sends a request it expects a response type message, but does not explicitly check for it. When a device stays idle for some time, it switches into a sleep mode, and notifies the utility with an identification type message. In some configurations the device only sends this identification message when triggered by the utility, in this case by the request message. What the utility gets is two messages at the same time - an identification and a response. When it tries to decode former it obviously fails, because it is not what it expected. Signed-off-by: Tautvydas Belgeras <tautvydas.b@8devices.com>
-rw-r--r--dev.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/dev.c b/dev.c
index 4bca429..bd10207 100644
--- a/dev.c
+++ b/dev.c
@@ -96,6 +96,9 @@ static void qmi_process_msg(struct qmi_dev *qmi, struct qmi_msg *msg)
struct qmi_request *req;
uint16_t tid;
+ if (msg->flags != QMI_CTL_FLAG_RESPONSE && msg->flags != QMI_SERVICE_FLAG_RESPONSE)
+ return;
+
if (msg->qmux.service == QMI_SERVICE_CTL)
tid = msg->ctl.transaction;
else