Commit 96a9b9b0 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

greybus: connection: remove broken protocol-version handling



Remove the broken legacy protocol-version handling from core and move it
to the legacy driver instead.

Note that version handling has always been broken as legacy protocols
were looked up and bound to connections before the connections were
enabled and version negotiation could take place (over that very
connection). Document that in the legacy driver as well.

Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 357de006
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -120,8 +120,6 @@ gb_connection_create(struct gb_host_device *hd, int hd_cport_id,
	struct gb_connection *connection;
	struct ida *id_map = &hd->cport_id_map;
	int ida_start, ida_end;
	u8 major = 0;
	u8 minor = 1;

	/*
	 * If a manifest tries to reuse a cport, reject it.  We
@@ -159,8 +157,6 @@ gb_connection_create(struct gb_host_device *hd, int hd_cport_id,
	connection->intf = intf;

	connection->protocol_id = protocol_id;
	connection->major = major;
	connection->minor = minor;

	connection->bundle = bundle;
	connection->state = GB_CONNECTION_STATE_DISABLED;
+0 −2
Original line number Diff line number Diff line
@@ -39,8 +39,6 @@ struct gb_connection {

	struct gb_protocol		*protocol;
	u8				protocol_id;
	u8				major;
	u8				minor;
	u8				module_major;
	u8				module_minor;

+13 −3
Original line number Diff line number Diff line
@@ -30,15 +30,25 @@ static int legacy_connection_get_version(struct gb_connection *connection)
static int legacy_connection_bind_protocol(struct gb_connection *connection)
{
	struct gb_protocol *protocol;
	u8 major, minor;

	/*
	 * The legacy protocols have always been looked up using a hard-coded
	 * version of 0.1, despite (or perhaps rather, due to) the fact that
	 * module version negotiation could not take place until after the
	 * protocol was bound.
	 */
	major = 0;
	minor = 1;

	protocol = gb_protocol_get(connection->protocol_id,
				   connection->major,
				   connection->minor);
				   major,
				   minor);
	if (!protocol) {
		dev_err(&connection->hd->dev,
				"protocol 0x%02x version %u.%u not found\n",
				connection->protocol_id,
				connection->major, connection->minor);
				major, minor);
		return -EPROTONOSUPPORT;
	}
	connection->protocol = protocol;