l2cap_sock.c (9149761ad74f618371b58fd37141d4c3706d88fc) | l2cap_sock.c (3831971355d901ccfb76533a422b4395072849a3) |
---|---|
1/* 2 BlueZ - Bluetooth protocol stack for Linux 3 Copyright (C) 2000-2001 Qualcomm Incorporated 4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org> 5 Copyright (C) 2010 Google Inc. 6 Copyright (C) 2011 ProFUSION Embedded Systems 7 8 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> --- 116 unchanged lines hidden (view full) --- 125 __le16_to_cpu(la.l2_psm) == L2CAP_PSM_RFCOMM) 126 chan->sec_level = BT_SECURITY_SDP; 127 break; 128 } 129 130 bacpy(&chan->src, &la.l2_bdaddr); 131 chan->src_type = la.l2_bdaddr_type; 132 | 1/* 2 BlueZ - Bluetooth protocol stack for Linux 3 Copyright (C) 2000-2001 Qualcomm Incorporated 4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org> 5 Copyright (C) 2010 Google Inc. 6 Copyright (C) 2011 ProFUSION Embedded Systems 7 8 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> --- 116 unchanged lines hidden (view full) --- 125 __le16_to_cpu(la.l2_psm) == L2CAP_PSM_RFCOMM) 126 chan->sec_level = BT_SECURITY_SDP; 127 break; 128 } 129 130 bacpy(&chan->src, &la.l2_bdaddr); 131 chan->src_type = la.l2_bdaddr_type; 132 |
133 if (chan->psm && bdaddr_type_is_le(chan->src_type)) 134 l2cap_le_flowctl_init(chan); 135 |
|
133 chan->state = BT_BOUND; 134 sk->sk_state = BT_BOUND; 135 136done: 137 release_sock(sk); 138 return err; 139} 140 --- 54 unchanged lines hidden (view full) --- 195 if (!enable_lecoc && la.l2_psm) 196 return -EINVAL; 197 /* We only allow ATT user space socket */ 198 if (la.l2_cid && 199 la.l2_cid != __constant_cpu_to_le16(L2CAP_CID_ATT)) 200 return -EINVAL; 201 } 202 | 136 chan->state = BT_BOUND; 137 sk->sk_state = BT_BOUND; 138 139done: 140 release_sock(sk); 141 return err; 142} 143 --- 54 unchanged lines hidden (view full) --- 198 if (!enable_lecoc && la.l2_psm) 199 return -EINVAL; 200 /* We only allow ATT user space socket */ 201 if (la.l2_cid && 202 la.l2_cid != __constant_cpu_to_le16(L2CAP_CID_ATT)) 203 return -EINVAL; 204 } 205 |
206 if (chan->psm && bdaddr_type_is_le(chan->src_type)) 207 l2cap_le_flowctl_init(chan); 208 |
|
203 err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid), 204 &la.l2_bdaddr, la.l2_bdaddr_type); 205 if (err) 206 return err; 207 208 lock_sock(sk); 209 210 err = bt_sock_wait_state(sk, BT_CONNECTED, --- 21 unchanged lines hidden (view full) --- 232 233 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM) { 234 err = -EINVAL; 235 goto done; 236 } 237 238 switch (chan->mode) { 239 case L2CAP_MODE_BASIC: | 209 err = l2cap_chan_connect(chan, la.l2_psm, __le16_to_cpu(la.l2_cid), 210 &la.l2_bdaddr, la.l2_bdaddr_type); 211 if (err) 212 return err; 213 214 lock_sock(sk); 215 216 err = bt_sock_wait_state(sk, BT_CONNECTED, --- 21 unchanged lines hidden (view full) --- 238 239 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM) { 240 err = -EINVAL; 241 goto done; 242 } 243 244 switch (chan->mode) { 245 case L2CAP_MODE_BASIC: |
246 case L2CAP_MODE_LE_FLOWCTL: |
|
240 break; 241 case L2CAP_MODE_ERTM: 242 case L2CAP_MODE_STREAMING: 243 if (!disable_ertm) 244 break; 245 /* fall through */ 246 default: 247 err = -ENOTSUPP; --- 335 unchanged lines hidden (view full) --- 583 584 if (!l2cap_valid_mtu(chan, opts.imtu)) { 585 err = -EINVAL; 586 break; 587 } 588 589 chan->mode = opts.mode; 590 switch (chan->mode) { | 247 break; 248 case L2CAP_MODE_ERTM: 249 case L2CAP_MODE_STREAMING: 250 if (!disable_ertm) 251 break; 252 /* fall through */ 253 default: 254 err = -ENOTSUPP; --- 335 unchanged lines hidden (view full) --- 590 591 if (!l2cap_valid_mtu(chan, opts.imtu)) { 592 err = -EINVAL; 593 break; 594 } 595 596 chan->mode = opts.mode; 597 switch (chan->mode) { |
598 case L2CAP_MODE_LE_FLOWCTL: 599 break; |
|
591 case L2CAP_MODE_BASIC: 592 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state); 593 break; 594 case L2CAP_MODE_ERTM: 595 case L2CAP_MODE_STREAMING: 596 if (!disable_ertm) 597 break; 598 /* fall through */ --- 258 unchanged lines hidden (view full) --- 857 struct sock *sk = sock->sk; 858 struct l2cap_pinfo *pi = l2cap_pi(sk); 859 int err; 860 861 lock_sock(sk); 862 863 if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP, 864 &bt_sk(sk)->flags)) { | 600 case L2CAP_MODE_BASIC: 601 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state); 602 break; 603 case L2CAP_MODE_ERTM: 604 case L2CAP_MODE_STREAMING: 605 if (!disable_ertm) 606 break; 607 /* fall through */ --- 258 unchanged lines hidden (view full) --- 866 struct sock *sk = sock->sk; 867 struct l2cap_pinfo *pi = l2cap_pi(sk); 868 int err; 869 870 lock_sock(sk); 871 872 if (sk->sk_state == BT_CONNECT2 && test_bit(BT_SK_DEFER_SETUP, 873 &bt_sk(sk)->flags)) { |
865 sk->sk_state = BT_CONFIG; 866 pi->chan->state = BT_CONFIG; | 874 if (bdaddr_type_is_le(pi->chan->src_type)) { 875 sk->sk_state = BT_CONNECTED; 876 pi->chan->state = BT_CONNECTED; 877 __l2cap_le_connect_rsp_defer(pi->chan); 878 } else { 879 sk->sk_state = BT_CONFIG; 880 pi->chan->state = BT_CONFIG; 881 __l2cap_connect_rsp_defer(pi->chan); 882 } |
867 | 883 |
868 __l2cap_connect_rsp_defer(pi->chan); | |
869 err = 0; 870 goto done; 871 } 872 873 release_sock(sk); 874 875 if (sock->type == SOCK_STREAM) 876 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags); --- 601 unchanged lines hidden --- | 884 err = 0; 885 goto done; 886 } 887 888 release_sock(sk); 889 890 if (sock->type == SOCK_STREAM) 891 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags); --- 601 unchanged lines hidden --- |