Commit 4d0bee11 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman

greybus: connection: fix connection-state handling

Set connection state to ENABLE before sending the control connected
message, and set state DISABLE after sending the control disconnected
event.

Remove the now unused ERROR connection state.
Signed-off-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 2c92bd52
......@@ -403,15 +403,14 @@ int gb_connection_init(struct gb_connection *connection)
if (ret)
goto err_hd_cport_disable;
ret = gb_connection_control_connected(connection);
if (ret)
goto err_svc_destroy;
/* Need to enable the connection to initialize it */
spin_lock_irq(&connection->lock);
connection->state = GB_CONNECTION_STATE_ENABLED;
spin_unlock_irq(&connection->lock);
ret = gb_connection_control_connected(connection);
if (ret)
goto err_svc_destroy;
ret = gb_connection_protocol_get_version(connection);
if (ret)
goto err_disconnect;
......@@ -423,11 +422,11 @@ int gb_connection_init(struct gb_connection *connection)
return 0;
err_disconnect:
gb_connection_control_disconnected(connection);
spin_lock_irq(&connection->lock);
connection->state = GB_CONNECTION_STATE_ERROR;
connection->state = GB_CONNECTION_STATE_DISABLED;
spin_unlock_irq(&connection->lock);
gb_connection_control_disconnected(connection);
err_svc_destroy:
gb_connection_svc_connection_destroy(connection);
err_hd_cport_disable:
......@@ -451,7 +450,13 @@ void gb_connection_exit(struct gb_connection *connection)
gb_connection_cancel_operations(connection, -ESHUTDOWN);
connection->protocol->connection_exit(connection);
gb_connection_control_disconnected(connection);
spin_lock_irq(&connection->lock);
connection->state = GB_CONNECTION_STATE_DISABLED;
spin_unlock_irq(&connection->lock);
gb_connection_svc_connection_destroy(connection);
gb_connection_hd_cport_disable(connection);
gb_connection_unbind_protocol(connection);
......
......@@ -17,8 +17,7 @@ enum gb_connection_state {
GB_CONNECTION_STATE_INVALID = 0,
GB_CONNECTION_STATE_DISABLED = 1,
GB_CONNECTION_STATE_ENABLED = 2,
GB_CONNECTION_STATE_ERROR = 3,
GB_CONNECTION_STATE_DESTROYING = 4,
GB_CONNECTION_STATE_DESTROYING = 3,
};
struct gb_connection {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment