Hi Marcel, We have a couple of bugs where the controller failed on the Read Remote Feature command after initial connection with the 0x3E error, guy.damary@intel made some suggestions after root caused the issues, you can see his detailed suggestions here: https://buganizer.corp.google.com/issues/174806913#comment98. To summarize: he suggests us to retry up to 3 times if 0x3E is encountered during LE pairing. Regarding this change: I see MGMT_STATUS_CONNECT_FAILED could be returned under 4 different scenarios, 3 in the mgmt_status_table table and 1 in pair_device as a fallback error to cover all the other cases, so I decided to introduce a new error code to make sure we don't retry in the cases where we shouldn't. If you think this cae be avoided by checking other flags at the same time, I can then drop the change from the kernel and only change the user space. Thanks On Fri, May 7, 2021 at 1:19 AM Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote: > > Hi Yu, > > > We want to retry the pairing when HCI status 0x3e (Connection failed to > > established/Synchronization timeout) is returned from the controller. > > This is to add a new MGMT error code so that we can catch this 0x3e > > failure and issue a retry in the user space. > > > > Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@xxxxxxxxxxxx> > > --- > > > > Changes in v1: > > - Initial change > > > > doc/mgmt-api.txt | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/doc/mgmt-api.txt b/doc/mgmt-api.txt > > index 5355fedb0..f7cbf7ab2 100644 > > --- a/doc/mgmt-api.txt > > +++ b/doc/mgmt-api.txt > > @@ -200,6 +200,7 @@ and Command Complete events: > > 0x12 RFKilled > > 0x13 Already Paired > > 0x14 Permission Denied > > +0x15 Connection Not Established > > > > As a general rule all commands generate the events as specified below, > > however invalid lengths or unknown commands will always generate a > > @@ -1112,6 +1113,7 @@ Pair Device Command > > Not Powered > > Invalid Index > > Already Paired > > + Connection Not Established > > I really dislike the naming. And even more so, I request the motive here. > > So looking at our code, we have 3 cases where we use the previous status: > > MGMT_STATUS_CONNECT_FAILED, /* Page Timeout */ > MGMT_STATUS_CONNECT_FAILED, /* Connection Establishment Failed */ > MGMT_STATUS_CONNECT_FAILED, /* MAC Connection Failed */ > > And they do map to the 3 available transports, either via BR/EDR or LE or AMP. That means if you call Pair Device you already know well today when it fails to establish the link and can retry it. > > My question, what are you trying to fix here. > > Regards > > Marcel >