From 64a6d1388432704c9205fee04be8e6df45fc563b Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Thu, 3 Mar 2016 13:34:39 +0100 Subject: [PATCH] greybus: connection: add CSD connection flag Add CSD connection flag that can be specified when allocating a connection to enable Controlled Segment Dropping in favour of E2EFC which is enabled by default. Note that most connections are expected to have E2EFC enabled. Signed-off-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/connection.c | 2 +- drivers/staging/greybus/connection.h | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index 01d31f66b28e..96a8aa3285ff 100644 --- a/drivers/staging/greybus/connection.c +++ b/drivers/staging/greybus/connection.c @@ -339,7 +339,7 @@ gb_connection_svc_connection_create(struct gb_connection *connection) cport_flags = GB_SVC_CPORT_FLAG_CSV_N; if (intf->boot_over_unipro) { cport_flags |= GB_SVC_CPORT_FLAG_CSD_N; - } else { + } else if (gb_connection_e2efc_enabled(connection)) { cport_flags |= GB_SVC_CPORT_FLAG_CSD_N | GB_SVC_CPORT_FLAG_E2EFC; } diff --git a/drivers/staging/greybus/connection.h b/drivers/staging/greybus/connection.h index d5ac1459332a..6197d45cb16a 100644 --- a/drivers/staging/greybus/connection.h +++ b/drivers/staging/greybus/connection.h @@ -13,6 +13,8 @@ #include #include +#define GB_CONNECTION_FLAG_CSD BIT(0) + enum gb_connection_state { GB_CONNECTION_STATE_INVALID = 0, GB_CONNECTION_STATE_DISABLED = 1, @@ -81,4 +83,9 @@ void greybus_data_rcvd(struct gb_host_device *hd, u16 cport_id, void gb_connection_latency_tag_enable(struct gb_connection *connection); void gb_connection_latency_tag_disable(struct gb_connection *connection); +static inline bool gb_connection_e2efc_enabled(struct gb_connection *connection) +{ + return !(connection->flags & GB_CONNECTION_FLAG_CSD); +} + #endif /* __CONNECTION_H */