Hi Manish, > In bluetooth core specification 4.2, > Vol 2, Part E, 7.8.9 LE Set Advertise Enable Command, it says > > The Controller shall continue advertising until ... > or until a connection is created or ... > In these cases, advertising is then disabled. > > Hence, advertising would be disabled before a connection is > established. In current kernel implementation, advertising would > be re-enabled when all connections are terminated. > > The correct disconnection flow looks like > > < HCI Command: Disconnect > >> HCI Event: Command Status > Status: Success > >> HCI Event: Disconnect Complete > Status: Success > > Specifically, the last Disconnect Complete Event would trigger a > callback function hci_event.c:hci_disconn_complete_evt() to > cleanup the connection and re-enable advertising when proper. > > However, sometimes, there might occur an exception in the controller > when disconnection is being executed. The disconnection flow might > then look like > > < HCI Command: Disconnect > >> HCI Event: Command Status > Status: Unknown Connection Identifier > > Note that "> HCI Event: Disconnect Complete" is missing when such an > exception occurs. This would result in advertising staying disabled > forever since the connection in question is not cleaned up correctly. > > To fix the controller exception issue, we need to do some connection > cleanup when the disconnect command status indicates an error. > > Signed-off-by: Joseph Hwang <josephsih@xxxxxxxxxxxx> > Signed-off-by: Manish Mandlik <mmandlik@xxxxxxxxxx> > --- > > Changes in v2: > - Moved "u8 type" declaration inside if block > > net/bluetooth/hci_event.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) patch has been applied to bluetooth-next tree. Regards Marcel