Home | History | Annotate | Download | only in l2cap

Lines Matching refs:p_lcb

40 static void l2cble_start_conn_update (tL2C_LCB *p_lcb);
55 tL2C_LCB *p_lcb;
76 p_lcb = l2cu_find_lcb_by_bd_addr(rem_bda, BT_TRANSPORT_LE);
78 if (p_lcb != NULL &&
79 !(p_lcb->link_role == HCI_ROLE_SLAVE && BTM_ACL_IS_CONNECTED(rem_bda)))
81 p_lcb->disc_reason = L2CAP_CONN_CANCEL;
82 l2cu_release_lcb (p_lcb);
107 tL2C_LCB *p_lcb;
111 p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_LE);
114 if (!p_lcb || !p_acl_cb)
122 if (p_lcb->transport != BT_TRANSPORT_LE)
130 p_lcb->min_interval = min_int;
131 p_lcb->max_interval = max_int;
132 p_lcb->latency = latency;
133 p_lcb->timeout = timeout;
134 p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM;
136 l2cble_start_conn_update(p_lcb);
158 tL2C_LCB *p_lcb;
161 p_lcb = l2cu_find_lcb_by_bd_addr (rem_bda, BT_TRANSPORT_LE);
163 if (!p_lcb)
173 (rem_bda[4]<<8)+rem_bda[5], enable, p_lcb->conn_update_mask);
175 if (p_lcb->transport != BT_TRANSPORT_LE)
179 (rem_bda[4]<<8)+rem_bda[5], p_lcb->link_role);
184 p_lcb->conn_update_mask &= ~L2C_BLE_CONN_UPDATE_DISABLE;
186 p_lcb->conn_update_mask |= L2C_BLE_CONN_UPDATE_DISABLE;
188 l2cble_start_conn_update(p_lcb);
207 tL2C_LCB *p_lcb;
209 if ((p_lcb = l2cu_find_lcb_by_bd_addr (bd_addr, BT_TRANSPORT_LE)) != NULL)
210 role = p_lcb->link_role;
225 tL2C_LCB *p_lcb;
228 if ((p_lcb = l2cu_find_lcb_by_bd_addr (remote_bda, transport)) != NULL)
229 reason = p_lcb->disc_reason;
237 tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr (bda, BT_TRANSPORT_LE);
248 ((p_lcb->min_interval < p_dev_rec->conn_params.min_conn_int &&
250 (p_lcb->min_interval > p_dev_rec->conn_params.max_conn_int) ||
251 (p_lcb->latency > p_dev_rec->conn_params.slave_latency) ||
252 (p_lcb->timeout > p_dev_rec->conn_params.supervision_tout)))
255 p_lcb->handle, p_dev_rec->conn_params.min_conn_int, p_dev_rec->conn_params.max_conn_int,
258 p_lcb->min_interval = p_dev_rec->conn_params.min_conn_int;
259 p_lcb->max_interval = p_dev_rec->conn_params.max_conn_int;
260 p_lcb->timeout = p_dev_rec->conn_params.supervision_tout;
261 p_lcb->latency = p_dev_rec->conn_params.slave_latency;
263 btsnd_hcic_ble_upd_ll_conn_params (p_lcb->handle,
283 tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr (bda, BT_TRANSPORT_LE);
287 if (p_lcb != NULL && p_acl != NULL && p_lcb->link_state != LST_CONNECTED)
292 p_lcb->link_state = LST_CONNECTED;
293 l2cu_process_fixed_chnl_resp (p_lcb);
297 for (p_ccb = p_lcb->ccb_queue.p_first_ccb; p_ccb; p_ccb = p_ccb->p_next_ccb)
319 tL2C_LCB *p_lcb;
328 p_lcb = l2cu_find_lcb_by_bd_addr (bda, BT_TRANSPORT_LE);
331 if (!p_lcb)
333 p_lcb = l2cu_allocate_lcb (bda, FALSE, BT_TRANSPORT_LE);
334 if (!p_lcb)
342 if (!l2cu_initialize_fixed_ccb (p_lcb, L2CAP_ATT_CID, &l2cb.fixed_reg[L2CAP_ATT_CID - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts))
350 else if (p_lcb->link_state != LST_CONNECTING)
352 L2CAP_TRACE_ERROR ("L2CAP got BLE scanner conn_comp in bad state: %d", p_lcb->link_state);
355 alarm_cancel(p_lcb->l2c_lcb_timer);
358 p_lcb->handle = handle;
361 p_lcb->link_role = HCI_ROLE_MASTER;
362 p_lcb->transport = BT_TRANSPORT_LE;
365 p_lcb->min_interval = p_lcb->max_interval = conn_interval;
366 p_lcb->timeout = conn_timeout;
367 p_lcb->latency = conn_latency;
368 p_lcb->conn_update_mask = L2C_BLE_NOT_DEFAULT_PARAM;
371 btm_acl_created (bda, NULL, p_dev_rec->sec_bd_name, handle, p_lcb->link_role, BT_TRANSPORT_LE);
373 p_lcb->peer_chnl_mask[0] = L2CAP_FIXED_CHNL_ATT_BIT | L2CAP_FIXED_CHNL_BLE_SIG_BIT | L2CAP_FIXED_CHNL_SMP_BIT;
396 tL2C_LCB *p_lcb;
404 p_lcb = l2cu_find_lcb_by_bd_addr (bda, BT_TRANSPORT_LE);
407 if (!p_lcb)
409 p_lcb = l2cu_allocate_lcb (bda, FALSE, BT_TRANSPORT_LE);
410 if (!p_lcb)
418 if (!l2cu_initialize_fixed_ccb (p_lcb, L2CAP_ATT_CID, &l2cb.fixed_reg[L2CAP_ATT_CID - L2CAP_FIRST_FIXED_CHNL].fixed_chnl_opts))
428 p_lcb->handle = handle;
431 p_lcb->link_role = HCI_ROLE_SLAVE;
432 p_lcb->transport = BT_TRANSPORT_LE;
435 p_lcb->min_interval = p_lcb->max_interval = conn_interval;
436 p_lcb->timeout = conn_timeout;
437 p_lcb
438 p_lcb->conn_update_mask = L2C_BLE_NOT_DEFAULT_PARAM;
443 btm_acl_created (bda, NULL, p_dev_rec->sec_bd_name, handle, p_lcb->link_role, BT_TRANSPORT_LE);
449 p_lcb->peer_chnl_mask[0] = L2CAP_FIXED_CHNL_ATT_BIT | L2CAP_FIXED_CHNL_BLE_SIG_BIT | L2CAP_FIXED_CHNL_SMP_BIT;
453 p_lcb->link_state = LST_CONNECTED;
454 l2cu_process_fixed_chnl_resp (p_lcb);
500 static void l2cble_start_conn_update (tL2C_LCB *p_lcb)
503 tACL_CONN *p_acl_cb = btm_bda_to_acl(p_lcb->remote_bd_addr, BT_TRANSPORT_LE);
508 btm_find_or_alloc_dev(p_lcb->remote_bd_addr);
510 if (p_lcb->conn_update_mask & L2C_BLE_UPDATE_PENDING) return;
512 if (p_lcb->conn_update_mask & L2C_BLE_CONN_UPDATE_DISABLE)
517 if (p_lcb->conn_update_mask & L2C_BLE_NOT_DEFAULT_PARAM &&
519 p_lcb->min_interval > BTM_BLE_CONN_INT_MIN)
527 if (p_lcb->link_role == HCI_ROLE_MASTER
534 btsnd_hcic_ble_upd_ll_conn_params(p_lcb->handle, min_conn_int, max_conn_int,
536 p_lcb->conn_update_mask |= L2C_BLE_UPDATE_PENDING;
540 l2cu_send_peer_ble_par_req (p_lcb, min_conn_int, max_conn_int, slave_latency, supervision_tout);
542 p_lcb->conn_update_mask &= ~L2C_BLE_NOT_DEFAULT_PARAM;
543 p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM;
549 if (p_lcb->conn_update_mask & L2C_BLE_NEW_CONN_PARAM)
552 if (p_lcb->link_role == HCI_ROLE_MASTER
559 btsnd_hcic_ble_upd_ll_conn_params(p_lcb->handle, p_lcb->min_interval,
560 p_lcb->max_interval, p_lcb->latency, p_lcb->timeout, 0, 0);
561 p_lcb->conn_update_mask |= L2C_BLE_UPDATE_PENDING;
565 l2cu_send_peer_ble_par_req (p_lcb, p_lcb->min_interval, p_lcb->max_interval,
566 p_lcb->latency, p_lcb->timeout);
568 p_lcb->conn_update_mask &= ~L2C_BLE_NEW_CONN_PARAM;
569 p_lcb->conn_update_mask |= L2C_BLE_NOT_DEFAULT_PARAM;
586 tL2C_LCB *p_lcb;
591 p_lcb = l2cu_find_lcb_by_handle(handle);
592 if (!p_lcb)
598 p_lcb->conn_update_mask &= ~L2C_BLE_UPDATE_PENDING;
605 l2cble_start_conn_update(p_lcb);
607 L2CAP_TRACE_DEBUG("l2cble_process_conn_update_evt: conn_update_mask=%d", p_lcb->conn_update_mask);
619 void l2cble_process_sig_cmd (tL2C_LCB *p_lcb, UINT8 *p, UINT16 pkt_len)
653 l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0);
662 if (p_lcb->link_role == HCI_ROLE_MASTER)
674 l2cu_send_peer_ble_par_rsp (p_lcb, L2CAP_CFG_UNACCEPTABLE_PARAMS, id);
679 l2cu_send_peer_ble_par_rsp (p_lcb, L2CAP_CFG_OK, id);
681 p_lcb->min_interval = min_interval;
682 p_lcb->max_interval = max_interval;
683 p_lcb->latency = latency;
684 p_lcb->timeout = timeout;
685 p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM;
687 l2cble_start_conn_update(p_lcb);
691 l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0);
713 l2cu_reject_ble_connection (p_lcb, id, L2CAP_LE_NO_PSM);
721 l2cu_reject_ble_connection (p_lcb, id, L2CAP_CONN_NO_PSM);
727 if ((p_ccb = l2cu_allocate_ccb (p_lcb, 0)) == NULL)
730 l2cu_reject_ble_connection (p_lcb, id, L2CAP_CONN_NO_RESOURCES);
738 l2cu_reject_ble_connection (p_lcb, id, L2CAP_CONN_NO_RESOURCES);
762 for (temp_p_ccb = p_lcb->ccb_queue.p_first_ccb; temp_p_ccb; temp_p_ccb = temp_p_ccb->p_next_ccb)
820 if((p_ccb = l2cu_find_ccb_by_remote_cid(p_lcb, lcid)) == NULL)
835 if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL)
844 l2cu_send_peer_disc_rsp (p_lcb, id, lcid, rcid);
852 if ((p_ccb = l2cu_find_ccb_by_cid (p_lcb, lcid)) != NULL)
861 l2cu_send_peer_cmd_reject (p_lcb, L2CAP_CMD_REJ_NOT_UNDERSTOOD, id, 0, 0);
875 BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb)
877 tBTM_SEC_DEV_REC *p_dev_rec = btm_find_or_alloc_dev (p_lcb->remote_bd_addr);
895 peer_addr_type = p_lcb->ble_addr_type;
896 memcpy(peer_addr, p_lcb->remote_bd_addr, BD_ADDR_LEN);
919 l2cu_release_lcb (p_lcb);
941 l2cu_release_lcb (p_lcb);
947 p_lcb->link_state = LST_CONNECTING;
949 memcpy (l2cb.ble_connecting_bda, p_lcb->remote_bd_addr, BD_ADDR_LEN);
950 alarm_set_on_queue(p_lcb->l2c_lcb_timer,
952 l2c_lcb_timer_timeout, p_lcb,
969 BOOLEAN l2cble_create_conn (tL2C_LCB *p_lcb)
977 rt = l2cble_init_direct_conn(p_lcb);
983 btm_ble_enqueue_direct_conn_req(p_lcb);
1033 tL2C_LCB *p_lcb;
1049 for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++)
1051 if (p_lcb->in_use && p_lcb->transport == BT_TRANSPORT_LE)
1053 if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH)
1098 for (yy = 0, p_lcb = &l2cb.lcb_pool[0]; yy < MAX_L2CAP_LINKS; yy++, p_lcb++)
1100 if (p_lcb->in_use && p_lcb->transport == BT_TRANSPORT_LE)
1102 if (p_lcb->acl_priority == L2CAP_PRIORITY_HIGH)
1104 p_lcb->link_xmit_quota = high_pri_link_quota;
1111 if (( p_lcb->link_xmit_quota > 0 )&&( qq == 0 ))
1112 l2cb.ble_round_robin_unacked += p_lcb->sent_not_acked;
1114 p_lcb->link_xmit_quota = qq;
1117 p_lcb->link_xmit_quota++;
1123 yy, p_lcb->acl_priority, p_lcb->link_xmit_quota);
1126 p_lcb->sent_not_acked, l2cb.round_robin_unacked);
1131 if ( (p_lcb->link_state == LST_CONNECTED)
1132 && (!list_is_empty(p_lcb->link_xmit_data_q))
1133 && (p_lcb->sent_not_acked < p_lcb->link_xmit_quota) ) {
1134 alarm_set_on_queue(p_lcb->l2c_lcb_timer,
1136 l2c_lcb_timer_timeout, p_lcb,
1156 tL2C_LCB *p_lcb = l2cu_find_lcb_by_handle (handle);
1158 if (p_lcb != NULL)
1160 p_lcb->min_interval = int_min;
1161 p_lcb->max_interval = int_max;
1162 p_lcb->latency = latency;
1163 p_lcb->timeout = timeout;
1166 if ((p_lcb->conn_update_mask & L2C_BLE_CONN_UPDATE_DISABLE) == 0)
1173 p_lcb->conn_update_mask |= L2C_BLE_NEW_CONN_PARAM;
1194 void l2cble_update_data_length(tL2C_LCB *p_lcb)
1202 if (p_lcb == NULL)
1209 if ((p_lcb->p_fixed_ccbs[i] != NULL) &&
1210 (tx_mtu < (p_lcb->p_fixed_ccbs[i]->tx_data_len + L2CAP_PKT_OVERHEAD)))
1211 tx_mtu = p_lcb->p_fixed_ccbs[i]->tx_data_len + L2CAP_PKT_OVERHEAD;
1219 if (p_lcb->tx_data_len != tx_mtu)
1220 BTM_SetBleDataLength(p_lcb->remote_bd_addr, tx_mtu);
1235 tL2C_LCB *p_lcb = l2cu_find_lcb_by_handle(handle);
1238 if (p_lcb == NULL)
1242 p_lcb->tx_data_len = tx_data_len;
1258 tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr(remote_bda, BT_TRANSPORT_LE);
1270 if (p_lcb == NULL)
1273 if (p_lcb->p_fixed_ccbs[cid] != NULL)
1278 p_lcb->p_fixed_ccbs[cid]->tx_data_len = tx_mtu;
1281 l2cble_update_data_length(p_lcb);
1299 if (p_ccb->p_lcb && p_ccb->p_lcb->transport != BT_TRANSPORT_LE)
1324 if (p_ccb->p_lcb && p_ccb->p_lcb->transport != BT_TRANSPORT_LE)
1349 if (p_ccb->p_lcb && p_ccb->p_lcb->transport != BT_TRANSPORT_LE)
1376 if (p_ccb->p_lcb && p_ccb->p_lcb->transport != BT_TRANSPORT_LE)
1398 tL2C_LCB *p_lcb = l2cu_find_lcb_by_bd_addr(p_bda, BT_TRANSPORT_LE);
1403 if (!p_lcb)
1409 sec_act = p_lcb->sec_act;
1410 p_lcb->sec_act = 0;
1412 if (!fixed_queue_is_empty(p_lcb->le_sec_pending_q))
1414 p_buf = (tL2CAP_SEC_DATA*) fixed_queue_dequeue(p_lcb->le_sec_pending_q);
1443 __func__, p_lcb->sec_act);
1456 while (!fixed_queue_is_empty(p_lcb->le_sec_pending_q))
1458 p_buf = (tL2CAP_SEC_DATA*) fixed_queue_dequeue(p_lcb->le_sec_pending_q);
1485 tL2C_LCB *p_lcb = NULL;
1493 p_lcb = l2cu_find_lcb_by_bd_addr(bd_addr, BT_TRANSPORT_LE);
1495 if (!p_lcb)
1513 fixed_queue_enqueue(p_lcb->le_sec_pending_q, p_buf);