staging: vchiq_core: introduce get_bulk_reason
authorStefan Wahren <stefan.wahren@i2se.com>
Sun, 25 Apr 2021 10:50:56 +0000 (12:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 May 2021 09:19:27 +0000 (11:19 +0200)
Nesting multiple ternary operators over multiple lines isn't easy to
read. Move this logic into a separate inline function.

Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org>
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Link: https://lore.kernel.org/r/1619347863-16080-5-git-send-email-stefan.wahren@i2se.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c

index f13d5738e731c6b725dc9c775a5255fd69a843a4..3a72c364f25d3ae1570cba4c3415119deddc52d2 100644 (file)
@@ -1226,6 +1226,22 @@ release_slot(struct vchiq_state *state, struct vchiq_slot_info *slot_info,
        mutex_unlock(&state->recycle_mutex);
 }
 
+static inline enum vchiq_reason
+get_bulk_reason(struct vchiq_bulk *bulk)
+{
+       if (bulk->dir == VCHIQ_BULK_TRANSMIT) {
+               if (bulk->actual == VCHIQ_BULK_ACTUAL_ABORTED)
+                       return VCHIQ_BULK_TRANSMIT_ABORTED;
+
+               return VCHIQ_BULK_TRANSMIT_DONE;
+       }
+
+       if (bulk->actual == VCHIQ_BULK_ACTUAL_ABORTED)
+               return VCHIQ_BULK_RECEIVE_ABORTED;
+
+       return VCHIQ_BULK_RECEIVE_DONE;
+}
+
 /* Called by the slot handler - don't hold the bulk mutex */
 static enum vchiq_status
 notify_bulks(struct vchiq_service *service, struct vchiq_bulk_queue *queue,
@@ -1281,16 +1297,8 @@ notify_bulks(struct vchiq_service *service, struct vchiq_bulk_queue *queue,
                                        spin_unlock(&bulk_waiter_spinlock);
                                } else if (bulk->mode ==
                                        VCHIQ_BULK_MODE_CALLBACK) {
-                                       enum vchiq_reason reason = (bulk->dir ==
-                                               VCHIQ_BULK_TRANSMIT) ?
-                                               ((bulk->actual ==
-                                               VCHIQ_BULK_ACTUAL_ABORTED) ?
-                                               VCHIQ_BULK_TRANSMIT_ABORTED :
-                                               VCHIQ_BULK_TRANSMIT_DONE) :
-                                               ((bulk->actual ==
-                                               VCHIQ_BULK_ACTUAL_ABORTED) ?
-                                               VCHIQ_BULK_RECEIVE_ABORTED :
-                                               VCHIQ_BULK_RECEIVE_DONE);
+                                       enum vchiq_reason reason =
+                                                       get_bulk_reason(bulk);
                                        status = make_service_callback(service,
                                                reason, NULL, bulk->userdata);
                                        if (status == VCHIQ_RETRY)