Commit 08f31d01 authored by Stefan Wahren's avatar Stefan Wahren Committed by Greg Kroah-Hartman

staging: vchiq_core: introduce get_bulk_reason

Nesting multiple ternary operators over multiple lines isn't easy to
read. Move this logic into a separate inline function.
Reviewed-by: default avatarNicolas Saenz Julienne <nsaenz@kernel.org>
Signed-off-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Link: https://lore.kernel.org/r/1619347863-16080-5-git-send-email-stefan.wahren@i2se.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f7ba6012
...@@ -1226,6 +1226,22 @@ release_slot(struct vchiq_state *state, struct vchiq_slot_info *slot_info, ...@@ -1226,6 +1226,22 @@ release_slot(struct vchiq_state *state, struct vchiq_slot_info *slot_info,
mutex_unlock(&state->recycle_mutex); 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 */ /* Called by the slot handler - don't hold the bulk mutex */
static enum vchiq_status static enum vchiq_status
notify_bulks(struct vchiq_service *service, struct vchiq_bulk_queue *queue, 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, ...@@ -1281,16 +1297,8 @@ notify_bulks(struct vchiq_service *service, struct vchiq_bulk_queue *queue,
spin_unlock(&bulk_waiter_spinlock); spin_unlock(&bulk_waiter_spinlock);
} else if (bulk->mode == } else if (bulk->mode ==
VCHIQ_BULK_MODE_CALLBACK) { VCHIQ_BULK_MODE_CALLBACK) {
enum vchiq_reason reason = (bulk->dir == enum vchiq_reason reason =
VCHIQ_BULK_TRANSMIT) ? get_bulk_reason(bulk);
((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);
status = make_service_callback(service, status = make_service_callback(service,
reason, NULL, bulk->userdata); reason, NULL, bulk->userdata);
if (status == VCHIQ_RETRY) if (status == VCHIQ_RETRY)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment