summaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/operation.c
diff options
context:
space:
mode:
authorAlex Elder2014-10-18 04:03:49 +0200
committerGreg Kroah-Hartman2014-10-18 12:38:55 +0200
commitf012a520e1a8bb5d05de3307334a8de4dd95afdf (patch)
treee0813368909586c2ea089b3409bf6ce32002227d /drivers/staging/greybus/operation.c
parentgreybus: update gbuf status for completion handlers (diff)
downloadkernel-qcow2-linux-f012a520e1a8bb5d05de3307334a8de4dd95afdf.tar.gz
kernel-qcow2-linux-f012a520e1a8bb5d05de3307334a8de4dd95afdf.tar.xz
kernel-qcow2-linux-f012a520e1a8bb5d05de3307334a8de4dd95afdf.zip
greybus: report gbuf errors
If a gbuf completion indicates an error has occurred, report it. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Diffstat (limited to 'drivers/staging/greybus/operation.c')
-rw-r--r--drivers/staging/greybus/operation.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c
index 4d19eec790f0..4cbe33e21254 100644
--- a/drivers/staging/greybus/operation.c
+++ b/drivers/staging/greybus/operation.c
@@ -224,10 +224,29 @@ static void gb_operation_recv_work(struct work_struct *recv_work)
* we'll be done with everything we need to do before we mark it
* finished.
*
- * XXX We may want to record that a buffer is (or is no longer) in flight.
+ * XXX We may want to record that a request is (or is no longer) in flight.
*/
static void gb_operation_gbuf_complete(struct gbuf *gbuf)
{
+ if (gbuf->status) {
+ struct gb_operation *operation = gbuf->context;
+ struct gb_operation_msg_hdr *header;
+ int id;
+ int type;
+
+ if (gbuf == operation->request)
+ header = operation->request_payload;
+ else if (gbuf == operation->response)
+ header = operation->response_payload;
+ else
+ header = NULL;
+ id = header ? (int)header->id : -1;
+ type = header ? (int)header->type : -1;
+
+ gb_connection_err(operation->connection,
+ "operation %d type %d gbuf error %d",
+ id, type, gbuf->status);
+ }
return;
}