diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-06-09 20:31:20 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-06-09 20:31:25 +0200 |
commit | 42a664f5d9d6f725f8925a7e870b5df8d544a985 (patch) | |
tree | 44acd98bb174cb3f964146d1b25fac139f74f158 | |
parent | 6e19fb326c8a4988cecbfc5490037a6041aca095 (diff) |
fix releasing client ids after explicit set
-rw-r--r-- | dev.c | 3 | ||||
-rw-r--r-- | uqmi.h | 1 |
2 files changed, 3 insertions, 1 deletions
@@ -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; @@ -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; }; |