andrzej-kaczmarek opened a new pull request #733: nimble/ll: Fix connection create if CONNECT_IND was not txed URL: https://github.com/apache/mynewt-nimble/pull/733 Consider following scenario: - we are receiving ADV_IND at the end of scan window - scan timer fires in the middle of that PDU and we are handling scan proc to switch window - in the meantime ADV_IND is received and we decide to transmit CONNECT_IND - CONNECT_IND is setup for TX, but then we are back handling window switch which decides to disable PHY since it already checked that it should move to next window; this effectively stops TX and CONNECT_IND in the air is truncated (i.e. corrupted) - ADV_IND is handed over to LL which assumes, according to flags, that CONNECT_IND was transmitted so it should start connection. And here's the problem: we did not send proper CONNECT_IND so we should not start connection, because peer does not really expects it. The solution here is to delay connection on legacy adv until CONNECT_IND was transmitted completly. Basically, when processing ADV_IND for which we sent CONNECT_IND (according to flags set in isr) we setup conns as usual, but we do not start connection. Instead, this will be done from separate event which is sent from txpdu_cb which means PDU was sent successfully. The same event is also used for AUX_CONNECT_RSP for consistency. At the time we receive such event we know that connsm is aready setup properly so we just need to stop scanning and create connection.
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
