summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-06-09 20:31:20 +0200
committerFelix Fietkau <nbd@openwrt.org>2013-06-09 20:31:25 +0200
commit42a664f5d9d6f725f8925a7e870b5df8d544a985 (patch)
tree44acd98bb174cb3f964146d1b25fac139f74f158
parent6e19fb326c8a4988cecbfc5490037a6041aca095 (diff)
fix releasing client ids after explicit set
-rw-r--r--dev.c3
-rw-r--r--uqmi.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/dev.c b/dev.c
index 68d404c..4e48179 100644
--- a/dev.c
+++ b/dev.c
@@ -266,7 +266,7 @@ static void __qmi_service_disconnect(struct qmi_dev *qmi, int idx)
int qmi_service_release_client_id(struct qmi_dev *qmi, QmiService svc)
{
int idx = qmi_get_service_idx(svc);
- qmi->service_keep_cid &= ~(1 << idx);
+ qmi->service_release_cid |= 1 << idx;
return 0;
}
@@ -275,6 +275,7 @@ static void qmi_close_all_services(struct qmi_dev *qmi)
uint32_t connected = qmi->service_connected;
int idx;
+ qmi->service_keep_cid &= ~qmi->service_release_cid;
for (idx = 0; connected; idx++, connected >>= 1) {
if (!(connected & 1))
continue;
diff --git a/uqmi.h b/uqmi.h
index 4c899b6..de212fc 100644
--- a/uqmi.h
+++ b/uqmi.h
@@ -62,6 +62,7 @@ struct qmi_dev {
uint32_t service_connected;
uint32_t service_keep_cid;
+ uint32_t service_release_cid;
uint8_t ctl_tid;
};