Lines Matching refs:conn

76 #define l2cap_lookup_ident(conn, ident) __l2cap_lookup_ident(conn, ident, false)  argument
77 #define l2cap_remove_ident(conn, ident) __l2cap_lookup_ident(conn, ident, true) argument
118 static struct bt_l2cap_le_chan *l2cap_chan_alloc_cid(struct bt_conn *conn, in l2cap_chan_alloc_cid() argument
133 if (!bt_l2cap_le_lookup_rx_cid(conn, cid)) { in l2cap_chan_alloc_cid()
143 __l2cap_lookup_ident(struct bt_conn *conn, u16_t ident, bool remove) in __l2cap_lookup_ident() argument
148 SYS_SLIST_FOR_EACH_CONTAINER(&conn->channels, chan, node) { in __l2cap_lookup_ident()
151 sys_slist_remove(&conn->channels, prev, in __l2cap_lookup_ident()
164 void bt_l2cap_chan_remove(struct bt_conn *conn, struct bt_l2cap_chan *ch) in bt_l2cap_chan_remove() argument
169 SYS_SLIST_FOR_EACH_CONTAINER(&conn->channels, chan, node) { in bt_l2cap_chan_remove()
171 sys_slist_remove(&conn->channels, prev, &chan->node); in bt_l2cap_chan_remove()
254 BT_DBG("conn %p chan %p", chan->conn, chan); in bt_l2cap_chan_del()
256 if (!chan->conn) { in bt_l2cap_chan_del()
264 chan->conn = NULL; in bt_l2cap_chan_del()
284 struct bt_conn *conn = chan->chan.conn; in l2cap_rtx_timeout() local
288 bt_l2cap_chan_remove(conn, &chan->chan); in l2cap_rtx_timeout()
293 while ((chan = l2cap_remove_ident(conn, chan->chan.ident))) { in l2cap_rtx_timeout()
316 void bt_l2cap_chan_add(struct bt_conn *conn, struct bt_l2cap_chan *chan, in bt_l2cap_chan_add() argument
320 sys_slist_append(&conn->channels, &chan->node); in bt_l2cap_chan_add()
321 chan->conn = conn; in bt_l2cap_chan_add()
324 BT_DBG("conn %p chan %p", conn, chan); in bt_l2cap_chan_add()
327 static bool l2cap_chan_add(struct bt_conn *conn, struct bt_l2cap_chan *chan, in l2cap_chan_add() argument
333 ch = l2cap_chan_alloc_cid(conn, chan); in l2cap_chan_add()
346 bt_l2cap_chan_add(conn, chan, destroy); in l2cap_chan_add()
359 void bt_l2cap_connected(struct bt_conn *conn) in bt_l2cap_connected() argument
365 conn->type == BT_CONN_TYPE_BR) { in bt_l2cap_connected()
366 bt_l2cap_br_connected(conn); in bt_l2cap_connected()
373 if (fchan->accept(conn, &chan) < 0) { in bt_l2cap_connected()
385 if (!l2cap_chan_add(conn, chan, fchan->destroy)) { in bt_l2cap_connected()
402 void bt_l2cap_disconnected(struct bt_conn *conn) in bt_l2cap_disconnected() argument
406 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&conn->channels, chan, next, node) { in bt_l2cap_disconnected()
455 bt_l2cap_send(chan->conn, BT_L2CAP_CID_LE_SIG, buf); in l2cap_chan_send_req()
533 bt_l2cap_chan_remove(chan->conn, chan); in l2cap_le_encrypt_change()
543 while ((ch = l2cap_remove_ident(chan->conn, chan->ident))) { in l2cap_le_encrypt_change()
557 void bt_l2cap_encrypt_change(struct bt_conn *conn, u8_t hci_status) in bt_l2cap_encrypt_change() argument
562 conn->type == BT_CONN_TYPE_BR) { in bt_l2cap_encrypt_change()
563 l2cap_br_encrypt_change(conn, hci_status); in bt_l2cap_encrypt_change()
567 SYS_SLIST_FOR_EACH_CONTAINER(&conn->channels, chan, node) { in bt_l2cap_encrypt_change()
587 int bt_l2cap_send_cb(struct bt_conn *conn, u16_t cid, struct net_buf *buf, in bt_l2cap_send_cb() argument
592 BT_DBG("conn %p cid %u len %u", conn, cid, net_buf_frags_len(buf)); in bt_l2cap_send_cb()
598 return bt_conn_send_cb(conn, buf, cb, user_data); in bt_l2cap_send_cb()
601 static void l2cap_send_reject(struct bt_conn *conn, u8_t ident, in l2cap_send_reject() argument
620 bt_l2cap_send(conn, BT_L2CAP_CID_LE_SIG, buf); in l2cap_send_reject()
638 struct bt_conn *conn = l2cap->chan.chan.conn; in le_conn_param_update_req() local
649 if (conn->role != BT_HCI_ROLE_MASTER) { in le_conn_param_update_req()
650 l2cap_send_reject(conn, ident, BT_L2CAP_REJ_NOT_UNDERSTOOD, in le_conn_param_update_req()
670 accepted = le_param_req(conn, &param); in le_conn_param_update_req()
679 bt_l2cap_send(conn, BT_L2CAP_CID_LE_SIG, buf); in le_conn_param_update_req()
682 bt_conn_le_conn_update(conn, &param); in le_conn_param_update_req()
686 struct bt_l2cap_chan *bt_l2cap_le_lookup_tx_cid(struct bt_conn *conn, in bt_l2cap_le_lookup_tx_cid() argument
691 SYS_SLIST_FOR_EACH_CONTAINER(&conn->channels, chan, node) { in bt_l2cap_le_lookup_tx_cid()
700 struct bt_l2cap_chan *bt_l2cap_le_lookup_rx_cid(struct bt_conn *conn, in bt_l2cap_le_lookup_rx_cid() argument
705 SYS_SLIST_FOR_EACH_CONTAINER(&conn->channels, chan, node) { in bt_l2cap_le_lookup_rx_cid()
935 static u16_t l2cap_chan_accept(struct bt_conn *conn, in l2cap_chan_accept() argument
943 BT_DBG("conn %p scid 0x%04x chan %p", conn, scid, chan); in l2cap_chan_accept()
949 *chan = bt_l2cap_le_lookup_tx_cid(conn, scid); in l2cap_chan_accept()
957 err = server->accept(conn, chan); in l2cap_chan_accept()
964 if (!l2cap_chan_add(conn, *chan, l2cap_chan_destroy)) { in l2cap_chan_accept()
998 struct bt_conn *conn = l2cap->chan.chan.conn; in le_conn_req() local
1043 if (conn->sec_level < server->sec_level) { in le_conn_req()
1048 result = l2cap_chan_accept(conn, server, scid, mtu, mps, credits, in le_conn_req()
1065 bt_l2cap_send(conn, BT_L2CAP_CID_LE_SIG, buf); in le_conn_req()
1071 struct bt_conn *conn = l2cap->chan.chan.conn; in le_ecred_conn_req() local
1109 if (conn->sec_level < server->sec_level) { in le_ecred_conn_req()
1117 result = l2cap_chan_accept(conn, server, scid, mtu, mps, in le_ecred_conn_req()
1167 bt_l2cap_send(conn, BT_L2CAP_CID_LE_SIG, buf); in le_ecred_conn_req()
1173 struct bt_conn *conn = l2cap->chan.chan.conn; in le_ecred_reconf_req() local
1210 chan = bt_l2cap_le_lookup_tx_cid(conn, scid); in le_ecred_reconf_req()
1242 bt_l2cap_send(conn, BT_L2CAP_CID_LE_SIG, buf); in le_ecred_reconf_req()
1245 static struct bt_l2cap_le_chan *l2cap_remove_rx_cid(struct bt_conn *conn, in l2cap_remove_rx_cid() argument
1256 SYS_SLIST_FOR_EACH_CONTAINER(&conn->channels, chan, node) { in l2cap_remove_rx_cid()
1258 sys_slist_remove(&conn->channels, prev, &chan->node); in l2cap_remove_rx_cid()
1271 struct bt_conn *conn = l2cap->chan.chan.conn; in le_disconn_req() local
1286 chan = l2cap_remove_rx_cid(conn, dcid); in le_disconn_req()
1293 l2cap_send_reject(conn, ident, BT_L2CAP_REJ_INVALID_CID, &data, in le_disconn_req()
1310 bt_l2cap_send(conn, BT_L2CAP_CID_LE_SIG, buf); in le_disconn_req()
1344 ret = bt_conn_set_security(chan->chan.conn, in l2cap_change_security()
1358 struct bt_conn *conn = l2cap->chan.chan.conn; in le_ecred_conn_rsp() local
1380 while ((chan = l2cap_lookup_ident(conn, ident))) { in le_ecred_conn_rsp()
1388 bt_l2cap_chan_remove(conn, &chan->chan); in le_ecred_conn_rsp()
1399 while ((chan = l2cap_lookup_ident(conn, ident))) { in le_ecred_conn_rsp()
1413 bt_l2cap_chan_remove(conn, &chan->chan); in le_ecred_conn_rsp()
1418 c = bt_l2cap_le_lookup_tx_cid(conn, dcid); in le_ecred_conn_rsp()
1427 bt_l2cap_chan_remove(conn, &chan->chan); in le_ecred_conn_rsp()
1455 while ((chan = l2cap_remove_ident(conn, ident))) { in le_ecred_conn_rsp()
1465 struct bt_conn *conn = l2cap->chan.chan.conn; in le_conn_rsp() local
1488 chan = l2cap_lookup_ident(conn, ident); in le_conn_rsp()
1490 chan = l2cap_remove_ident(conn, ident); in le_conn_rsp()
1528 bt_l2cap_chan_remove(conn, &chan->chan); in le_conn_rsp()
1538 struct bt_conn *conn = l2cap->chan.chan.conn; in le_disconn_rsp() local
1552 chan = l2cap_remove_rx_cid(conn, scid); in le_disconn_rsp()
1634 static void l2cap_chan_sdu_sent(struct bt_conn *conn, void *user_data) in l2cap_chan_sdu_sent() argument
1638 BT_DBG("conn %p chan %p", conn, chan); in l2cap_chan_sdu_sent()
1647 static void l2cap_chan_seg_sent(struct bt_conn *conn, void *user_data) in l2cap_chan_seg_sent() argument
1651 BT_DBG("conn %p chan %p", conn, chan); in l2cap_chan_seg_sent()
1712 err = bt_l2cap_send_cb(ch->chan.conn, ch->tx.cid, seg, in l2cap_chan_le_send()
1715 err = bt_l2cap_send_cb(ch->chan.conn, ch->tx.cid, seg, in l2cap_chan_le_send()
1805 struct bt_conn *conn = l2cap->chan.chan.conn; in le_credits() local
1821 chan = bt_l2cap_le_lookup_tx_cid(conn, cid); in le_credits()
1845 struct bt_conn *conn = l2cap->chan.chan.conn; in reject_cmd() local
1849 chan = l2cap_remove_ident(conn, ident); in reject_cmd()
1930 l2cap_send_reject(chan->conn, hdr->ident, in l2cap_recv()
2004 bt_l2cap_send(chan->chan.conn, BT_L2CAP_CID_LE_SIG, buf); in l2cap_chan_send_credits()
2031 struct bt_conn *conn = chan->conn; in bt_l2cap_chan_recv_complete() local
2037 if (!conn) { in bt_l2cap_chan_recv_complete()
2041 if (conn->type != BT_CONN_TYPE_LE) { in bt_l2cap_chan_recv_complete()
2241 void bt_l2cap_recv(struct bt_conn *conn, struct net_buf *buf) in bt_l2cap_recv() argument
2248 conn->type == BT_CONN_TYPE_BR) { in bt_l2cap_recv()
2249 bt_l2cap_br_recv(conn, buf); in bt_l2cap_recv()
2264 chan = bt_l2cap_le_lookup_rx_cid(conn, cid); in bt_l2cap_recv()
2274 int bt_l2cap_update_conn_param(struct bt_conn *conn, in bt_l2cap_update_conn_param() argument
2292 bt_l2cap_send(conn, BT_L2CAP_CID_LE_SIG, buf); in bt_l2cap_update_conn_param()
2309 static int l2cap_accept(struct bt_conn *conn, struct bt_l2cap_chan **chan) in l2cap_accept() argument
2318 BT_DBG("conn %p handle %u", conn, conn->handle); in l2cap_accept()
2323 if (l2cap->chan.chan.conn) { in l2cap_accept()
2333 BT_ERR("No available L2CAP context for conn %p", conn); in l2cap_accept()
2352 static int l2cap_le_connect(struct bt_conn *conn, struct bt_l2cap_le_chan *ch, in l2cap_le_connect() argument
2362 if (!l2cap_chan_add(conn, &ch->chan, l2cap_chan_destroy)) { in l2cap_le_connect()
2371 static int l2cap_ecred_init(struct bt_conn *conn, in l2cap_ecred_init() argument
2382 if (!l2cap_chan_add(conn, &ch->chan, l2cap_chan_destroy)) { in l2cap_ecred_init()
2394 int bt_l2cap_ecred_chan_connect(struct bt_conn *conn, in bt_l2cap_ecred_chan_connect() argument
2399 BT_DBG("conn %p chan %p psm 0x%04x", conn, chan, psm); in bt_l2cap_ecred_chan_connect()
2401 if (!conn || !chan) { in bt_l2cap_ecred_chan_connect()
2411 err = l2cap_ecred_init(conn, BT_L2CAP_LE_CHAN(chan[i]), psm); in bt_l2cap_ecred_chan_connect()
2426 bt_l2cap_chan_remove(conn, chan[i]); in bt_l2cap_ecred_chan_connect()
2432 int bt_l2cap_chan_connect(struct bt_conn *conn, struct bt_l2cap_chan *chan, in bt_l2cap_chan_connect() argument
2435 BT_DBG("conn %p chan %p psm 0x%04x", conn, chan, psm); in bt_l2cap_chan_connect()
2437 if (!conn || conn->state != BT_CONN_CONNECTED) { in bt_l2cap_chan_connect()
2446 conn->type == BT_CONN_TYPE_BR) { in bt_l2cap_chan_connect()
2447 return bt_l2cap_br_chan_connect(conn, chan, psm); in bt_l2cap_chan_connect()
2456 return l2cap_le_connect(conn, BT_L2CAP_LE_CHAN(chan), psm); in bt_l2cap_chan_connect()
2461 struct bt_conn *conn = chan->conn; in bt_l2cap_chan_disconnect() local
2466 if (!conn) { in bt_l2cap_chan_disconnect()
2471 conn->type == BT_CONN_TYPE_BR) { in bt_l2cap_chan_disconnect()
2509 if (!chan->conn || chan->conn->state != BT_CONN_CONNECTED) { in bt_l2cap_chan_send()
2518 chan->conn->type == BT_CONN_TYPE_BR) { in bt_l2cap_chan_send()