make size related int variables unsigned
[project/uqmi.git] / dev.c
diff --git a/dev.c b/dev.c
index 76a8f30..4e48179 100644 (file)
--- 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;