X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=dev.c;h=4e48179356c70a70fa2bb3dee7e1e4b15a8c77fb;hb=e9aa47200ea8c0907537483a7a7c5292b6238d6f;hp=76a8f30a0c08b304b4771ddd3c61702689c7806a;hpb=0d7aa128d0bbf290b958f50851085a1586d63efa;p=project%2Fuqmi.git diff --git a/dev.c b/dev.c index 76a8f30..4e48179 100644 --- a/dev.c +++ b/dev.c @@ -230,6 +230,8 @@ int qmi_service_connect(struct qmi_dev *qmi, QmiService svc, int client_id) return req.req.ret; client_id = req.cid; + } else { + qmi->service_keep_cid |= (1 << idx); } qmi->service_data[idx].connected = true; @@ -264,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; } @@ -273,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;