diff mbox series

[v2,1/6] qmimodem: Use l_queue_remove_if to eliminate double lookup

Message ID 20240221221725.185480-1-steve.schrock@getcruise.com (mailing list archive)
State Accepted
Commit 1efef179f0880893f38af975b7ce4da602f9ff05
Headers show
Series [v2,1/6] qmimodem: Use l_queue_remove_if to eliminate double lookup | expand

Commit Message

Steve Schrock Feb. 21, 2024, 10:17 p.m. UTC
---
 drivers/qmimodem/qmi.c | 50 ++++++++++++++++--------------------------
 1 file changed, 19 insertions(+), 31 deletions(-)

Comments

patchwork-bot+ofono@kernel.org Feb. 21, 2024, 11 p.m. UTC | #1
Hello:

This series was applied to ofono.git (master)
by Denis Kenzior <denkenz@gmail.com>:

On Wed, 21 Feb 2024 22:17:20 +0000 you wrote:
> ---
>  drivers/qmimodem/qmi.c | 50 ++++++++++++++++--------------------------
>  1 file changed, 19 insertions(+), 31 deletions(-)

Here is the summary with links:
  - [v2,1/6] qmimodem: Use l_queue_remove_if to eliminate double lookup
    https://git.kernel.org/pub/scm/network/ofono/ofono.git/?id=1efef179f088
  - [v2,2/6] qmimodem: Use l_timeout and l_idle for discovery
    https://git.kernel.org/pub/scm/network/ofono/ofono.git/?id=ae0392353d8f
  - [v2,3/6] qmimodem: Use l_idle for shutdown instead of g_timeout
    https://git.kernel.org/pub/scm/network/ofono/ofono.git/?id=4947c7980add
  - [v2,4/6] qmimodem: Use l_idle and l_timeout for service creation
    https://git.kernel.org/pub/scm/network/ofono/ofono.git/?id=a42c37eee09e
  - [v2,5/6] qmimodem: Eliminate glib macros
    https://git.kernel.org/pub/scm/network/ofono/ofono.git/?id=d0386f3af377
  - [v2,6/6] qmimodem: Use l_free in qmi_free for consistency
    https://git.kernel.org/pub/scm/network/ofono/ofono.git/?id=ae353c641101

You are awesome, thank you!
diff mbox series

Patch

diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c
index a2f5902f..d2d4eefa 100644
--- a/drivers/qmimodem/qmi.c
+++ b/drivers/qmimodem/qmi.c
@@ -793,12 +793,9 @@  static void handle_packet(struct qmi_device *device,
 			return;
 		}
 
-		req = l_queue_find(device->control_queue, __request_compare,
-					GUINT_TO_POINTER(tid));
-		if (!req)
-			return;
-
-		l_queue_remove(device->control_queue, req);
+		req = l_queue_remove_if(device->control_queue,
+						__request_compare,
+						GUINT_TO_POINTER(tid));
 	} else {
 		const struct qmi_service_hdr *service = buf;
 		const struct qmi_message_hdr *msg;
@@ -819,14 +816,14 @@  static void handle_packet(struct qmi_device *device,
 			return;
 		}
 
-		req = l_queue_find(device->service_queue, __request_compare,
-					GUINT_TO_POINTER(tid));
-		if (!req)
-			return;
-
-		l_queue_remove(device->service_queue, req);
+		req = l_queue_remove_if(device->service_queue,
+						__request_compare,
+						GUINT_TO_POINTER(tid));
 	}
 
+	if (!req)
+		return;
+
 	if (req->callback)
 		req->callback(message, length, data, req->user_data);
 
@@ -1244,19 +1241,13 @@  static struct qmi_request *find_control_request(struct qmi_device *device,
 	unsigned int _tid = tid;
 
 	if (_tid != 0) {
-		req = l_queue_find(device->req_queue, __request_compare,
-					GUINT_TO_POINTER(_tid));
-
-		if (req)
-			l_queue_remove(device->req_queue, req);
-		else {
-			req = l_queue_find(device->control_queue,
-						__request_compare,
+		req = l_queue_remove_if(device->req_queue, __request_compare,
 						GUINT_TO_POINTER(_tid));
 
-			if (req)
-				l_queue_remove(device->control_queue, req);
-		}
+		if (!req)
+			req = l_queue_remove_if(device->control_queue,
+							__request_compare,
+							GUINT_TO_POINTER(_tid));
 	}
 
 	return req;
@@ -2375,17 +2366,14 @@  bool qmi_service_cancel(struct qmi_service *service, uint16_t id)
 	if (!device)
 		return false;
 
-	req = l_queue_find(device->req_queue, __request_compare,
-				GUINT_TO_POINTER(tid));
-	if (req)
-		l_queue_remove(device->req_queue, req);
-	else {
-		req = l_queue_find(device->service_queue, __request_compare,
+	req = l_queue_remove_if(device->req_queue, __request_compare,
 					GUINT_TO_POINTER(tid));
+	if (!req) {
+		req = l_queue_remove_if(device->service_queue,
+						__request_compare,
+						GUINT_TO_POINTER(tid));
 		if (!req)
 			return false;
-
-		l_queue_remove(device->service_queue, req);
 	}
 
 	service_send_free(req->user_data);