Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82278bfe authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

greybus: fix forced disable of offloaded connections



Core disables all connections for bundles whose interface is already
gone in order to avoid unnecessary operation timeouts during driver
disconnect.

This isn't needed for offloaded connections (as the AP can not send
requests over such connections), and in fact must not be done since only
the bundle driver currently knows how to disable I/O on such connections
in a class-specific way (this may eventually be handled by core though).

Also add comment about why connection are disabled early on forced
disconnect.

Testing Done: Tested on EVT2.

Reported-by: default avatarMark Greer <mgreer@animalcreek.com>
Signed-off-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Tested-by: default avatarMark Greer <mgreer@animalcreek.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent c0b06a6d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -189,7 +189,15 @@ static int greybus_remove(struct device *dev)
	struct gb_bundle *bundle = to_gb_bundle(dev);
	struct gb_connection *connection;

	/*
	 * Disable (non-offloaded) connections early in case the interface is
	 * already gone to avoid unceccessary operation timeouts during
	 * driver disconnect. Otherwise, only disable incoming requests.
	 */
	list_for_each_entry(connection, &bundle->connections, bundle_links) {
		if (gb_connection_is_offloaded(connection))
			continue;

		if (bundle->intf->disconnected)
			gb_connection_disable_forced(connection);
		else