Bluetooth: controller: split: Port random slave event backoff

Port the implementation that performed random backoff of
forced slave event scheduling.

When peer master implementation skips events, multiple
local overlapping slaves will randomize their forced
scheduling to break out of a round robin pattern increasing
the chance of synchronizing with their masters again.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2019-06-07 16:08:51 +02:00 committed by Alberto Escolar
commit dd3e8241e9
3 changed files with 6 additions and 11 deletions

View file

@ -1009,16 +1009,13 @@ void ull_conn_done(struct node_rx_event_done *done)
if (latency_event) {
force = 1U;
} else {
/* FIXME:*/
#if 0
force = lll->slave.force & 0x01;
force = conn->slave.force & 0x01;
/* rotate force bits */
lll->slave.force >>= 1;
conn->slave.force >>= 1;
if (force) {
lll->slave.force |= BIT(31);
conn->slave.force |= BIT(31);
}
#endif
}
}
} else {

View file

@ -37,6 +37,7 @@ struct ll_conn {
struct {
u8_t fex_valid:1;
u32_t force;
u32_t ticks_to_offset;
} slave;

View file

@ -116,11 +116,8 @@ void ull_slave_setup(memq_link_t *link, struct node_rx_hdr *rx,
conn->apto_reload;
#endif /* CONFIG_BT_CTLR_LE_PING */
/* FIXME: */
#if 0
memcpy((void *)&lll->slave.force, &lll->access_addr[0],
sizeof(lll->slave.force));
#endif
memcpy((void *)&conn->slave.force, &lll->access_addr[0],
sizeof(conn->slave.force));
#if defined(CONFIG_BT_CTLR_PRIVACY)
u8_t own_addr_type = pdu_adv->rx_addr;