greybus: move copy of incoming request data
Currently incoming request data is copied into a request message
buffer in gb_connection_recv_request(). Move that--along with the
assignment of the message id--into gb_operation_create_incoming().
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 d973b57..1e0ce7d 100644
--- a/drivers/staging/greybus/operation.c
+++ b/drivers/staging/greybus/operation.c
@@ -465,11 +465,19 @@
static struct gb_operation *
gb_operation_create_incoming(struct gb_connection *connection,
- u8 type, size_t request_size,
- size_t response_size)
+ u16 operation_id, u8 type,
+ void *data, size_t request_size)
{
- return gb_operation_create_common(connection, false, type,
- request_size, response_size);
+ struct gb_operation *operation;
+
+ operation = gb_operation_create_common(connection, false, type,
+ request_size, 0);
+ if (operation) {
+ operation->id = operation_id;
+ memcpy(operation->request->header, data, request_size);
+ }
+
+ return operation;
}
/*
@@ -622,13 +630,12 @@
{
struct gb_operation *operation;
- operation = gb_operation_create_incoming(connection, type, size, 0);
+ operation = gb_operation_create_incoming(connection, operation_id,
+ type, data, size);
if (!operation) {
gb_connection_err(connection, "can't create operation");
return; /* XXX Respond with pre-allocated ENOMEM */
}
- operation->id = operation_id;
- memcpy(operation->request->header, data, size);
/* XXX Right now this will just complete the operation */
if (gb_operation_result_set(operation, -ENOSYS))