From 6014718d4db9d48a980d70c66a7617293db633e6 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Wed, 19 Nov 2014 12:27:15 -0600 Subject: [PATCH] greybus: get rid of message status We (sort of) maintain the status of each message, but we shouldn't need to. Right now we're not using it consistently in any case. If a message fails to send, the caller will know to destroy the operation that contained it. If a message has been sent (i.e., handed to the host device layer) it'll have a non-null cookie pointer. If a does complete in error, we can update the status of the operation that contains it. That isn't happening right now but it will soon. Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/operation.c | 17 +++++++++-------- drivers/staging/greybus/operation.h | 1 - 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c index 96f4c689e998..05a61d87dabe 100644 --- a/drivers/staging/greybus/operation.c +++ b/drivers/staging/greybus/operation.c @@ -107,28 +107,30 @@ static int gb_message_send(struct gb_message *message, gfp_t gfp_mask) { struct gb_connection *connection = message->operation->connection; u16 dest_cport_id = connection->interface_cport_id; + int ret = 0; - message->status = -EINPROGRESS; message->cookie = connection->hd->driver->buffer_send(connection->hd, dest_cport_id, message->buffer, message->buffer_size, gfp_mask); if (IS_ERR(message->cookie)) { - message->status = PTR_ERR(message->cookie); + ret = PTR_ERR(message->cookie); message->cookie = NULL; - - return message->status; } - return 0; + return ret; } +/* + * Cancel a message whose buffer we have passed to the host device + * layer to be sent. + */ static void gb_message_cancel(struct gb_message *message) { struct greybus_host_device *hd; - if (message->status != -EINPROGRESS) - return; + if (!message->cookie) + return; /* Don't bother if the message isn't in flight */ hd = message->operation->connection->hd; hd->driver->buffer_cancel(message->cookie); @@ -252,7 +254,6 @@ static int gb_operation_message_init(struct gb_operation *operation, if (!message->buffer) return -ENOMEM; message->buffer_size = size; - message->status = -EBADR; /* Initial value--means "never set" */ /* Fill in the header structure */ header = message->buffer; diff --git a/drivers/staging/greybus/operation.h b/drivers/staging/greybus/operation.h index 81fd7f70b8ba..80ee158d74f7 100644 --- a/drivers/staging/greybus/operation.h +++ b/drivers/staging/greybus/operation.h @@ -28,7 +28,6 @@ struct gb_message { void *payload; struct gb_operation *operation; - int status; void *buffer; size_t buffer_size; -- 2.20.1