Lines Matching refs:conn
60 static void cc_ntf_established(struct ll_conn *conn, struct proc_ctx *ctx) in cc_ntf_established() argument
74 ntf->hdr.handle = conn->lll.handle; in cc_ntf_established()
133 static void rp_cc_check_instant_rx_cis_ind(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt,
140 static void llcp_rp_cc_tx_rsp(struct ll_conn *conn, struct proc_ctx *ctx) in llcp_rp_cc_tx_rsp() argument
148 tx = llcp_tx_alloc(conn, ctx); in llcp_rp_cc_tx_rsp()
160 ull_conn_event_counter(conn) + 2U); in llcp_rp_cc_tx_rsp()
176 uint32_t conn_interval_us = conn->lll.interval * CONN_INT_UNIT_US; in llcp_rp_cc_tx_rsp()
194 llcp_tx_enqueue(conn, tx); in llcp_rp_cc_tx_rsp()
197 static void llcp_rp_cc_tx_reject(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t opcode) in llcp_rp_cc_tx_reject() argument
214 llcp_tx_enqueue(conn, tx); in llcp_rp_cc_tx_reject()
217 static void rp_cc_ntf_create(struct ll_conn *conn, struct proc_ctx *ctx) in rp_cc_ntf_create() argument
227 ntf->hdr.handle = conn->lll.handle; in rp_cc_ntf_create()
237 static void rp_cc_complete(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, void *param) in rp_cc_complete() argument
239 cc_ntf_established(conn, ctx); in rp_cc_complete()
240 llcp_rr_complete(conn); in rp_cc_complete()
244 static void rp_cc_send_cis_rsp(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_send_cis_rsp() argument
247 if (llcp_rr_ispaused(conn) || !llcp_tx_alloc_peek(conn, ctx)) { in rp_cc_send_cis_rsp()
250 llcp_rp_cc_tx_rsp(conn, ctx); in rp_cc_send_cis_rsp()
258 static void rp_cc_send_reject_ind(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_send_reject_ind() argument
261 if (llcp_rr_ispaused(conn) || !llcp_tx_alloc_peek(conn, ctx)) { in rp_cc_send_reject_ind()
265 ctx->node_ref.tx = llcp_tx_alloc(conn, ctx); in rp_cc_send_reject_ind()
280 llcp_rp_cc_tx_reject(conn, ctx, PDU_DATA_LLCTRL_TYPE_CIS_REQ); in rp_cc_send_reject_ind()
284 rp_cc_complete(conn, ctx, evt, param); in rp_cc_send_reject_ind()
287 llcp_rr_complete(conn); in rp_cc_send_reject_ind()
293 static void rp_cc_state_idle(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_idle() argument
306 static uint8_t rp_cc_check_phy(struct ll_conn *conn, struct proc_ctx *ctx, in rp_cc_check_phy() argument
318 if (((phys & PHY_2M) && !feature_phy_2m(conn)) || in rp_cc_check_phy()
319 ((phys & PHY_CODED) && !feature_phy_coded(conn))) { in rp_cc_check_phy()
331 static uint8_t rp_cc_validate_req(struct ll_conn *conn, struct proc_ctx *ctx, in rp_cc_validate_req() argument
344 result = rp_cc_check_phy(conn, ctx, pdu); in rp_cc_validate_req()
402 if (!IN_RANGE(cis_offset_max, cis_offset_min, conn->lll.interval * CONN_INT_UNIT_US - 1)) { in rp_cc_validate_req()
409 static void rp_cc_state_wait_rx_cis_req(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_wait_rx_cis_req() argument
420 ctx->data.cis_create.error = rp_cc_validate_req(conn, ctx, pdu); in rp_cc_state_wait_rx_cis_req()
424 ull_peripheral_iso_acquire(conn, &pdu->llctrl.cis_req, in rp_cc_state_wait_rx_cis_req()
430 rp_cc_ntf_create(conn, ctx); in rp_cc_state_wait_rx_cis_req()
434 rp_cc_send_reject_ind(conn, ctx, evt, param); in rp_cc_state_wait_rx_cis_req()
443 static void rp_cc_state_wait_tx_cis_rsp(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_wait_tx_cis_rsp() argument
448 rp_cc_send_cis_rsp(conn, ctx, evt, param); in rp_cc_state_wait_tx_cis_rsp()
456 static void rp_cc_state_wait_tx_reject_ind(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_wait_tx_reject_ind() argument
461 rp_cc_send_reject_ind(conn, ctx, evt, param); in rp_cc_state_wait_tx_reject_ind()
469 static void rp_cc_state_wait_rx_cis_ind(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_wait_rx_cis_ind() argument
488 rp_cc_check_instant_rx_cis_ind(conn, ctx, evt, param); in rp_cc_state_wait_rx_cis_ind()
504 static void rp_cc_state_wait_ntf_avail(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_wait_ntf_avail() argument
515 llcp_rp_cc_tx_reject(conn, ctx, PDU_DATA_LLCTRL_TYPE_CIS_REQ); in rp_cc_state_wait_ntf_avail()
516 rp_cc_complete(conn, ctx, evt, param); in rp_cc_state_wait_ntf_avail()
526 static void rp_cc_check_instant_by_counter(struct ll_conn *conn, struct proc_ctx *ctx, in rp_cc_check_instant_by_counter() argument
537 ull_conn_iso_start(conn, ctx->data.cis_create.cis_handle, in rp_cc_check_instant_by_counter()
538 conn->llcp.prep.ticks_at_expire, in rp_cc_check_instant_by_counter()
539 conn->llcp.prep.remainder, in rp_cc_check_instant_by_counter()
547 static void rp_cc_check_instant(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_check_instant() argument
552 event_counter = ull_conn_event_counter_at_prepare(conn); in rp_cc_check_instant()
554 rp_cc_check_instant_by_counter(conn, ctx, event_counter, evt, param); in rp_cc_check_instant()
557 static void rp_cc_check_instant_rx_cis_ind(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_check_instant_rx_cis_ind() argument
562 event_counter = ull_conn_event_counter(conn); in rp_cc_check_instant_rx_cis_ind()
564 rp_cc_check_instant_by_counter(conn, ctx, event_counter, evt, param); in rp_cc_check_instant_rx_cis_ind()
567 static void rp_cc_state_wait_reply(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_wait_reply() argument
578 ctx->data.cis_create.host_request_to += (conn->lll.interval * CONN_INT_UNIT_US); in rp_cc_state_wait_reply()
579 if (ctx->data.cis_create.host_request_to < conn->connect_accept_to) { in rp_cc_state_wait_reply()
598 static void rp_cc_state_wait_instant(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in rp_cc_state_wait_instant() argument
603 rp_cc_check_instant(conn, ctx, evt, param); in rp_cc_state_wait_instant()
612 static void rp_cc_state_wait_cis_established(struct ll_conn *conn, struct proc_ctx *ctx, in rp_cc_state_wait_cis_established() argument
617 rp_cc_complete(conn, ctx, evt, param); in rp_cc_state_wait_cis_established()
626 static void rp_cc_execute_fsm(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, void *param) in rp_cc_execute_fsm() argument
631 rp_cc_state_idle(conn, ctx, evt, param); in rp_cc_execute_fsm()
634 rp_cc_state_wait_rx_cis_req(conn, ctx, evt, param); in rp_cc_execute_fsm()
637 rp_cc_state_wait_tx_reject_ind(conn, ctx, evt, param); in rp_cc_execute_fsm()
640 rp_cc_state_wait_tx_cis_rsp(conn, ctx, evt, param); in rp_cc_execute_fsm()
643 rp_cc_state_wait_reply(conn, ctx, evt, param); in rp_cc_execute_fsm()
646 rp_cc_state_wait_rx_cis_ind(conn, ctx, evt, param); in rp_cc_execute_fsm()
649 rp_cc_state_wait_instant(conn, ctx, evt, param); in rp_cc_execute_fsm()
652 rp_cc_state_wait_cis_established(conn, ctx, evt, param); in rp_cc_execute_fsm()
655 rp_cc_state_wait_ntf_avail(conn, ctx, evt, param); in rp_cc_execute_fsm()
663 void llcp_rp_cc_rx(struct ll_conn *conn, struct proc_ctx *ctx, struct node_rx_pdu *rx) in llcp_rp_cc_rx() argument
669 rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_CIS_REQ, pdu); in llcp_rp_cc_rx()
672 rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_CIS_IND, pdu); in llcp_rp_cc_rx()
676 rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_REJECT, pdu); in llcp_rp_cc_rx()
681 conn->llcp_terminate.reason_final = BT_HCI_ERR_LMP_PDU_NOT_ALLOWED; in llcp_rp_cc_rx()
682 llcp_rr_complete(conn); in llcp_rp_cc_rx()
698 void llcp_rp_cc_accept(struct ll_conn *conn, struct proc_ctx *ctx) in llcp_rp_cc_accept() argument
700 rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_CIS_REQ_ACCEPT, NULL); in llcp_rp_cc_accept()
703 void llcp_rp_cc_reject(struct ll_conn *conn, struct proc_ctx *ctx) in llcp_rp_cc_reject() argument
705 rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_CIS_REQ_REJECT, NULL); in llcp_rp_cc_reject()
708 void llcp_rp_cc_run(struct ll_conn *conn, struct proc_ctx *ctx, void *param) in llcp_rp_cc_run() argument
710 rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_RUN, param); in llcp_rp_cc_run()
718 void llcp_rp_cc_established(struct ll_conn *conn, struct proc_ctx *ctx) in llcp_rp_cc_established() argument
720 rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_CIS_ESTABLISHED, NULL); in llcp_rp_cc_established()
725 static void lp_cc_execute_fsm(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, void *param);
763 static void lp_cc_tx(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t opcode) in lp_cc_tx() argument
769 tx = llcp_tx_alloc(conn, ctx); in lp_cc_tx()
791 llcp_tx_enqueue(conn, tx); in lp_cc_tx()
794 void llcp_lp_cc_rx(struct ll_conn *conn, struct proc_ctx *ctx, struct node_rx_pdu *rx) in llcp_lp_cc_rx() argument
800 lp_cc_execute_fsm(conn, ctx, LP_CC_EVT_CIS_RSP, pdu); in llcp_lp_cc_rx()
804 lp_cc_execute_fsm(conn, ctx, LP_CC_EVT_REJECT, pdu); in llcp_lp_cc_rx()
809 conn->llcp_terminate.reason_final = BT_HCI_ERR_LMP_PDU_NOT_ALLOWED; in llcp_lp_cc_rx()
810 llcp_lr_complete(conn); in llcp_lp_cc_rx()
816 void llcp_lp_cc_offset_calc_reply(struct ll_conn *conn, struct proc_ctx *ctx) in llcp_lp_cc_offset_calc_reply() argument
818 lp_cc_execute_fsm(conn, ctx, LP_CC_EVT_OFFSET_CALC_REPLY, NULL); in llcp_lp_cc_offset_calc_reply()
821 static void lp_cc_offset_calc_req(struct ll_conn *conn, struct proc_ctx *ctx, in lp_cc_offset_calc_req() argument
824 if (llcp_lr_ispaused(conn) || !llcp_tx_alloc_peek(conn, ctx)) { in lp_cc_offset_calc_req()
840 lp_cc_tx(conn, ctx, PDU_DATA_LLCTRL_TYPE_CIS_REQ); in lp_cc_offset_calc_req()
847 static void lp_cc_st_wait_offset_calc_tx_req(struct ll_conn *conn, in lp_cc_st_wait_offset_calc_tx_req() argument
853 lp_cc_offset_calc_req(conn, ctx, evt, param); in lp_cc_st_wait_offset_calc_tx_req()
861 static void lp_cc_st_wait_offset_calc(struct ll_conn *conn, in lp_cc_st_wait_offset_calc() argument
880 static void lp_cc_send_cis_req(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_send_cis_req() argument
883 if (llcp_lr_ispaused(conn) || !llcp_tx_alloc_peek(conn, ctx)) { in lp_cc_send_cis_req()
886 lp_cc_tx(conn, ctx, PDU_DATA_LLCTRL_TYPE_CIS_REQ); in lp_cc_send_cis_req()
893 static void lp_cc_st_wait_tx_cis_req(struct ll_conn *conn, struct proc_ctx *ctx, in lp_cc_st_wait_tx_cis_req() argument
898 lp_cc_send_cis_req(conn, ctx, evt, param); in lp_cc_st_wait_tx_cis_req()
906 static void lp_cc_complete(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, void *param) in lp_cc_complete() argument
908 cc_ntf_established(conn, ctx); in lp_cc_complete()
909 llcp_lr_complete(conn); in lp_cc_complete()
913 static void lp_cc_st_idle(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, void *param) in lp_cc_st_idle() argument
922 if (feature_peer_iso_peripheral(conn)) { in lp_cc_st_idle()
923 lp_cc_offset_calc_req(conn, ctx, evt, param); in lp_cc_st_idle()
942 static void lp_cc_state_wait_ntf_avail(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_state_wait_ntf_avail() argument
953 lp_cc_complete(conn, ctx, evt, param); in lp_cc_state_wait_ntf_avail()
962 static void cc_prepare_cis_ind(struct ll_conn *conn, struct proc_ctx *ctx) in cc_prepare_cis_ind() argument
980 static void lp_cc_send_cis_ind(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_send_cis_ind() argument
983 if (llcp_lr_ispaused(conn) || !llcp_tx_alloc_peek(conn, ctx)) { in lp_cc_send_cis_ind()
986 cc_prepare_cis_ind(conn, ctx); in lp_cc_send_cis_ind()
987 lp_cc_tx(conn, ctx, PDU_DATA_LLCTRL_TYPE_CIS_IND); in lp_cc_send_cis_ind()
991 static void lp_cc_st_wait_rx_cis_rsp(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_st_wait_rx_cis_rsp() argument
1004 lp_cc_send_cis_ind(conn, ctx, evt, param); in lp_cc_st_wait_rx_cis_rsp()
1008 feature_unmask_peer_features(conn, LL_FEAT_BIT_CIS_PERIPHERAL); in lp_cc_st_wait_rx_cis_rsp()
1010 lp_cc_complete(conn, ctx, evt, param); in lp_cc_st_wait_rx_cis_rsp()
1015 feature_unmask_peer_features(conn, LL_FEAT_BIT_CIS_PERIPHERAL); in lp_cc_st_wait_rx_cis_rsp()
1018 lp_cc_complete(conn, ctx, evt, param); in lp_cc_st_wait_rx_cis_rsp()
1026 static void lp_cc_st_wait_notify_cancel(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_st_wait_notify_cancel() argument
1038 llcp_lp_cc_established(conn, ctx); in lp_cc_st_wait_notify_cancel()
1047 static void lp_cc_st_wait_rx_cis_rsp_cancel(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_st_wait_rx_cis_rsp_cancel() argument
1056 tx = llcp_tx_alloc(conn, ctx); in lp_cc_st_wait_rx_cis_rsp_cancel()
1066 llcp_tx_enqueue(conn, tx); in lp_cc_st_wait_rx_cis_rsp_cancel()
1067 lp_cc_complete(conn, ctx, evt, param); in lp_cc_st_wait_rx_cis_rsp_cancel()
1071 lp_cc_complete(conn, ctx, evt, param); in lp_cc_st_wait_rx_cis_rsp_cancel()
1079 static void lp_cc_st_wait_tx_cis_ind(struct ll_conn *conn, struct proc_ctx *ctx, in lp_cc_st_wait_tx_cis_ind() argument
1084 lp_cc_send_cis_ind(conn, ctx, evt, param); in lp_cc_st_wait_tx_cis_ind()
1092 static void lp_cc_check_instant(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_check_instant() argument
1099 event_counter = ull_conn_event_counter_at_prepare(conn); in lp_cc_check_instant()
1105 ull_conn_iso_start(conn, ctx->data.cis_create.cis_handle, in lp_cc_check_instant()
1106 conn->llcp.prep.ticks_at_expire, in lp_cc_check_instant()
1107 conn->llcp.prep.remainder, in lp_cc_check_instant()
1115 static void lp_cc_st_wait_instant(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_st_wait_instant() argument
1120 lp_cc_check_instant(conn, ctx, evt, param); in lp_cc_st_wait_instant()
1128 static void lp_cc_st_wait_established(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, in lp_cc_st_wait_established() argument
1134 lp_cc_complete(conn, ctx, evt, param); in lp_cc_st_wait_established()
1142 static void lp_cc_execute_fsm(struct ll_conn *conn, struct proc_ctx *ctx, uint8_t evt, void *param) in lp_cc_execute_fsm() argument
1146 lp_cc_st_idle(conn, ctx, evt, param); in lp_cc_execute_fsm()
1149 lp_cc_state_wait_ntf_avail(conn, ctx, evt, param); in lp_cc_execute_fsm()
1152 lp_cc_st_wait_offset_calc_tx_req(conn, ctx, evt, param); in lp_cc_execute_fsm()
1155 lp_cc_st_wait_offset_calc(conn, ctx, evt, param); in lp_cc_execute_fsm()
1158 lp_cc_st_wait_tx_cis_req(conn, ctx, evt, param); in lp_cc_execute_fsm()
1161 lp_cc_st_wait_rx_cis_rsp(conn, ctx, evt, param); in lp_cc_execute_fsm()
1164 lp_cc_st_wait_notify_cancel(conn, ctx, evt, param); in lp_cc_execute_fsm()
1167 lp_cc_st_wait_rx_cis_rsp_cancel(conn, ctx, evt, param); in lp_cc_execute_fsm()
1170 lp_cc_st_wait_tx_cis_ind(conn, ctx, evt, param); in lp_cc_execute_fsm()
1173 lp_cc_st_wait_instant(conn, ctx, evt, param); in lp_cc_execute_fsm()
1176 lp_cc_st_wait_established(conn, ctx, evt, param); in lp_cc_execute_fsm()
1185 void llcp_lp_cc_run(struct ll_conn *conn, struct proc_ctx *ctx, void *param) in llcp_lp_cc_run() argument
1187 lp_cc_execute_fsm(conn, ctx, LP_CC_EVT_RUN, param); in llcp_lp_cc_run()
1200 void llcp_lp_cc_established(struct ll_conn *conn, struct proc_ctx *ctx) in llcp_lp_cc_established() argument
1202 lp_cc_execute_fsm(conn, ctx, LP_CC_EVT_ESTABLISHED, NULL); in llcp_lp_cc_established()
1205 bool llcp_lp_cc_cancel(struct ll_conn *conn, struct proc_ctx *ctx) in llcp_lp_cc_cancel() argument