• Home
  • Raw
  • Download

Lines Matching refs:chan

55 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;  in l2cap_sock_bind()  local
95 err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid)); in l2cap_sock_bind()
97 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm); in l2cap_sock_bind()
104 chan->sec_level = BT_SECURITY_SDP; in l2cap_sock_bind()
108 chan->state = BT_BOUND; in l2cap_sock_bind()
120 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_connect() local
137 err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid), in l2cap_sock_connect()
155 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_listen() local
172 switch (chan->mode) { in l2cap_sock_listen()
188 chan->state = BT_LISTEN; in l2cap_sock_listen()
258 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_getname() local
267 la->l2_psm = chan->psm; in l2cap_sock_getname()
269 la->l2_cid = cpu_to_le16(chan->dcid); in l2cap_sock_getname()
271 la->l2_psm = chan->sport; in l2cap_sock_getname()
273 la->l2_cid = cpu_to_le16(chan->scid); in l2cap_sock_getname()
283 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_getsockopt_old() local
299 opts.imtu = chan->imtu; in l2cap_sock_getsockopt_old()
300 opts.omtu = chan->omtu; in l2cap_sock_getsockopt_old()
301 opts.flush_to = chan->flush_to; in l2cap_sock_getsockopt_old()
302 opts.mode = chan->mode; in l2cap_sock_getsockopt_old()
303 opts.fcs = chan->fcs; in l2cap_sock_getsockopt_old()
304 opts.max_tx = chan->max_tx; in l2cap_sock_getsockopt_old()
305 opts.txwin_size = chan->tx_win; in l2cap_sock_getsockopt_old()
314 switch (chan->sec_level) { in l2cap_sock_getsockopt_old()
330 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags)) in l2cap_sock_getsockopt_old()
333 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags)) in l2cap_sock_getsockopt_old()
349 cinfo.hci_handle = chan->conn->hcon->handle; in l2cap_sock_getsockopt_old()
350 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3); in l2cap_sock_getsockopt_old()
371 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_getsockopt() local
391 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED && in l2cap_sock_getsockopt()
392 chan->chan_type != L2CAP_CHAN_RAW) { in l2cap_sock_getsockopt()
398 if (chan->conn) { in l2cap_sock_getsockopt()
399 sec.level = chan->conn->hcon->sec_level; in l2cap_sock_getsockopt()
402 sec.key_size = chan->conn->hcon->enc_key_size; in l2cap_sock_getsockopt()
404 sec.level = chan->sec_level; in l2cap_sock_getsockopt()
426 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags), in l2cap_sock_getsockopt()
439 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags); in l2cap_sock_getsockopt()
453 if (put_user(chan->chan_policy, (u32 __user *) optval)) in l2cap_sock_getsockopt()
466 static bool l2cap_valid_mtu(struct l2cap_chan *chan, u16 mtu) in l2cap_valid_mtu() argument
468 switch (chan->scid) { in l2cap_valid_mtu()
486 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_setsockopt_old() local
502 opts.imtu = chan->imtu; in l2cap_sock_setsockopt_old()
503 opts.omtu = chan->omtu; in l2cap_sock_setsockopt_old()
504 opts.flush_to = chan->flush_to; in l2cap_sock_setsockopt_old()
505 opts.mode = chan->mode; in l2cap_sock_setsockopt_old()
506 opts.fcs = chan->fcs; in l2cap_sock_setsockopt_old()
507 opts.max_tx = chan->max_tx; in l2cap_sock_setsockopt_old()
508 opts.txwin_size = chan->tx_win; in l2cap_sock_setsockopt_old()
521 if (!l2cap_valid_mtu(chan, opts.imtu)) { in l2cap_sock_setsockopt_old()
526 chan->mode = opts.mode; in l2cap_sock_setsockopt_old()
527 switch (chan->mode) { in l2cap_sock_setsockopt_old()
529 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state); in l2cap_sock_setsockopt_old()
541 chan->imtu = opts.imtu; in l2cap_sock_setsockopt_old()
542 chan->omtu = opts.omtu; in l2cap_sock_setsockopt_old()
543 chan->fcs = opts.fcs; in l2cap_sock_setsockopt_old()
544 chan->max_tx = opts.max_tx; in l2cap_sock_setsockopt_old()
545 chan->tx_win = opts.txwin_size; in l2cap_sock_setsockopt_old()
546 chan->flush_to = opts.flush_to; in l2cap_sock_setsockopt_old()
556 chan->sec_level = BT_SECURITY_LOW; in l2cap_sock_setsockopt_old()
558 chan->sec_level = BT_SECURITY_MEDIUM; in l2cap_sock_setsockopt_old()
560 chan->sec_level = BT_SECURITY_HIGH; in l2cap_sock_setsockopt_old()
563 set_bit(FLAG_ROLE_SWITCH, &chan->flags); in l2cap_sock_setsockopt_old()
565 clear_bit(FLAG_ROLE_SWITCH, &chan->flags); in l2cap_sock_setsockopt_old()
568 set_bit(FLAG_FORCE_RELIABLE, &chan->flags); in l2cap_sock_setsockopt_old()
570 clear_bit(FLAG_FORCE_RELIABLE, &chan->flags); in l2cap_sock_setsockopt_old()
586 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_setsockopt() local
605 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED && in l2cap_sock_setsockopt()
606 chan->chan_type != L2CAP_CHAN_RAW) { in l2cap_sock_setsockopt()
625 chan->sec_level = sec.level; in l2cap_sock_setsockopt()
627 if (!chan->conn) in l2cap_sock_setsockopt()
630 conn = chan->conn; in l2cap_sock_setsockopt()
633 if (chan->scid == L2CAP_CID_LE_DATA) { in l2cap_sock_setsockopt()
642 chan->state = BT_CONFIG; in l2cap_sock_setsockopt()
648 if (!l2cap_chan_check_security(chan)) in l2cap_sock_setsockopt()
686 struct l2cap_conn *conn = chan->conn; in l2cap_sock_setsockopt()
696 set_bit(FLAG_FLUSHABLE, &chan->flags); in l2cap_sock_setsockopt()
698 clear_bit(FLAG_FLUSHABLE, &chan->flags); in l2cap_sock_setsockopt()
702 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED && in l2cap_sock_setsockopt()
703 chan->chan_type != L2CAP_CHAN_RAW) { in l2cap_sock_setsockopt()
717 set_bit(FLAG_FORCE_ACTIVE, &chan->flags); in l2cap_sock_setsockopt()
719 clear_bit(FLAG_FORCE_ACTIVE, &chan->flags); in l2cap_sock_setsockopt()
738 if (chan->mode != L2CAP_MODE_ERTM && in l2cap_sock_setsockopt()
739 chan->mode != L2CAP_MODE_STREAMING) { in l2cap_sock_setsockopt()
744 chan->chan_policy = (u8) opt; in l2cap_sock_setsockopt()
747 chan->move_role == L2CAP_MOVE_ROLE_NONE) in l2cap_sock_setsockopt()
748 l2cap_move_start(chan); in l2cap_sock_setsockopt()
765 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_sendmsg() local
780 l2cap_chan_lock(chan); in l2cap_sock_sendmsg()
781 err = l2cap_chan_send(chan, msg, len, sk->sk_priority); in l2cap_sock_sendmsg()
782 l2cap_chan_unlock(chan); in l2cap_sock_sendmsg()
799 pi->chan->state = BT_CONFIG; in l2cap_sock_recvmsg()
801 __l2cap_connect_rsp_defer(pi->chan); in l2cap_sock_recvmsg()
813 if (pi->chan->mode != L2CAP_MODE_ERTM) in l2cap_sock_recvmsg()
820 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state)) in l2cap_sock_recvmsg()
835 l2cap_chan_busy(pi->chan, 0); in l2cap_sock_recvmsg()
854 l2cap_chan_put(l2cap_pi(sk)->chan); in l2cap_sock_kill()
862 struct l2cap_chan *chan; in l2cap_sock_shutdown() local
871 chan = l2cap_pi(sk)->chan; in l2cap_sock_shutdown()
872 conn = chan->conn; in l2cap_sock_shutdown()
877 l2cap_chan_lock(chan); in l2cap_sock_shutdown()
881 if (chan->mode == L2CAP_MODE_ERTM) in l2cap_sock_shutdown()
887 l2cap_chan_close(chan, 0); in l2cap_sock_shutdown()
899 l2cap_chan_unlock(chan); in l2cap_sock_shutdown()
934 struct l2cap_chan *chan = l2cap_pi(sk)->chan; in l2cap_sock_cleanup_listen() local
936 l2cap_chan_lock(chan); in l2cap_sock_cleanup_listen()
937 __clear_chan_timer(chan); in l2cap_sock_cleanup_listen()
938 l2cap_chan_close(chan, ECONNRESET); in l2cap_sock_cleanup_listen()
939 l2cap_chan_unlock(chan); in l2cap_sock_cleanup_listen()
945 static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan) in l2cap_sock_new_connection_cb() argument
947 struct sock *sk, *parent = chan->data; in l2cap_sock_new_connection_cb()
966 return l2cap_pi(sk)->chan; in l2cap_sock_new_connection_cb()
969 static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb) in l2cap_sock_recv_cb() argument
972 struct sock *sk = chan->data; in l2cap_sock_recv_cb()
993 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) { in l2cap_sock_recv_cb()
995 l2cap_chan_busy(pi->chan, 1); in l2cap_sock_recv_cb()
1005 static void l2cap_sock_close_cb(struct l2cap_chan *chan) in l2cap_sock_close_cb() argument
1007 struct sock *sk = chan->data; in l2cap_sock_close_cb()
1012 static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err) in l2cap_sock_teardown_cb() argument
1014 struct sock *sk = chan->data; in l2cap_sock_teardown_cb()
1023 switch (chan->state) { in l2cap_sock_teardown_cb()
1031 chan->state = BT_CLOSED; in l2cap_sock_teardown_cb()
1036 chan->state = BT_CLOSED; in l2cap_sock_teardown_cb()
1053 static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state) in l2cap_sock_state_change_cb() argument
1055 struct sock *sk = chan->data; in l2cap_sock_state_change_cb()
1060 static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan, in l2cap_sock_alloc_skb_cb() argument
1066 l2cap_chan_unlock(chan); in l2cap_sock_alloc_skb_cb()
1067 skb = bt_skb_send_alloc(chan->sk, len, nb, &err); in l2cap_sock_alloc_skb_cb()
1068 l2cap_chan_lock(chan); in l2cap_sock_alloc_skb_cb()
1076 static void l2cap_sock_ready_cb(struct l2cap_chan *chan) in l2cap_sock_ready_cb() argument
1078 struct sock *sk = chan->data; in l2cap_sock_ready_cb()
1096 static void l2cap_sock_defer_cb(struct l2cap_chan *chan) in l2cap_sock_defer_cb() argument
1098 struct sock *sk = chan->data; in l2cap_sock_defer_cb()
1121 if (l2cap_pi(sk)->chan) in l2cap_sock_destruct()
1122 l2cap_chan_put(l2cap_pi(sk)->chan); in l2cap_sock_destruct()
1135 struct l2cap_chan *chan = pi->chan; in l2cap_sock_init() local
1140 struct l2cap_chan *pchan = l2cap_pi(parent)->chan; in l2cap_sock_init()
1145 chan->chan_type = pchan->chan_type; in l2cap_sock_init()
1146 chan->imtu = pchan->imtu; in l2cap_sock_init()
1147 chan->omtu = pchan->omtu; in l2cap_sock_init()
1148 chan->conf_state = pchan->conf_state; in l2cap_sock_init()
1149 chan->mode = pchan->mode; in l2cap_sock_init()
1150 chan->fcs = pchan->fcs; in l2cap_sock_init()
1151 chan->max_tx = pchan->max_tx; in l2cap_sock_init()
1152 chan->tx_win = pchan->tx_win; in l2cap_sock_init()
1153 chan->tx_win_max = pchan->tx_win_max; in l2cap_sock_init()
1154 chan->sec_level = pchan->sec_level; in l2cap_sock_init()
1155 chan->flags = pchan->flags; in l2cap_sock_init()
1162 chan->chan_type = L2CAP_CHAN_RAW; in l2cap_sock_init()
1165 chan->chan_type = L2CAP_CHAN_CONN_LESS; in l2cap_sock_init()
1169 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED; in l2cap_sock_init()
1173 chan->imtu = L2CAP_DEFAULT_MTU; in l2cap_sock_init()
1174 chan->omtu = 0; in l2cap_sock_init()
1176 chan->mode = L2CAP_MODE_ERTM; in l2cap_sock_init()
1177 set_bit(CONF_STATE2_DEVICE, &chan->conf_state); in l2cap_sock_init()
1179 chan->mode = L2CAP_MODE_BASIC; in l2cap_sock_init()
1182 l2cap_chan_set_defaults(chan); in l2cap_sock_init()
1186 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO; in l2cap_sock_init()
1188 chan->data = sk; in l2cap_sock_init()
1189 chan->ops = &l2cap_chan_ops; in l2cap_sock_init()
1202 struct l2cap_chan *chan; in l2cap_sock_alloc() local
1219 chan = l2cap_chan_create(); in l2cap_sock_alloc()
1220 if (!chan) { in l2cap_sock_alloc()
1225 l2cap_chan_hold(chan); in l2cap_sock_alloc()
1227 chan->sk = sk; in l2cap_sock_alloc()
1229 l2cap_pi(sk)->chan = chan; in l2cap_sock_alloc()