Hi Marcel, On Sun, Mar 15, 2015, Marcel Holtmann wrote: > When only the pairing initiator is providing out-of-band data, then > the receiver side was ignoring the data. For some reason the code was > checking if the initiator has received out-of-band data and only then > also provide the required inidication that the acceptor actually has > the needed data available. > > For BR/EDR out-of-band pairing it is enough if one side has received > out-of-band data. There are no extra checks needed here to make this > work smoothly. The only thing that is needed is to tell the controller > if data is present (and if it is P-192 or P-256 or both) and then let > the controller actually figure out the rest. > > This means the check for outgoing connection or if the initiator has > indicated data are completely pointless and are in fact actually > causing harm. The check in question is this one: > > if (conn->out || test_bit(HCI_CONN_REMOTE_OOB, &conn->flags)) { > > After just taking the conditional check out and always executing the > code for determining the type of out-of-band data, the pairing works > flawlessly and prodcudes authenticated link keys. > > The patch itself looks more complicated due to the reformatting of the > indentation, but it essentially just a two-line change. > > Signed-off-by: Marcel Holtmann <marcel@xxxxxxxxxxxx> > --- > net/bluetooth/hci_event.c | 54 ++++++++++++++++++++++------------------------- > 1 file changed, 25 insertions(+), 29 deletions(-) Applied to bluetooth-next. Thanks. 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