keep the client id if user-specified
[project/uqmi.git] / dev.c
diff --git a/dev.c b/dev.c
index 2e20274..68d404c 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;
@@ -261,6 +263,13 @@ static void __qmi_service_disconnect(struct qmi_dev *qmi, int idx)
        qmi_request_wait(qmi, &req);
 }
 
+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);
+       return 0;
+}
+
 static void qmi_close_all_services(struct qmi_dev *qmi)
 {
        uint32_t connected = qmi->service_connected;