From c1272bd6dd5b0e7386a33209d9fd322fa0abf619 Mon Sep 17 00:00:00 2001 From: Andrzej Kaczmarek Date: Tue, 20 Feb 2018 22:32:43 +0100 Subject: [PATCH] nimble/ll: Fix BLE_LL_CONN_INIT_MIN_WIN_OFFSET The code which calculates earliest connection event start does not take BLE_LL_CONN_INIT_MIN_WIN_OFFSET into account, but we still update tx windows offset in state machine with its value. As a result when this setting is set to non-zero value we schedule first connection event earlier than what slave calculates from CONNECT_IND PDU so connection cannot be established. X-Original-Commit: cf8ca1b0a6fab4e5d1c579fe37ee2adc4e3a1e07 --- nimble/controller/src/ble_ll_sched.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nimble/controller/src/ble_ll_sched.c b/nimble/controller/src/ble_ll_sched.c index 8d32121b6..4b46c0be6 100644 --- a/nimble/controller/src/ble_ll_sched.c +++ b/nimble/controller/src/ble_ll_sched.c @@ -402,6 +402,8 @@ ble_ll_sched_master_new(struct ble_ll_conn_sm *connsm, assert(0); } } + earliest_start += MYNEWT_VAL(BLE_LL_CONN_INIT_MIN_WIN_OFFSET) * + BLE_LL_SCHED_32KHZ_TICKS_PER_SLOT; itvl_t = connsm->conn_itvl_ticks; /* We have to find a place for this schedule */ @@ -630,6 +632,8 @@ ble_ll_sched_master_new(struct ble_ll_conn_sm *connsm, assert(0); } } + earliest_start += MYNEWT_VAL(BLE_LL_CONN_INIT_MIN_WIN_OFFSET) * + BLE_LL_SCHED_32KHZ_TICKS_PER_SLOT; earliest_end = earliest_start + dur; itvl_t = connsm->conn_itvl_ticks;