greybus: connection: always cancel operations on connection disable

Always cancel all operations on connection disable and remove the now
unused DESTROYING state.

Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Johan Hovold 2016-01-19 12:51:03 +01:00 committed by Greg Kroah-Hartman
parent bfa9a5e2d0
commit 81fba24969
2 changed files with 8 additions and 10 deletions

View File

@ -426,12 +426,17 @@ EXPORT_SYMBOL_GPL(gb_connection_enable);
void gb_connection_disable(struct gb_connection *connection)
{
if (connection->state == GB_CONNECTION_STATE_DISABLED)
return;
gb_connection_control_disconnected(connection);
spin_lock_irq(&connection->lock);
connection->state = GB_CONNECTION_STATE_DISABLED;
spin_unlock_irq(&connection->lock);
gb_connection_cancel_operations(connection, -ESHUTDOWN);
gb_connection_svc_connection_destroy(connection);
gb_connection_hd_cport_disable(connection);
}
@ -483,19 +488,13 @@ EXPORT_SYMBOL_GPL(gb_connection_legacy_init);
void gb_connection_legacy_exit(struct gb_connection *connection)
{
spin_lock_irq(&connection->lock);
if (connection->state != GB_CONNECTION_STATE_ENABLED) {
spin_unlock_irq(&connection->lock);
if (connection->state == GB_CONNECTION_STATE_DISABLED)
return;
}
connection->state = GB_CONNECTION_STATE_DESTROYING;
spin_unlock_irq(&connection->lock);
gb_connection_cancel_operations(connection, -ESHUTDOWN);
connection->protocol->connection_exit(connection);
gb_connection_disable(connection);
connection->protocol->connection_exit(connection);
gb_connection_unbind_protocol(connection);
}
EXPORT_SYMBOL_GPL(gb_connection_legacy_exit);

View File

@ -17,7 +17,6 @@ enum gb_connection_state {
GB_CONNECTION_STATE_INVALID = 0,
GB_CONNECTION_STATE_DISABLED = 1,
GB_CONNECTION_STATE_ENABLED = 2,
GB_CONNECTION_STATE_DESTROYING = 3,
};
struct gb_operation;