Bluetooth: controller: split: Refactor LLL conn structure

Refactor the LLL connection context to move out the member
fields not accessed in LLL execution context.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2019-10-30 13:18:14 +05:30 committed by Carles Cufí
commit 6d8b12468e
5 changed files with 23 additions and 28 deletions

View file

@ -61,11 +61,10 @@ struct lll_conn {
u16_t interval;
u16_t latency;
/* FIXME: BEGIN: Move to ULL? */
u16_t latency_prepare;
u16_t latency_event;
u16_t event_counter;
u8_t data_chan_map[5];
u8_t data_chan_count:6;
u8_t data_chan_sel:1;
@ -80,24 +79,17 @@ struct lll_conn {
u16_t data_chan_id;
};
union {
struct {
u8_t terminate_ack:1;
} master;
struct {
u8_t latency_enabled:1;
u8_t latency_cancel:1;
u8_t sca:3;
u32_t window_widening_periodic_us;
u32_t window_widening_max_us;
u32_t window_widening_prepare_us;
u32_t window_widening_event_us;
u32_t window_size_prepare_us;
u32_t window_size_event_us;
} slave;
};
/* FIXME: END: Move to ULL? */
#if defined(CONFIG_BT_PERIPHERAL)
struct {
u8_t latency_enabled:1;
u32_t window_widening_periodic_us;
u32_t window_widening_max_us;
u32_t window_widening_prepare_us;
u32_t window_widening_event_us;
u32_t window_size_prepare_us;
u32_t window_size_event_us;
} slave;
#endif /* CONFIG_BT_PERIPHERAL */
#if defined(CONFIG_BT_CTLR_DATA_LENGTH)
u16_t max_tx_octets;

View file

@ -605,7 +605,6 @@ u8_t ll_adv_enable(u8_t enable)
conn_lll->latency_prepare = 0;
conn_lll->latency_event = 0;
conn_lll->slave.latency_enabled = 0;
conn_lll->slave.latency_cancel = 0;
conn_lll->slave.window_widening_prepare_us = 0;
conn_lll->slave.window_widening_event_us = 0;
conn_lll->slave.window_size_prepare_us = 0;
@ -619,6 +618,7 @@ u8_t ll_adv_enable(u8_t enable)
conn->procedure_expire = 0;
conn->common.fex_valid = 0;
conn->slave.latency_cancel = 0;
conn->llcp_req = conn->llcp_ack = conn->llcp_type = 0;
conn->llcp_rx = NULL;

View file

@ -949,7 +949,7 @@ void ull_conn_done(struct node_rx_event_done *done)
* Slave received terminate ind or MIC failure
*/
reason_peer = conn->llcp_terminate.reason_peer;
if (reason_peer && (lll->role || lll->master.terminate_ack)) {
if (reason_peer && (lll->role || conn->master.terminate_ack)) {
conn_cleanup(conn, reason_peer);
return;
@ -977,7 +977,7 @@ void ull_conn_done(struct node_rx_event_done *done)
lll->latency_event = lll->latency;
}
} else if (reason_peer) {
lll->master.terminate_ack = 1;
conn->master.terminate_ack = 1;
}
/* Reset connection failed to establish countdown */
@ -2125,7 +2125,7 @@ static inline int event_conn_upd_prep(struct ll_conn *conn, u16_t lazy,
lll->slave.window_widening_periodic_us =
(((lll_conn_ppm_local_get() +
lll_conn_ppm_get(lll->slave.sca)) *
lll_conn_ppm_get(conn->slave.sca)) *
conn_interval_us) + (1000000 - 1)) / 1000000U;
lll->slave.window_widening_max_us =
(conn_interval_us >> 1) - EVENT_IFS_US;

View file

@ -36,13 +36,16 @@ struct ll_conn {
} common;
struct {
u8_t fex_valid:1;
u8_t fex_valid:1;
u8_t latency_cancel:1;
u8_t sca:3;
u32_t force;
u32_t ticks_to_offset;
} slave;
struct {
u8_t fex_valid:1;
u8_t terminate_ack:1;
} master;
};

View file

@ -87,10 +87,10 @@ void ull_slave_setup(memq_link_t *link, struct node_rx_hdr *rx,
conn_interval_us = interval * 1250U;
/* calculate the window widening */
lll->slave.sca = pdu_adv->connect_ind.sca;
conn->slave.sca = pdu_adv->connect_ind.sca;
lll->slave.window_widening_periodic_us =
(((lll_conn_ppm_local_get() +
lll_conn_ppm_get(lll->slave.sca)) *
lll_conn_ppm_get(conn->slave.sca)) *
conn_interval_us) + (1000000 - 1)) / 1000000U;
lll->slave.window_widening_max_us = (conn_interval_us >> 1) -
EVENT_IFS_US;
@ -162,7 +162,7 @@ void ull_slave_setup(memq_link_t *link, struct node_rx_hdr *rx,
cc->interval = lll->interval;
cc->latency = lll->latency;
cc->timeout = timeout;
cc->sca = lll->slave.sca;
cc->sca = conn->slave.sca;
lll->handle = ll_conn_handle_get(conn);
rx->handle = lll->handle;