Hi Lukasz, On Mon, Aug 11, 2014, Lukasz Rymanowski wrote: > When trying to reconnect to HDP device, BfA tries to connect MDL even > MCL is not connected. > > D/BlueZ ( 2218): external/bluetooth/bluez/android/hal-health.c:connect_channel() > I/bluetoothd( 2220): bluetoothd[2221]: external/bluetooth/bluez/android/health.c:bt_health_connect_channel() > I/bluetoothd( 2220): bluetoothd[2221]: external/bluetooth/bluez/android/health.c:create_channel() mdep 1 > D/BlueZ ( 2218): external/bluetooth/bluez/android/hal-bluetooth.c:handle_acl_state_changed() state 0 > I/bluetoothd( 2220): bluetoothd[2221]: external/bluetooth/bluez/android/mcap-lib.c:mcap_create_mdl() > I/bluetoothd( 2220): bluetoothd[2221]: health: error creating mdl MCL is not connected > > This patch makes sure that MCL is connected before trying to connect > MDL. > --- > android/health.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/android/health.c b/android/health.c > index 2d80365..f4edc3e 100644 > --- a/android/health.c > +++ b/android/health.c > @@ -1949,7 +1949,7 @@ static void bt_health_connect_channel(const void *buf, uint16_t len) > } > } > > - if (!dev->mcl) { > + if (!dev->mcl || (dev->mcl && !dev->mcl_conn)) { The patch looks good but the second check for dev->mcl is a bit redundant as this part is only evaluated if the first part (!dev->mcl) was false. So the more concise form would be: if (!dev->mcl || !dev->mcl_conn) However, could you explain to me why these separate variables are needed to begin with? Why isn't dev->mcl cleared in the mcl_disconnected() function that sets dev->mcl_conn to false but doesn't do anything to the dev->mcl pointer? Johan -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html