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 <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c
index 96f4c68..05a61d8 100644
--- a/drivers/staging/greybus/operation.c
+++ b/drivers/staging/greybus/operation.c
@@ -107,28 +107,30 @@
{
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 @@
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 81fd7f7..80ee158 100644
--- a/drivers/staging/greybus/operation.h
+++ b/drivers/staging/greybus/operation.h
@@ -28,7 +28,6 @@
void *payload;
struct gb_operation *operation;
- int status;
void *buffer;
size_t buffer_size;