xref: /linux/net/bluetooth/l2cap_core.c (revision 9429ec96c2718c0d1e3317cf60a87a0405223814)
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    Copyright (c) 2012 Code Aurora Forum.  All rights reserved.
8 
9    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
10 
11    This program is free software; you can redistribute it and/or modify
12    it under the terms of the GNU General Public License version 2 as
13    published by the Free Software Foundation;
14 
15    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
18    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
19    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
20    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 
24    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
25    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
26    SOFTWARE IS DISCLAIMED.
27 */
28 
29 /* Bluetooth L2CAP core. */
30 
31 #include <linux/module.h>
32 
33 #include <linux/debugfs.h>
34 #include <linux/crc16.h>
35 
36 #include <net/bluetooth/bluetooth.h>
37 #include <net/bluetooth/hci_core.h>
38 #include <net/bluetooth/l2cap.h>
39 #include <net/bluetooth/smp.h>
40 #include <net/bluetooth/a2mp.h>
41 
42 bool disable_ertm;
43 
44 static u32 l2cap_feat_mask = L2CAP_FEAT_FIXED_CHAN;
45 static u8 l2cap_fixed_chan[8] = { L2CAP_FC_L2CAP, };
46 
47 static LIST_HEAD(chan_list);
48 static DEFINE_RWLOCK(chan_list_lock);
49 
50 static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn,
51 				u8 code, u8 ident, u16 dlen, void *data);
52 static void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len,
53 								void *data);
54 static int l2cap_build_conf_req(struct l2cap_chan *chan, void *data);
55 static void l2cap_send_disconn_req(struct l2cap_conn *conn,
56 				   struct l2cap_chan *chan, int err);
57 
58 static void l2cap_tx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
59 		    struct sk_buff_head *skbs, u8 event);
60 
61 /* ---- L2CAP channels ---- */
62 
63 static struct l2cap_chan *__l2cap_get_chan_by_dcid(struct l2cap_conn *conn, u16 cid)
64 {
65 	struct l2cap_chan *c;
66 
67 	list_for_each_entry(c, &conn->chan_l, list) {
68 		if (c->dcid == cid)
69 			return c;
70 	}
71 	return NULL;
72 }
73 
74 static struct l2cap_chan *__l2cap_get_chan_by_scid(struct l2cap_conn *conn, u16 cid)
75 {
76 	struct l2cap_chan *c;
77 
78 	list_for_each_entry(c, &conn->chan_l, list) {
79 		if (c->scid == cid)
80 			return c;
81 	}
82 	return NULL;
83 }
84 
85 /* Find channel with given SCID.
86  * Returns locked channel. */
87 static struct l2cap_chan *l2cap_get_chan_by_scid(struct l2cap_conn *conn, u16 cid)
88 {
89 	struct l2cap_chan *c;
90 
91 	mutex_lock(&conn->chan_lock);
92 	c = __l2cap_get_chan_by_scid(conn, cid);
93 	if (c)
94 		l2cap_chan_lock(c);
95 	mutex_unlock(&conn->chan_lock);
96 
97 	return c;
98 }
99 
100 static struct l2cap_chan *__l2cap_get_chan_by_ident(struct l2cap_conn *conn, u8 ident)
101 {
102 	struct l2cap_chan *c;
103 
104 	list_for_each_entry(c, &conn->chan_l, list) {
105 		if (c->ident == ident)
106 			return c;
107 	}
108 	return NULL;
109 }
110 
111 static struct l2cap_chan *__l2cap_global_chan_by_addr(__le16 psm, bdaddr_t *src)
112 {
113 	struct l2cap_chan *c;
114 
115 	list_for_each_entry(c, &chan_list, global_l) {
116 		if (c->sport == psm && !bacmp(&bt_sk(c->sk)->src, src))
117 			return c;
118 	}
119 	return NULL;
120 }
121 
122 int l2cap_add_psm(struct l2cap_chan *chan, bdaddr_t *src, __le16 psm)
123 {
124 	int err;
125 
126 	write_lock(&chan_list_lock);
127 
128 	if (psm && __l2cap_global_chan_by_addr(psm, src)) {
129 		err = -EADDRINUSE;
130 		goto done;
131 	}
132 
133 	if (psm) {
134 		chan->psm = psm;
135 		chan->sport = psm;
136 		err = 0;
137 	} else {
138 		u16 p;
139 
140 		err = -EINVAL;
141 		for (p = 0x1001; p < 0x1100; p += 2)
142 			if (!__l2cap_global_chan_by_addr(cpu_to_le16(p), src)) {
143 				chan->psm   = cpu_to_le16(p);
144 				chan->sport = cpu_to_le16(p);
145 				err = 0;
146 				break;
147 			}
148 	}
149 
150 done:
151 	write_unlock(&chan_list_lock);
152 	return err;
153 }
154 
155 int l2cap_add_scid(struct l2cap_chan *chan,  __u16 scid)
156 {
157 	write_lock(&chan_list_lock);
158 
159 	chan->scid = scid;
160 
161 	write_unlock(&chan_list_lock);
162 
163 	return 0;
164 }
165 
166 static u16 l2cap_alloc_cid(struct l2cap_conn *conn)
167 {
168 	u16 cid = L2CAP_CID_DYN_START;
169 
170 	for (; cid < L2CAP_CID_DYN_END; cid++) {
171 		if (!__l2cap_get_chan_by_scid(conn, cid))
172 			return cid;
173 	}
174 
175 	return 0;
176 }
177 
178 static void __l2cap_state_change(struct l2cap_chan *chan, int state)
179 {
180 	BT_DBG("chan %p %s -> %s", chan, state_to_string(chan->state),
181 						state_to_string(state));
182 
183 	chan->state = state;
184 	chan->ops->state_change(chan, state);
185 }
186 
187 static void l2cap_state_change(struct l2cap_chan *chan, int state)
188 {
189 	struct sock *sk = chan->sk;
190 
191 	lock_sock(sk);
192 	__l2cap_state_change(chan, state);
193 	release_sock(sk);
194 }
195 
196 static inline void __l2cap_chan_set_err(struct l2cap_chan *chan, int err)
197 {
198 	struct sock *sk = chan->sk;
199 
200 	sk->sk_err = err;
201 }
202 
203 static inline void l2cap_chan_set_err(struct l2cap_chan *chan, int err)
204 {
205 	struct sock *sk = chan->sk;
206 
207 	lock_sock(sk);
208 	__l2cap_chan_set_err(chan, err);
209 	release_sock(sk);
210 }
211 
212 static void __set_retrans_timer(struct l2cap_chan *chan)
213 {
214 	if (!delayed_work_pending(&chan->monitor_timer) &&
215 	    chan->retrans_timeout) {
216 		l2cap_set_timer(chan, &chan->retrans_timer,
217 				msecs_to_jiffies(chan->retrans_timeout));
218 	}
219 }
220 
221 static void __set_monitor_timer(struct l2cap_chan *chan)
222 {
223 	__clear_retrans_timer(chan);
224 	if (chan->monitor_timeout) {
225 		l2cap_set_timer(chan, &chan->monitor_timer,
226 				msecs_to_jiffies(chan->monitor_timeout));
227 	}
228 }
229 
230 static struct sk_buff *l2cap_ertm_seq_in_queue(struct sk_buff_head *head,
231 					       u16 seq)
232 {
233 	struct sk_buff *skb;
234 
235 	skb_queue_walk(head, skb) {
236 		if (bt_cb(skb)->control.txseq == seq)
237 			return skb;
238 	}
239 
240 	return NULL;
241 }
242 
243 /* ---- L2CAP sequence number lists ---- */
244 
245 /* For ERTM, ordered lists of sequence numbers must be tracked for
246  * SREJ requests that are received and for frames that are to be
247  * retransmitted. These seq_list functions implement a singly-linked
248  * list in an array, where membership in the list can also be checked
249  * in constant time. Items can also be added to the tail of the list
250  * and removed from the head in constant time, without further memory
251  * allocs or frees.
252  */
253 
254 static int l2cap_seq_list_init(struct l2cap_seq_list *seq_list, u16 size)
255 {
256 	size_t alloc_size, i;
257 
258 	/* Allocated size is a power of 2 to map sequence numbers
259 	 * (which may be up to 14 bits) in to a smaller array that is
260 	 * sized for the negotiated ERTM transmit windows.
261 	 */
262 	alloc_size = roundup_pow_of_two(size);
263 
264 	seq_list->list = kmalloc(sizeof(u16) * alloc_size, GFP_KERNEL);
265 	if (!seq_list->list)
266 		return -ENOMEM;
267 
268 	seq_list->mask = alloc_size - 1;
269 	seq_list->head = L2CAP_SEQ_LIST_CLEAR;
270 	seq_list->tail = L2CAP_SEQ_LIST_CLEAR;
271 	for (i = 0; i < alloc_size; i++)
272 		seq_list->list[i] = L2CAP_SEQ_LIST_CLEAR;
273 
274 	return 0;
275 }
276 
277 static inline void l2cap_seq_list_free(struct l2cap_seq_list *seq_list)
278 {
279 	kfree(seq_list->list);
280 }
281 
282 static inline bool l2cap_seq_list_contains(struct l2cap_seq_list *seq_list,
283 					   u16 seq)
284 {
285 	/* Constant-time check for list membership */
286 	return seq_list->list[seq & seq_list->mask] != L2CAP_SEQ_LIST_CLEAR;
287 }
288 
289 static u16 l2cap_seq_list_remove(struct l2cap_seq_list *seq_list, u16 seq)
290 {
291 	u16 mask = seq_list->mask;
292 
293 	if (seq_list->head == L2CAP_SEQ_LIST_CLEAR) {
294 		/* In case someone tries to pop the head of an empty list */
295 		return L2CAP_SEQ_LIST_CLEAR;
296 	} else if (seq_list->head == seq) {
297 		/* Head can be removed in constant time */
298 		seq_list->head = seq_list->list[seq & mask];
299 		seq_list->list[seq & mask] = L2CAP_SEQ_LIST_CLEAR;
300 
301 		if (seq_list->head == L2CAP_SEQ_LIST_TAIL) {
302 			seq_list->head = L2CAP_SEQ_LIST_CLEAR;
303 			seq_list->tail = L2CAP_SEQ_LIST_CLEAR;
304 		}
305 	} else {
306 		/* Walk the list to find the sequence number */
307 		u16 prev = seq_list->head;
308 		while (seq_list->list[prev & mask] != seq) {
309 			prev = seq_list->list[prev & mask];
310 			if (prev == L2CAP_SEQ_LIST_TAIL)
311 				return L2CAP_SEQ_LIST_CLEAR;
312 		}
313 
314 		/* Unlink the number from the list and clear it */
315 		seq_list->list[prev & mask] = seq_list->list[seq & mask];
316 		seq_list->list[seq & mask] = L2CAP_SEQ_LIST_CLEAR;
317 		if (seq_list->tail == seq)
318 			seq_list->tail = prev;
319 	}
320 	return seq;
321 }
322 
323 static inline u16 l2cap_seq_list_pop(struct l2cap_seq_list *seq_list)
324 {
325 	/* Remove the head in constant time */
326 	return l2cap_seq_list_remove(seq_list, seq_list->head);
327 }
328 
329 static void l2cap_seq_list_clear(struct l2cap_seq_list *seq_list)
330 {
331 	u16 i;
332 
333 	if (seq_list->head == L2CAP_SEQ_LIST_CLEAR)
334 		return;
335 
336 	for (i = 0; i <= seq_list->mask; i++)
337 		seq_list->list[i] = L2CAP_SEQ_LIST_CLEAR;
338 
339 	seq_list->head = L2CAP_SEQ_LIST_CLEAR;
340 	seq_list->tail = L2CAP_SEQ_LIST_CLEAR;
341 }
342 
343 static void l2cap_seq_list_append(struct l2cap_seq_list *seq_list, u16 seq)
344 {
345 	u16 mask = seq_list->mask;
346 
347 	/* All appends happen in constant time */
348 
349 	if (seq_list->list[seq & mask] != L2CAP_SEQ_LIST_CLEAR)
350 		return;
351 
352 	if (seq_list->tail == L2CAP_SEQ_LIST_CLEAR)
353 		seq_list->head = seq;
354 	else
355 		seq_list->list[seq_list->tail & mask] = seq;
356 
357 	seq_list->tail = seq;
358 	seq_list->list[seq & mask] = L2CAP_SEQ_LIST_TAIL;
359 }
360 
361 static void l2cap_chan_timeout(struct work_struct *work)
362 {
363 	struct l2cap_chan *chan = container_of(work, struct l2cap_chan,
364 							chan_timer.work);
365 	struct l2cap_conn *conn = chan->conn;
366 	int reason;
367 
368 	BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
369 
370 	mutex_lock(&conn->chan_lock);
371 	l2cap_chan_lock(chan);
372 
373 	if (chan->state == BT_CONNECTED || chan->state == BT_CONFIG)
374 		reason = ECONNREFUSED;
375 	else if (chan->state == BT_CONNECT &&
376 					chan->sec_level != BT_SECURITY_SDP)
377 		reason = ECONNREFUSED;
378 	else
379 		reason = ETIMEDOUT;
380 
381 	l2cap_chan_close(chan, reason);
382 
383 	l2cap_chan_unlock(chan);
384 
385 	chan->ops->close(chan);
386 	mutex_unlock(&conn->chan_lock);
387 
388 	l2cap_chan_put(chan);
389 }
390 
391 struct l2cap_chan *l2cap_chan_create(void)
392 {
393 	struct l2cap_chan *chan;
394 
395 	chan = kzalloc(sizeof(*chan), GFP_ATOMIC);
396 	if (!chan)
397 		return NULL;
398 
399 	mutex_init(&chan->lock);
400 
401 	write_lock(&chan_list_lock);
402 	list_add(&chan->global_l, &chan_list);
403 	write_unlock(&chan_list_lock);
404 
405 	INIT_DELAYED_WORK(&chan->chan_timer, l2cap_chan_timeout);
406 
407 	chan->state = BT_OPEN;
408 
409 	atomic_set(&chan->refcnt, 1);
410 
411 	/* This flag is cleared in l2cap_chan_ready() */
412 	set_bit(CONF_NOT_COMPLETE, &chan->conf_state);
413 
414 	BT_DBG("chan %p", chan);
415 
416 	return chan;
417 }
418 
419 void l2cap_chan_destroy(struct l2cap_chan *chan)
420 {
421 	write_lock(&chan_list_lock);
422 	list_del(&chan->global_l);
423 	write_unlock(&chan_list_lock);
424 
425 	l2cap_chan_put(chan);
426 }
427 
428 void l2cap_chan_set_defaults(struct l2cap_chan *chan)
429 {
430 	chan->fcs  = L2CAP_FCS_CRC16;
431 	chan->max_tx = L2CAP_DEFAULT_MAX_TX;
432 	chan->tx_win = L2CAP_DEFAULT_TX_WINDOW;
433 	chan->tx_win_max = L2CAP_DEFAULT_TX_WINDOW;
434 	chan->ack_win = L2CAP_DEFAULT_TX_WINDOW;
435 	chan->sec_level = BT_SECURITY_LOW;
436 
437 	set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
438 }
439 
440 static void __l2cap_chan_add(struct l2cap_conn *conn, struct l2cap_chan *chan)
441 {
442 	BT_DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn,
443 	       __le16_to_cpu(chan->psm), chan->dcid);
444 
445 	conn->disc_reason = HCI_ERROR_REMOTE_USER_TERM;
446 
447 	chan->conn = conn;
448 
449 	switch (chan->chan_type) {
450 	case L2CAP_CHAN_CONN_ORIENTED:
451 		if (conn->hcon->type == LE_LINK) {
452 			/* LE connection */
453 			chan->omtu = L2CAP_DEFAULT_MTU;
454 			chan->scid = L2CAP_CID_LE_DATA;
455 			chan->dcid = L2CAP_CID_LE_DATA;
456 		} else {
457 			/* Alloc CID for connection-oriented socket */
458 			chan->scid = l2cap_alloc_cid(conn);
459 			chan->omtu = L2CAP_DEFAULT_MTU;
460 		}
461 		break;
462 
463 	case L2CAP_CHAN_CONN_LESS:
464 		/* Connectionless socket */
465 		chan->scid = L2CAP_CID_CONN_LESS;
466 		chan->dcid = L2CAP_CID_CONN_LESS;
467 		chan->omtu = L2CAP_DEFAULT_MTU;
468 		break;
469 
470 	case L2CAP_CHAN_CONN_FIX_A2MP:
471 		chan->scid = L2CAP_CID_A2MP;
472 		chan->dcid = L2CAP_CID_A2MP;
473 		chan->omtu = L2CAP_A2MP_DEFAULT_MTU;
474 		chan->imtu = L2CAP_A2MP_DEFAULT_MTU;
475 		break;
476 
477 	default:
478 		/* Raw socket can send/recv signalling messages only */
479 		chan->scid = L2CAP_CID_SIGNALING;
480 		chan->dcid = L2CAP_CID_SIGNALING;
481 		chan->omtu = L2CAP_DEFAULT_MTU;
482 	}
483 
484 	chan->local_id		= L2CAP_BESTEFFORT_ID;
485 	chan->local_stype	= L2CAP_SERV_BESTEFFORT;
486 	chan->local_msdu	= L2CAP_DEFAULT_MAX_SDU_SIZE;
487 	chan->local_sdu_itime	= L2CAP_DEFAULT_SDU_ITIME;
488 	chan->local_acc_lat	= L2CAP_DEFAULT_ACC_LAT;
489 	chan->local_flush_to	= L2CAP_DEFAULT_FLUSH_TO;
490 
491 	l2cap_chan_hold(chan);
492 
493 	list_add(&chan->list, &conn->chan_l);
494 }
495 
496 void l2cap_chan_add(struct l2cap_conn *conn, struct l2cap_chan *chan)
497 {
498 	mutex_lock(&conn->chan_lock);
499 	__l2cap_chan_add(conn, chan);
500 	mutex_unlock(&conn->chan_lock);
501 }
502 
503 void l2cap_chan_del(struct l2cap_chan *chan, int err)
504 {
505 	struct l2cap_conn *conn = chan->conn;
506 
507 	__clear_chan_timer(chan);
508 
509 	BT_DBG("chan %p, conn %p, err %d", chan, conn, err);
510 
511 	if (conn) {
512 		/* Delete from channel list */
513 		list_del(&chan->list);
514 
515 		l2cap_chan_put(chan);
516 
517 		chan->conn = NULL;
518 
519 		if (chan->chan_type != L2CAP_CHAN_CONN_FIX_A2MP)
520 			hci_conn_put(conn->hcon);
521 	}
522 
523 	if (chan->ops->teardown)
524 		chan->ops->teardown(chan, err);
525 
526 	if (test_bit(CONF_NOT_COMPLETE, &chan->conf_state))
527 		return;
528 
529 	switch(chan->mode) {
530 	case L2CAP_MODE_BASIC:
531 		break;
532 
533 	case L2CAP_MODE_ERTM:
534 		__clear_retrans_timer(chan);
535 		__clear_monitor_timer(chan);
536 		__clear_ack_timer(chan);
537 
538 		skb_queue_purge(&chan->srej_q);
539 
540 		l2cap_seq_list_free(&chan->srej_list);
541 		l2cap_seq_list_free(&chan->retrans_list);
542 
543 		/* fall through */
544 
545 	case L2CAP_MODE_STREAMING:
546 		skb_queue_purge(&chan->tx_q);
547 		break;
548 	}
549 
550 	return;
551 }
552 
553 void l2cap_chan_close(struct l2cap_chan *chan, int reason)
554 {
555 	struct l2cap_conn *conn = chan->conn;
556 	struct sock *sk = chan->sk;
557 
558 	BT_DBG("chan %p state %s sk %p", chan,
559 					state_to_string(chan->state), sk);
560 
561 	switch (chan->state) {
562 	case BT_LISTEN:
563 		if (chan->ops->teardown)
564 			chan->ops->teardown(chan, 0);
565 		break;
566 
567 	case BT_CONNECTED:
568 	case BT_CONFIG:
569 		if (chan->chan_type == L2CAP_CHAN_CONN_ORIENTED &&
570 					conn->hcon->type == ACL_LINK) {
571 			__set_chan_timer(chan, sk->sk_sndtimeo);
572 			l2cap_send_disconn_req(conn, chan, reason);
573 		} else
574 			l2cap_chan_del(chan, reason);
575 		break;
576 
577 	case BT_CONNECT2:
578 		if (chan->chan_type == L2CAP_CHAN_CONN_ORIENTED &&
579 					conn->hcon->type == ACL_LINK) {
580 			struct l2cap_conn_rsp rsp;
581 			__u16 result;
582 
583 			if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))
584 				result = L2CAP_CR_SEC_BLOCK;
585 			else
586 				result = L2CAP_CR_BAD_PSM;
587 			l2cap_state_change(chan, BT_DISCONN);
588 
589 			rsp.scid   = cpu_to_le16(chan->dcid);
590 			rsp.dcid   = cpu_to_le16(chan->scid);
591 			rsp.result = cpu_to_le16(result);
592 			rsp.status = __constant_cpu_to_le16(L2CAP_CS_NO_INFO);
593 			l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
594 							sizeof(rsp), &rsp);
595 		}
596 
597 		l2cap_chan_del(chan, reason);
598 		break;
599 
600 	case BT_CONNECT:
601 	case BT_DISCONN:
602 		l2cap_chan_del(chan, reason);
603 		break;
604 
605 	default:
606 		if (chan->ops->teardown)
607 			chan->ops->teardown(chan, 0);
608 		break;
609 	}
610 }
611 
612 static inline u8 l2cap_get_auth_type(struct l2cap_chan *chan)
613 {
614 	if (chan->chan_type == L2CAP_CHAN_RAW) {
615 		switch (chan->sec_level) {
616 		case BT_SECURITY_HIGH:
617 			return HCI_AT_DEDICATED_BONDING_MITM;
618 		case BT_SECURITY_MEDIUM:
619 			return HCI_AT_DEDICATED_BONDING;
620 		default:
621 			return HCI_AT_NO_BONDING;
622 		}
623 	} else if (chan->psm == __constant_cpu_to_le16(L2CAP_PSM_SDP)) {
624 		if (chan->sec_level == BT_SECURITY_LOW)
625 			chan->sec_level = BT_SECURITY_SDP;
626 
627 		if (chan->sec_level == BT_SECURITY_HIGH)
628 			return HCI_AT_NO_BONDING_MITM;
629 		else
630 			return HCI_AT_NO_BONDING;
631 	} else {
632 		switch (chan->sec_level) {
633 		case BT_SECURITY_HIGH:
634 			return HCI_AT_GENERAL_BONDING_MITM;
635 		case BT_SECURITY_MEDIUM:
636 			return HCI_AT_GENERAL_BONDING;
637 		default:
638 			return HCI_AT_NO_BONDING;
639 		}
640 	}
641 }
642 
643 /* Service level security */
644 int l2cap_chan_check_security(struct l2cap_chan *chan)
645 {
646 	struct l2cap_conn *conn = chan->conn;
647 	__u8 auth_type;
648 
649 	auth_type = l2cap_get_auth_type(chan);
650 
651 	return hci_conn_security(conn->hcon, chan->sec_level, auth_type);
652 }
653 
654 static u8 l2cap_get_ident(struct l2cap_conn *conn)
655 {
656 	u8 id;
657 
658 	/* Get next available identificator.
659 	 *    1 - 128 are used by kernel.
660 	 *  129 - 199 are reserved.
661 	 *  200 - 254 are used by utilities like l2ping, etc.
662 	 */
663 
664 	spin_lock(&conn->lock);
665 
666 	if (++conn->tx_ident > 128)
667 		conn->tx_ident = 1;
668 
669 	id = conn->tx_ident;
670 
671 	spin_unlock(&conn->lock);
672 
673 	return id;
674 }
675 
676 static void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data)
677 {
678 	struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data);
679 	u8 flags;
680 
681 	BT_DBG("code 0x%2.2x", code);
682 
683 	if (!skb)
684 		return;
685 
686 	if (lmp_no_flush_capable(conn->hcon->hdev))
687 		flags = ACL_START_NO_FLUSH;
688 	else
689 		flags = ACL_START;
690 
691 	bt_cb(skb)->force_active = BT_POWER_FORCE_ACTIVE_ON;
692 	skb->priority = HCI_PRIO_MAX;
693 
694 	hci_send_acl(conn->hchan, skb, flags);
695 }
696 
697 static void l2cap_do_send(struct l2cap_chan *chan, struct sk_buff *skb)
698 {
699 	struct hci_conn *hcon = chan->conn->hcon;
700 	u16 flags;
701 
702 	BT_DBG("chan %p, skb %p len %d priority %u", chan, skb, skb->len,
703 							skb->priority);
704 
705 	if (!test_bit(FLAG_FLUSHABLE, &chan->flags) &&
706 					lmp_no_flush_capable(hcon->hdev))
707 		flags = ACL_START_NO_FLUSH;
708 	else
709 		flags = ACL_START;
710 
711 	bt_cb(skb)->force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
712 	hci_send_acl(chan->conn->hchan, skb, flags);
713 }
714 
715 static void __unpack_enhanced_control(u16 enh, struct l2cap_ctrl *control)
716 {
717 	control->reqseq = (enh & L2CAP_CTRL_REQSEQ) >> L2CAP_CTRL_REQSEQ_SHIFT;
718 	control->final = (enh & L2CAP_CTRL_FINAL) >> L2CAP_CTRL_FINAL_SHIFT;
719 
720 	if (enh & L2CAP_CTRL_FRAME_TYPE) {
721 		/* S-Frame */
722 		control->sframe = 1;
723 		control->poll = (enh & L2CAP_CTRL_POLL) >> L2CAP_CTRL_POLL_SHIFT;
724 		control->super = (enh & L2CAP_CTRL_SUPERVISE) >> L2CAP_CTRL_SUPER_SHIFT;
725 
726 		control->sar = 0;
727 		control->txseq = 0;
728 	} else {
729 		/* I-Frame */
730 		control->sframe = 0;
731 		control->sar = (enh & L2CAP_CTRL_SAR) >> L2CAP_CTRL_SAR_SHIFT;
732 		control->txseq = (enh & L2CAP_CTRL_TXSEQ) >> L2CAP_CTRL_TXSEQ_SHIFT;
733 
734 		control->poll = 0;
735 		control->super = 0;
736 	}
737 }
738 
739 static void __unpack_extended_control(u32 ext, struct l2cap_ctrl *control)
740 {
741 	control->reqseq = (ext & L2CAP_EXT_CTRL_REQSEQ) >> L2CAP_EXT_CTRL_REQSEQ_SHIFT;
742 	control->final = (ext & L2CAP_EXT_CTRL_FINAL) >> L2CAP_EXT_CTRL_FINAL_SHIFT;
743 
744 	if (ext & L2CAP_EXT_CTRL_FRAME_TYPE) {
745 		/* S-Frame */
746 		control->sframe = 1;
747 		control->poll = (ext & L2CAP_EXT_CTRL_POLL) >> L2CAP_EXT_CTRL_POLL_SHIFT;
748 		control->super = (ext & L2CAP_EXT_CTRL_SUPERVISE) >> L2CAP_EXT_CTRL_SUPER_SHIFT;
749 
750 		control->sar = 0;
751 		control->txseq = 0;
752 	} else {
753 		/* I-Frame */
754 		control->sframe = 0;
755 		control->sar = (ext & L2CAP_EXT_CTRL_SAR) >> L2CAP_EXT_CTRL_SAR_SHIFT;
756 		control->txseq = (ext & L2CAP_EXT_CTRL_TXSEQ) >> L2CAP_EXT_CTRL_TXSEQ_SHIFT;
757 
758 		control->poll = 0;
759 		control->super = 0;
760 	}
761 }
762 
763 static inline void __unpack_control(struct l2cap_chan *chan,
764 				    struct sk_buff *skb)
765 {
766 	if (test_bit(FLAG_EXT_CTRL, &chan->flags)) {
767 		__unpack_extended_control(get_unaligned_le32(skb->data),
768 					  &bt_cb(skb)->control);
769 		skb_pull(skb, L2CAP_EXT_CTRL_SIZE);
770 	} else {
771 		__unpack_enhanced_control(get_unaligned_le16(skb->data),
772 					  &bt_cb(skb)->control);
773 		skb_pull(skb, L2CAP_ENH_CTRL_SIZE);
774 	}
775 }
776 
777 static u32 __pack_extended_control(struct l2cap_ctrl *control)
778 {
779 	u32 packed;
780 
781 	packed = control->reqseq << L2CAP_EXT_CTRL_REQSEQ_SHIFT;
782 	packed |= control->final << L2CAP_EXT_CTRL_FINAL_SHIFT;
783 
784 	if (control->sframe) {
785 		packed |= control->poll << L2CAP_EXT_CTRL_POLL_SHIFT;
786 		packed |= control->super << L2CAP_EXT_CTRL_SUPER_SHIFT;
787 		packed |= L2CAP_EXT_CTRL_FRAME_TYPE;
788 	} else {
789 		packed |= control->sar << L2CAP_EXT_CTRL_SAR_SHIFT;
790 		packed |= control->txseq << L2CAP_EXT_CTRL_TXSEQ_SHIFT;
791 	}
792 
793 	return packed;
794 }
795 
796 static u16 __pack_enhanced_control(struct l2cap_ctrl *control)
797 {
798 	u16 packed;
799 
800 	packed = control->reqseq << L2CAP_CTRL_REQSEQ_SHIFT;
801 	packed |= control->final << L2CAP_CTRL_FINAL_SHIFT;
802 
803 	if (control->sframe) {
804 		packed |= control->poll << L2CAP_CTRL_POLL_SHIFT;
805 		packed |= control->super << L2CAP_CTRL_SUPER_SHIFT;
806 		packed |= L2CAP_CTRL_FRAME_TYPE;
807 	} else {
808 		packed |= control->sar << L2CAP_CTRL_SAR_SHIFT;
809 		packed |= control->txseq << L2CAP_CTRL_TXSEQ_SHIFT;
810 	}
811 
812 	return packed;
813 }
814 
815 static inline void __pack_control(struct l2cap_chan *chan,
816 				  struct l2cap_ctrl *control,
817 				  struct sk_buff *skb)
818 {
819 	if (test_bit(FLAG_EXT_CTRL, &chan->flags)) {
820 		put_unaligned_le32(__pack_extended_control(control),
821 				   skb->data + L2CAP_HDR_SIZE);
822 	} else {
823 		put_unaligned_le16(__pack_enhanced_control(control),
824 				   skb->data + L2CAP_HDR_SIZE);
825 	}
826 }
827 
828 static inline unsigned int __ertm_hdr_size(struct l2cap_chan *chan)
829 {
830 	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
831 		return L2CAP_EXT_HDR_SIZE;
832 	else
833 		return L2CAP_ENH_HDR_SIZE;
834 }
835 
836 static struct sk_buff *l2cap_create_sframe_pdu(struct l2cap_chan *chan,
837 					       u32 control)
838 {
839 	struct sk_buff *skb;
840 	struct l2cap_hdr *lh;
841 	int hlen = __ertm_hdr_size(chan);
842 
843 	if (chan->fcs == L2CAP_FCS_CRC16)
844 		hlen += L2CAP_FCS_SIZE;
845 
846 	skb = bt_skb_alloc(hlen, GFP_KERNEL);
847 
848 	if (!skb)
849 		return ERR_PTR(-ENOMEM);
850 
851 	lh = (struct l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
852 	lh->len = cpu_to_le16(hlen - L2CAP_HDR_SIZE);
853 	lh->cid = cpu_to_le16(chan->dcid);
854 
855 	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
856 		put_unaligned_le32(control, skb_put(skb, L2CAP_EXT_CTRL_SIZE));
857 	else
858 		put_unaligned_le16(control, skb_put(skb, L2CAP_ENH_CTRL_SIZE));
859 
860 	if (chan->fcs == L2CAP_FCS_CRC16) {
861 		u16 fcs = crc16(0, (u8 *)skb->data, skb->len);
862 		put_unaligned_le16(fcs, skb_put(skb, L2CAP_FCS_SIZE));
863 	}
864 
865 	skb->priority = HCI_PRIO_MAX;
866 	return skb;
867 }
868 
869 static void l2cap_send_sframe(struct l2cap_chan *chan,
870 			      struct l2cap_ctrl *control)
871 {
872 	struct sk_buff *skb;
873 	u32 control_field;
874 
875 	BT_DBG("chan %p, control %p", chan, control);
876 
877 	if (!control->sframe)
878 		return;
879 
880 	if (test_and_clear_bit(CONN_SEND_FBIT, &chan->conn_state) &&
881 	    !control->poll)
882 		control->final = 1;
883 
884 	if (control->super == L2CAP_SUPER_RR)
885 		clear_bit(CONN_RNR_SENT, &chan->conn_state);
886 	else if (control->super == L2CAP_SUPER_RNR)
887 		set_bit(CONN_RNR_SENT, &chan->conn_state);
888 
889 	if (control->super != L2CAP_SUPER_SREJ) {
890 		chan->last_acked_seq = control->reqseq;
891 		__clear_ack_timer(chan);
892 	}
893 
894 	BT_DBG("reqseq %d, final %d, poll %d, super %d", control->reqseq,
895 	       control->final, control->poll, control->super);
896 
897 	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
898 		control_field = __pack_extended_control(control);
899 	else
900 		control_field = __pack_enhanced_control(control);
901 
902 	skb = l2cap_create_sframe_pdu(chan, control_field);
903 	if (!IS_ERR(skb))
904 		l2cap_do_send(chan, skb);
905 }
906 
907 static void l2cap_send_rr_or_rnr(struct l2cap_chan *chan, bool poll)
908 {
909 	struct l2cap_ctrl control;
910 
911 	BT_DBG("chan %p, poll %d", chan, poll);
912 
913 	memset(&control, 0, sizeof(control));
914 	control.sframe = 1;
915 	control.poll = poll;
916 
917 	if (test_bit(CONN_LOCAL_BUSY, &chan->conn_state))
918 		control.super = L2CAP_SUPER_RNR;
919 	else
920 		control.super = L2CAP_SUPER_RR;
921 
922 	control.reqseq = chan->buffer_seq;
923 	l2cap_send_sframe(chan, &control);
924 }
925 
926 static inline int __l2cap_no_conn_pending(struct l2cap_chan *chan)
927 {
928 	return !test_bit(CONF_CONNECT_PEND, &chan->conf_state);
929 }
930 
931 static void l2cap_send_conn_req(struct l2cap_chan *chan)
932 {
933 	struct l2cap_conn *conn = chan->conn;
934 	struct l2cap_conn_req req;
935 
936 	req.scid = cpu_to_le16(chan->scid);
937 	req.psm  = chan->psm;
938 
939 	chan->ident = l2cap_get_ident(conn);
940 
941 	set_bit(CONF_CONNECT_PEND, &chan->conf_state);
942 
943 	l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_REQ, sizeof(req), &req);
944 }
945 
946 static void l2cap_chan_ready(struct l2cap_chan *chan)
947 {
948 	/* This clears all conf flags, including CONF_NOT_COMPLETE */
949 	chan->conf_state = 0;
950 	__clear_chan_timer(chan);
951 
952 	chan->state = BT_CONNECTED;
953 
954 	chan->ops->ready(chan);
955 }
956 
957 static void l2cap_do_start(struct l2cap_chan *chan)
958 {
959 	struct l2cap_conn *conn = chan->conn;
960 
961 	if (conn->hcon->type == LE_LINK) {
962 		l2cap_chan_ready(chan);
963 		return;
964 	}
965 
966 	if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) {
967 		if (!(conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE))
968 			return;
969 
970 		if (l2cap_chan_check_security(chan) &&
971 				__l2cap_no_conn_pending(chan))
972 			l2cap_send_conn_req(chan);
973 	} else {
974 		struct l2cap_info_req req;
975 		req.type = __constant_cpu_to_le16(L2CAP_IT_FEAT_MASK);
976 
977 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_SENT;
978 		conn->info_ident = l2cap_get_ident(conn);
979 
980 		schedule_delayed_work(&conn->info_timer, L2CAP_INFO_TIMEOUT);
981 
982 		l2cap_send_cmd(conn, conn->info_ident,
983 					L2CAP_INFO_REQ, sizeof(req), &req);
984 	}
985 }
986 
987 static inline int l2cap_mode_supported(__u8 mode, __u32 feat_mask)
988 {
989 	u32 local_feat_mask = l2cap_feat_mask;
990 	if (!disable_ertm)
991 		local_feat_mask |= L2CAP_FEAT_ERTM | L2CAP_FEAT_STREAMING;
992 
993 	switch (mode) {
994 	case L2CAP_MODE_ERTM:
995 		return L2CAP_FEAT_ERTM & feat_mask & local_feat_mask;
996 	case L2CAP_MODE_STREAMING:
997 		return L2CAP_FEAT_STREAMING & feat_mask & local_feat_mask;
998 	default:
999 		return 0x00;
1000 	}
1001 }
1002 
1003 static void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *chan, int err)
1004 {
1005 	struct sock *sk = chan->sk;
1006 	struct l2cap_disconn_req req;
1007 
1008 	if (!conn)
1009 		return;
1010 
1011 	if (chan->mode == L2CAP_MODE_ERTM && chan->state == BT_CONNECTED) {
1012 		__clear_retrans_timer(chan);
1013 		__clear_monitor_timer(chan);
1014 		__clear_ack_timer(chan);
1015 	}
1016 
1017 	if (chan->chan_type == L2CAP_CHAN_CONN_FIX_A2MP) {
1018 		__l2cap_state_change(chan, BT_DISCONN);
1019 		return;
1020 	}
1021 
1022 	req.dcid = cpu_to_le16(chan->dcid);
1023 	req.scid = cpu_to_le16(chan->scid);
1024 	l2cap_send_cmd(conn, l2cap_get_ident(conn),
1025 			L2CAP_DISCONN_REQ, sizeof(req), &req);
1026 
1027 	lock_sock(sk);
1028 	__l2cap_state_change(chan, BT_DISCONN);
1029 	__l2cap_chan_set_err(chan, err);
1030 	release_sock(sk);
1031 }
1032 
1033 /* ---- L2CAP connections ---- */
1034 static void l2cap_conn_start(struct l2cap_conn *conn)
1035 {
1036 	struct l2cap_chan *chan, *tmp;
1037 
1038 	BT_DBG("conn %p", conn);
1039 
1040 	mutex_lock(&conn->chan_lock);
1041 
1042 	list_for_each_entry_safe(chan, tmp, &conn->chan_l, list) {
1043 		struct sock *sk = chan->sk;
1044 
1045 		l2cap_chan_lock(chan);
1046 
1047 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
1048 			l2cap_chan_unlock(chan);
1049 			continue;
1050 		}
1051 
1052 		if (chan->state == BT_CONNECT) {
1053 			if (!l2cap_chan_check_security(chan) ||
1054 					!__l2cap_no_conn_pending(chan)) {
1055 				l2cap_chan_unlock(chan);
1056 				continue;
1057 			}
1058 
1059 			if (!l2cap_mode_supported(chan->mode, conn->feat_mask)
1060 					&& test_bit(CONF_STATE2_DEVICE,
1061 					&chan->conf_state)) {
1062 				l2cap_chan_close(chan, ECONNRESET);
1063 				l2cap_chan_unlock(chan);
1064 				continue;
1065 			}
1066 
1067 			l2cap_send_conn_req(chan);
1068 
1069 		} else if (chan->state == BT_CONNECT2) {
1070 			struct l2cap_conn_rsp rsp;
1071 			char buf[128];
1072 			rsp.scid = cpu_to_le16(chan->dcid);
1073 			rsp.dcid = cpu_to_le16(chan->scid);
1074 
1075 			if (l2cap_chan_check_security(chan)) {
1076 				lock_sock(sk);
1077 				if (test_bit(BT_SK_DEFER_SETUP,
1078 					     &bt_sk(sk)->flags)) {
1079 					struct sock *parent = bt_sk(sk)->parent;
1080 					rsp.result = __constant_cpu_to_le16(L2CAP_CR_PEND);
1081 					rsp.status = __constant_cpu_to_le16(L2CAP_CS_AUTHOR_PEND);
1082 					if (parent)
1083 						parent->sk_data_ready(parent, 0);
1084 
1085 				} else {
1086 					__l2cap_state_change(chan, BT_CONFIG);
1087 					rsp.result = __constant_cpu_to_le16(L2CAP_CR_SUCCESS);
1088 					rsp.status = __constant_cpu_to_le16(L2CAP_CS_NO_INFO);
1089 				}
1090 				release_sock(sk);
1091 			} else {
1092 				rsp.result = __constant_cpu_to_le16(L2CAP_CR_PEND);
1093 				rsp.status = __constant_cpu_to_le16(L2CAP_CS_AUTHEN_PEND);
1094 			}
1095 
1096 			l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
1097 							sizeof(rsp), &rsp);
1098 
1099 			if (test_bit(CONF_REQ_SENT, &chan->conf_state) ||
1100 					rsp.result != L2CAP_CR_SUCCESS) {
1101 				l2cap_chan_unlock(chan);
1102 				continue;
1103 			}
1104 
1105 			set_bit(CONF_REQ_SENT, &chan->conf_state);
1106 			l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ,
1107 						l2cap_build_conf_req(chan, buf), buf);
1108 			chan->num_conf_req++;
1109 		}
1110 
1111 		l2cap_chan_unlock(chan);
1112 	}
1113 
1114 	mutex_unlock(&conn->chan_lock);
1115 }
1116 
1117 /* Find socket with cid and source/destination bdaddr.
1118  * Returns closest match, locked.
1119  */
1120 static struct l2cap_chan *l2cap_global_chan_by_scid(int state, u16 cid,
1121 						    bdaddr_t *src,
1122 						    bdaddr_t *dst)
1123 {
1124 	struct l2cap_chan *c, *c1 = NULL;
1125 
1126 	read_lock(&chan_list_lock);
1127 
1128 	list_for_each_entry(c, &chan_list, global_l) {
1129 		struct sock *sk = c->sk;
1130 
1131 		if (state && c->state != state)
1132 			continue;
1133 
1134 		if (c->scid == cid) {
1135 			int src_match, dst_match;
1136 			int src_any, dst_any;
1137 
1138 			/* Exact match. */
1139 			src_match = !bacmp(&bt_sk(sk)->src, src);
1140 			dst_match = !bacmp(&bt_sk(sk)->dst, dst);
1141 			if (src_match && dst_match) {
1142 				read_unlock(&chan_list_lock);
1143 				return c;
1144 			}
1145 
1146 			/* Closest match */
1147 			src_any = !bacmp(&bt_sk(sk)->src, BDADDR_ANY);
1148 			dst_any = !bacmp(&bt_sk(sk)->dst, BDADDR_ANY);
1149 			if ((src_match && dst_any) || (src_any && dst_match) ||
1150 			    (src_any && dst_any))
1151 				c1 = c;
1152 		}
1153 	}
1154 
1155 	read_unlock(&chan_list_lock);
1156 
1157 	return c1;
1158 }
1159 
1160 static void l2cap_le_conn_ready(struct l2cap_conn *conn)
1161 {
1162 	struct sock *parent, *sk;
1163 	struct l2cap_chan *chan, *pchan;
1164 
1165 	BT_DBG("");
1166 
1167 	/* Check if we have socket listening on cid */
1168 	pchan = l2cap_global_chan_by_scid(BT_LISTEN, L2CAP_CID_LE_DATA,
1169 					  conn->src, conn->dst);
1170 	if (!pchan)
1171 		return;
1172 
1173 	parent = pchan->sk;
1174 
1175 	lock_sock(parent);
1176 
1177 	chan = pchan->ops->new_connection(pchan);
1178 	if (!chan)
1179 		goto clean;
1180 
1181 	sk = chan->sk;
1182 
1183 	hci_conn_hold(conn->hcon);
1184 	conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT;
1185 
1186 	bacpy(&bt_sk(sk)->src, conn->src);
1187 	bacpy(&bt_sk(sk)->dst, conn->dst);
1188 
1189 	bt_accept_enqueue(parent, sk);
1190 
1191 	l2cap_chan_add(conn, chan);
1192 
1193 	l2cap_chan_ready(chan);
1194 
1195 clean:
1196 	release_sock(parent);
1197 }
1198 
1199 static void l2cap_conn_ready(struct l2cap_conn *conn)
1200 {
1201 	struct l2cap_chan *chan;
1202 	struct hci_conn *hcon = conn->hcon;
1203 
1204 	BT_DBG("conn %p", conn);
1205 
1206 	if (!hcon->out && hcon->type == LE_LINK)
1207 		l2cap_le_conn_ready(conn);
1208 
1209 	if (hcon->out && hcon->type == LE_LINK)
1210 		smp_conn_security(hcon, hcon->pending_sec_level);
1211 
1212 	mutex_lock(&conn->chan_lock);
1213 
1214 	list_for_each_entry(chan, &conn->chan_l, list) {
1215 
1216 		l2cap_chan_lock(chan);
1217 
1218 		if (chan->chan_type == L2CAP_CHAN_CONN_FIX_A2MP) {
1219 			l2cap_chan_unlock(chan);
1220 			continue;
1221 		}
1222 
1223 		if (hcon->type == LE_LINK) {
1224 			if (smp_conn_security(hcon, chan->sec_level))
1225 				l2cap_chan_ready(chan);
1226 
1227 		} else if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
1228 			struct sock *sk = chan->sk;
1229 			__clear_chan_timer(chan);
1230 			lock_sock(sk);
1231 			__l2cap_state_change(chan, BT_CONNECTED);
1232 			sk->sk_state_change(sk);
1233 			release_sock(sk);
1234 
1235 		} else if (chan->state == BT_CONNECT)
1236 			l2cap_do_start(chan);
1237 
1238 		l2cap_chan_unlock(chan);
1239 	}
1240 
1241 	mutex_unlock(&conn->chan_lock);
1242 }
1243 
1244 /* Notify sockets that we cannot guaranty reliability anymore */
1245 static void l2cap_conn_unreliable(struct l2cap_conn *conn, int err)
1246 {
1247 	struct l2cap_chan *chan;
1248 
1249 	BT_DBG("conn %p", conn);
1250 
1251 	mutex_lock(&conn->chan_lock);
1252 
1253 	list_for_each_entry(chan, &conn->chan_l, list) {
1254 		if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
1255 			__l2cap_chan_set_err(chan, err);
1256 	}
1257 
1258 	mutex_unlock(&conn->chan_lock);
1259 }
1260 
1261 static void l2cap_info_timeout(struct work_struct *work)
1262 {
1263 	struct l2cap_conn *conn = container_of(work, struct l2cap_conn,
1264 							info_timer.work);
1265 
1266 	conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
1267 	conn->info_ident = 0;
1268 
1269 	l2cap_conn_start(conn);
1270 }
1271 
1272 static void l2cap_conn_del(struct hci_conn *hcon, int err)
1273 {
1274 	struct l2cap_conn *conn = hcon->l2cap_data;
1275 	struct l2cap_chan *chan, *l;
1276 
1277 	if (!conn)
1278 		return;
1279 
1280 	BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
1281 
1282 	kfree_skb(conn->rx_skb);
1283 
1284 	mutex_lock(&conn->chan_lock);
1285 
1286 	/* Kill channels */
1287 	list_for_each_entry_safe(chan, l, &conn->chan_l, list) {
1288 		l2cap_chan_hold(chan);
1289 		l2cap_chan_lock(chan);
1290 
1291 		l2cap_chan_del(chan, err);
1292 
1293 		l2cap_chan_unlock(chan);
1294 
1295 		chan->ops->close(chan);
1296 		l2cap_chan_put(chan);
1297 	}
1298 
1299 	mutex_unlock(&conn->chan_lock);
1300 
1301 	hci_chan_del(conn->hchan);
1302 
1303 	if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT)
1304 		cancel_delayed_work_sync(&conn->info_timer);
1305 
1306 	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->flags)) {
1307 		cancel_delayed_work_sync(&conn->security_timer);
1308 		smp_chan_destroy(conn);
1309 	}
1310 
1311 	hcon->l2cap_data = NULL;
1312 	kfree(conn);
1313 }
1314 
1315 static void security_timeout(struct work_struct *work)
1316 {
1317 	struct l2cap_conn *conn = container_of(work, struct l2cap_conn,
1318 						security_timer.work);
1319 
1320 	BT_DBG("conn %p", conn);
1321 
1322 	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags)) {
1323 		smp_chan_destroy(conn);
1324 		l2cap_conn_del(conn->hcon, ETIMEDOUT);
1325 	}
1326 }
1327 
1328 static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon, u8 status)
1329 {
1330 	struct l2cap_conn *conn = hcon->l2cap_data;
1331 	struct hci_chan *hchan;
1332 
1333 	if (conn || status)
1334 		return conn;
1335 
1336 	hchan = hci_chan_create(hcon);
1337 	if (!hchan)
1338 		return NULL;
1339 
1340 	conn = kzalloc(sizeof(struct l2cap_conn), GFP_ATOMIC);
1341 	if (!conn) {
1342 		hci_chan_del(hchan);
1343 		return NULL;
1344 	}
1345 
1346 	hcon->l2cap_data = conn;
1347 	conn->hcon = hcon;
1348 	conn->hchan = hchan;
1349 
1350 	BT_DBG("hcon %p conn %p hchan %p", hcon, conn, hchan);
1351 
1352 	if (hcon->hdev->le_mtu && hcon->type == LE_LINK)
1353 		conn->mtu = hcon->hdev->le_mtu;
1354 	else
1355 		conn->mtu = hcon->hdev->acl_mtu;
1356 
1357 	conn->src = &hcon->hdev->bdaddr;
1358 	conn->dst = &hcon->dst;
1359 
1360 	conn->feat_mask = 0;
1361 
1362 	spin_lock_init(&conn->lock);
1363 	mutex_init(&conn->chan_lock);
1364 
1365 	INIT_LIST_HEAD(&conn->chan_l);
1366 
1367 	if (hcon->type == LE_LINK)
1368 		INIT_DELAYED_WORK(&conn->security_timer, security_timeout);
1369 	else
1370 		INIT_DELAYED_WORK(&conn->info_timer, l2cap_info_timeout);
1371 
1372 	conn->disc_reason = HCI_ERROR_REMOTE_USER_TERM;
1373 
1374 	return conn;
1375 }
1376 
1377 /* ---- Socket interface ---- */
1378 
1379 /* Find socket with psm and source / destination bdaddr.
1380  * Returns closest match.
1381  */
1382 static struct l2cap_chan *l2cap_global_chan_by_psm(int state, __le16 psm,
1383 						   bdaddr_t *src,
1384 						   bdaddr_t *dst)
1385 {
1386 	struct l2cap_chan *c, *c1 = NULL;
1387 
1388 	read_lock(&chan_list_lock);
1389 
1390 	list_for_each_entry(c, &chan_list, global_l) {
1391 		struct sock *sk = c->sk;
1392 
1393 		if (state && c->state != state)
1394 			continue;
1395 
1396 		if (c->psm == psm) {
1397 			int src_match, dst_match;
1398 			int src_any, dst_any;
1399 
1400 			/* Exact match. */
1401 			src_match = !bacmp(&bt_sk(sk)->src, src);
1402 			dst_match = !bacmp(&bt_sk(sk)->dst, dst);
1403 			if (src_match && dst_match) {
1404 				read_unlock(&chan_list_lock);
1405 				return c;
1406 			}
1407 
1408 			/* Closest match */
1409 			src_any = !bacmp(&bt_sk(sk)->src, BDADDR_ANY);
1410 			dst_any = !bacmp(&bt_sk(sk)->dst, BDADDR_ANY);
1411 			if ((src_match && dst_any) || (src_any && dst_match) ||
1412 			    (src_any && dst_any))
1413 				c1 = c;
1414 		}
1415 	}
1416 
1417 	read_unlock(&chan_list_lock);
1418 
1419 	return c1;
1420 }
1421 
1422 int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid,
1423 		       bdaddr_t *dst, u8 dst_type)
1424 {
1425 	struct sock *sk = chan->sk;
1426 	bdaddr_t *src = &bt_sk(sk)->src;
1427 	struct l2cap_conn *conn;
1428 	struct hci_conn *hcon;
1429 	struct hci_dev *hdev;
1430 	__u8 auth_type;
1431 	int err;
1432 
1433 	BT_DBG("%s -> %s (type %u) psm 0x%2.2x", batostr(src), batostr(dst),
1434 	       dst_type, __le16_to_cpu(chan->psm));
1435 
1436 	hdev = hci_get_route(dst, src);
1437 	if (!hdev)
1438 		return -EHOSTUNREACH;
1439 
1440 	hci_dev_lock(hdev);
1441 
1442 	l2cap_chan_lock(chan);
1443 
1444 	/* PSM must be odd and lsb of upper byte must be 0 */
1445 	if ((__le16_to_cpu(psm) & 0x0101) != 0x0001 && !cid &&
1446 					chan->chan_type != L2CAP_CHAN_RAW) {
1447 		err = -EINVAL;
1448 		goto done;
1449 	}
1450 
1451 	if (chan->chan_type == L2CAP_CHAN_CONN_ORIENTED && !(psm || cid)) {
1452 		err = -EINVAL;
1453 		goto done;
1454 	}
1455 
1456 	switch (chan->mode) {
1457 	case L2CAP_MODE_BASIC:
1458 		break;
1459 	case L2CAP_MODE_ERTM:
1460 	case L2CAP_MODE_STREAMING:
1461 		if (!disable_ertm)
1462 			break;
1463 		/* fall through */
1464 	default:
1465 		err = -ENOTSUPP;
1466 		goto done;
1467 	}
1468 
1469 	switch (chan->state) {
1470 	case BT_CONNECT:
1471 	case BT_CONNECT2:
1472 	case BT_CONFIG:
1473 		/* Already connecting */
1474 		err = 0;
1475 		goto done;
1476 
1477 	case BT_CONNECTED:
1478 		/* Already connected */
1479 		err = -EISCONN;
1480 		goto done;
1481 
1482 	case BT_OPEN:
1483 	case BT_BOUND:
1484 		/* Can connect */
1485 		break;
1486 
1487 	default:
1488 		err = -EBADFD;
1489 		goto done;
1490 	}
1491 
1492 	/* Set destination address and psm */
1493 	lock_sock(sk);
1494 	bacpy(&bt_sk(sk)->dst, dst);
1495 	release_sock(sk);
1496 
1497 	chan->psm = psm;
1498 	chan->dcid = cid;
1499 
1500 	auth_type = l2cap_get_auth_type(chan);
1501 
1502 	if (chan->dcid == L2CAP_CID_LE_DATA)
1503 		hcon = hci_connect(hdev, LE_LINK, dst, dst_type,
1504 				   chan->sec_level, auth_type);
1505 	else
1506 		hcon = hci_connect(hdev, ACL_LINK, dst, dst_type,
1507 				   chan->sec_level, auth_type);
1508 
1509 	if (IS_ERR(hcon)) {
1510 		err = PTR_ERR(hcon);
1511 		goto done;
1512 	}
1513 
1514 	conn = l2cap_conn_add(hcon, 0);
1515 	if (!conn) {
1516 		hci_conn_put(hcon);
1517 		err = -ENOMEM;
1518 		goto done;
1519 	}
1520 
1521 	if (hcon->type == LE_LINK) {
1522 		err = 0;
1523 
1524 		if (!list_empty(&conn->chan_l)) {
1525 			err = -EBUSY;
1526 			hci_conn_put(hcon);
1527 		}
1528 
1529 		if (err)
1530 			goto done;
1531 	}
1532 
1533 	/* Update source addr of the socket */
1534 	bacpy(src, conn->src);
1535 
1536 	l2cap_chan_unlock(chan);
1537 	l2cap_chan_add(conn, chan);
1538 	l2cap_chan_lock(chan);
1539 
1540 	l2cap_state_change(chan, BT_CONNECT);
1541 	__set_chan_timer(chan, sk->sk_sndtimeo);
1542 
1543 	if (hcon->state == BT_CONNECTED) {
1544 		if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
1545 			__clear_chan_timer(chan);
1546 			if (l2cap_chan_check_security(chan))
1547 				l2cap_state_change(chan, BT_CONNECTED);
1548 		} else
1549 			l2cap_do_start(chan);
1550 	}
1551 
1552 	err = 0;
1553 
1554 done:
1555 	l2cap_chan_unlock(chan);
1556 	hci_dev_unlock(hdev);
1557 	hci_dev_put(hdev);
1558 	return err;
1559 }
1560 
1561 int __l2cap_wait_ack(struct sock *sk)
1562 {
1563 	struct l2cap_chan *chan = l2cap_pi(sk)->chan;
1564 	DECLARE_WAITQUEUE(wait, current);
1565 	int err = 0;
1566 	int timeo = HZ/5;
1567 
1568 	add_wait_queue(sk_sleep(sk), &wait);
1569 	set_current_state(TASK_INTERRUPTIBLE);
1570 	while (chan->unacked_frames > 0 && chan->conn) {
1571 		if (!timeo)
1572 			timeo = HZ/5;
1573 
1574 		if (signal_pending(current)) {
1575 			err = sock_intr_errno(timeo);
1576 			break;
1577 		}
1578 
1579 		release_sock(sk);
1580 		timeo = schedule_timeout(timeo);
1581 		lock_sock(sk);
1582 		set_current_state(TASK_INTERRUPTIBLE);
1583 
1584 		err = sock_error(sk);
1585 		if (err)
1586 			break;
1587 	}
1588 	set_current_state(TASK_RUNNING);
1589 	remove_wait_queue(sk_sleep(sk), &wait);
1590 	return err;
1591 }
1592 
1593 static void l2cap_monitor_timeout(struct work_struct *work)
1594 {
1595 	struct l2cap_chan *chan = container_of(work, struct l2cap_chan,
1596 					       monitor_timer.work);
1597 
1598 	BT_DBG("chan %p", chan);
1599 
1600 	l2cap_chan_lock(chan);
1601 
1602 	if (!chan->conn) {
1603 		l2cap_chan_unlock(chan);
1604 		l2cap_chan_put(chan);
1605 		return;
1606 	}
1607 
1608 	l2cap_tx(chan, NULL, NULL, L2CAP_EV_MONITOR_TO);
1609 
1610 	l2cap_chan_unlock(chan);
1611 	l2cap_chan_put(chan);
1612 }
1613 
1614 static void l2cap_retrans_timeout(struct work_struct *work)
1615 {
1616 	struct l2cap_chan *chan = container_of(work, struct l2cap_chan,
1617 					       retrans_timer.work);
1618 
1619 	BT_DBG("chan %p", chan);
1620 
1621 	l2cap_chan_lock(chan);
1622 
1623 	if (!chan->conn) {
1624 		l2cap_chan_unlock(chan);
1625 		l2cap_chan_put(chan);
1626 		return;
1627 	}
1628 
1629 	l2cap_tx(chan, NULL, NULL, L2CAP_EV_RETRANS_TO);
1630 	l2cap_chan_unlock(chan);
1631 	l2cap_chan_put(chan);
1632 }
1633 
1634 static void l2cap_streaming_send(struct l2cap_chan *chan,
1635 				 struct sk_buff_head *skbs)
1636 {
1637 	struct sk_buff *skb;
1638 	struct l2cap_ctrl *control;
1639 
1640 	BT_DBG("chan %p, skbs %p", chan, skbs);
1641 
1642 	skb_queue_splice_tail_init(skbs, &chan->tx_q);
1643 
1644 	while (!skb_queue_empty(&chan->tx_q)) {
1645 
1646 		skb = skb_dequeue(&chan->tx_q);
1647 
1648 		bt_cb(skb)->control.retries = 1;
1649 		control = &bt_cb(skb)->control;
1650 
1651 		control->reqseq = 0;
1652 		control->txseq = chan->next_tx_seq;
1653 
1654 		__pack_control(chan, control, skb);
1655 
1656 		if (chan->fcs == L2CAP_FCS_CRC16) {
1657 			u16 fcs = crc16(0, (u8 *) skb->data, skb->len);
1658 			put_unaligned_le16(fcs, skb_put(skb, L2CAP_FCS_SIZE));
1659 		}
1660 
1661 		l2cap_do_send(chan, skb);
1662 
1663 		BT_DBG("Sent txseq %u", control->txseq);
1664 
1665 		chan->next_tx_seq = __next_seq(chan, chan->next_tx_seq);
1666 		chan->frames_sent++;
1667 	}
1668 }
1669 
1670 static int l2cap_ertm_send(struct l2cap_chan *chan)
1671 {
1672 	struct sk_buff *skb, *tx_skb;
1673 	struct l2cap_ctrl *control;
1674 	int sent = 0;
1675 
1676 	BT_DBG("chan %p", chan);
1677 
1678 	if (chan->state != BT_CONNECTED)
1679 		return -ENOTCONN;
1680 
1681 	if (test_bit(CONN_REMOTE_BUSY, &chan->conn_state))
1682 		return 0;
1683 
1684 	while (chan->tx_send_head &&
1685 	       chan->unacked_frames < chan->remote_tx_win &&
1686 	       chan->tx_state == L2CAP_TX_STATE_XMIT) {
1687 
1688 		skb = chan->tx_send_head;
1689 
1690 		bt_cb(skb)->control.retries = 1;
1691 		control = &bt_cb(skb)->control;
1692 
1693 		if (test_and_clear_bit(CONN_SEND_FBIT, &chan->conn_state))
1694 			control->final = 1;
1695 
1696 		control->reqseq = chan->buffer_seq;
1697 		chan->last_acked_seq = chan->buffer_seq;
1698 		control->txseq = chan->next_tx_seq;
1699 
1700 		__pack_control(chan, control, skb);
1701 
1702 		if (chan->fcs == L2CAP_FCS_CRC16) {
1703 			u16 fcs = crc16(0, (u8 *) skb->data, skb->len);
1704 			put_unaligned_le16(fcs, skb_put(skb, L2CAP_FCS_SIZE));
1705 		}
1706 
1707 		/* Clone after data has been modified. Data is assumed to be
1708 		   read-only (for locking purposes) on cloned sk_buffs.
1709 		 */
1710 		tx_skb = skb_clone(skb, GFP_KERNEL);
1711 
1712 		if (!tx_skb)
1713 			break;
1714 
1715 		__set_retrans_timer(chan);
1716 
1717 		chan->next_tx_seq = __next_seq(chan, chan->next_tx_seq);
1718 		chan->unacked_frames++;
1719 		chan->frames_sent++;
1720 		sent++;
1721 
1722 		if (skb_queue_is_last(&chan->tx_q, skb))
1723 			chan->tx_send_head = NULL;
1724 		else
1725 			chan->tx_send_head = skb_queue_next(&chan->tx_q, skb);
1726 
1727 		l2cap_do_send(chan, tx_skb);
1728 		BT_DBG("Sent txseq %u", control->txseq);
1729 	}
1730 
1731 	BT_DBG("Sent %d, %u unacked, %u in ERTM queue", sent,
1732 	       chan->unacked_frames, skb_queue_len(&chan->tx_q));
1733 
1734 	return sent;
1735 }
1736 
1737 static void l2cap_ertm_resend(struct l2cap_chan *chan)
1738 {
1739 	struct l2cap_ctrl control;
1740 	struct sk_buff *skb;
1741 	struct sk_buff *tx_skb;
1742 	u16 seq;
1743 
1744 	BT_DBG("chan %p", chan);
1745 
1746 	if (test_bit(CONN_REMOTE_BUSY, &chan->conn_state))
1747 		return;
1748 
1749 	while (chan->retrans_list.head != L2CAP_SEQ_LIST_CLEAR) {
1750 		seq = l2cap_seq_list_pop(&chan->retrans_list);
1751 
1752 		skb = l2cap_ertm_seq_in_queue(&chan->tx_q, seq);
1753 		if (!skb) {
1754 			BT_DBG("Error: Can't retransmit seq %d, frame missing",
1755 				seq);
1756 			continue;
1757 		}
1758 
1759 		bt_cb(skb)->control.retries++;
1760 		control = bt_cb(skb)->control;
1761 
1762 		if (chan->max_tx != 0 &&
1763 		    bt_cb(skb)->control.retries > chan->max_tx) {
1764 			BT_DBG("Retry limit exceeded (%d)", chan->max_tx);
1765 			l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
1766 			l2cap_seq_list_clear(&chan->retrans_list);
1767 			break;
1768 		}
1769 
1770 		control.reqseq = chan->buffer_seq;
1771 		if (test_and_clear_bit(CONN_SEND_FBIT, &chan->conn_state))
1772 			control.final = 1;
1773 		else
1774 			control.final = 0;
1775 
1776 		if (skb_cloned(skb)) {
1777 			/* Cloned sk_buffs are read-only, so we need a
1778 			 * writeable copy
1779 			 */
1780 			tx_skb = skb_copy(skb, GFP_ATOMIC);
1781 		} else {
1782 			tx_skb = skb_clone(skb, GFP_ATOMIC);
1783 		}
1784 
1785 		if (!tx_skb) {
1786 			l2cap_seq_list_clear(&chan->retrans_list);
1787 			break;
1788 		}
1789 
1790 		/* Update skb contents */
1791 		if (test_bit(FLAG_EXT_CTRL, &chan->flags)) {
1792 			put_unaligned_le32(__pack_extended_control(&control),
1793 					   tx_skb->data + L2CAP_HDR_SIZE);
1794 		} else {
1795 			put_unaligned_le16(__pack_enhanced_control(&control),
1796 					   tx_skb->data + L2CAP_HDR_SIZE);
1797 		}
1798 
1799 		if (chan->fcs == L2CAP_FCS_CRC16) {
1800 			u16 fcs = crc16(0, (u8 *) tx_skb->data, tx_skb->len);
1801 			put_unaligned_le16(fcs, skb_put(tx_skb,
1802 							L2CAP_FCS_SIZE));
1803 		}
1804 
1805 		l2cap_do_send(chan, tx_skb);
1806 
1807 		BT_DBG("Resent txseq %d", control.txseq);
1808 
1809 		chan->last_acked_seq = chan->buffer_seq;
1810 	}
1811 }
1812 
1813 static void l2cap_retransmit(struct l2cap_chan *chan,
1814 			     struct l2cap_ctrl *control)
1815 {
1816 	BT_DBG("chan %p, control %p", chan, control);
1817 
1818 	l2cap_seq_list_append(&chan->retrans_list, control->reqseq);
1819 	l2cap_ertm_resend(chan);
1820 }
1821 
1822 static void l2cap_retransmit_all(struct l2cap_chan *chan,
1823 				 struct l2cap_ctrl *control)
1824 {
1825 	struct sk_buff *skb;
1826 
1827 	BT_DBG("chan %p, control %p", chan, control);
1828 
1829 	if (control->poll)
1830 		set_bit(CONN_SEND_FBIT, &chan->conn_state);
1831 
1832 	l2cap_seq_list_clear(&chan->retrans_list);
1833 
1834 	if (test_bit(CONN_REMOTE_BUSY, &chan->conn_state))
1835 		return;
1836 
1837 	if (chan->unacked_frames) {
1838 		skb_queue_walk(&chan->tx_q, skb) {
1839 			if (bt_cb(skb)->control.txseq == control->reqseq ||
1840 				skb == chan->tx_send_head)
1841 				break;
1842 		}
1843 
1844 		skb_queue_walk_from(&chan->tx_q, skb) {
1845 			if (skb == chan->tx_send_head)
1846 				break;
1847 
1848 			l2cap_seq_list_append(&chan->retrans_list,
1849 					      bt_cb(skb)->control.txseq);
1850 		}
1851 
1852 		l2cap_ertm_resend(chan);
1853 	}
1854 }
1855 
1856 static void l2cap_send_ack(struct l2cap_chan *chan)
1857 {
1858 	struct l2cap_ctrl control;
1859 	u16 frames_to_ack = __seq_offset(chan, chan->buffer_seq,
1860 					 chan->last_acked_seq);
1861 	int threshold;
1862 
1863 	BT_DBG("chan %p last_acked_seq %d buffer_seq %d",
1864 	       chan, chan->last_acked_seq, chan->buffer_seq);
1865 
1866 	memset(&control, 0, sizeof(control));
1867 	control.sframe = 1;
1868 
1869 	if (test_bit(CONN_LOCAL_BUSY, &chan->conn_state) &&
1870 	    chan->rx_state == L2CAP_RX_STATE_RECV) {
1871 		__clear_ack_timer(chan);
1872 		control.super = L2CAP_SUPER_RNR;
1873 		control.reqseq = chan->buffer_seq;
1874 		l2cap_send_sframe(chan, &control);
1875 	} else {
1876 		if (!test_bit(CONN_REMOTE_BUSY, &chan->conn_state)) {
1877 			l2cap_ertm_send(chan);
1878 			/* If any i-frames were sent, they included an ack */
1879 			if (chan->buffer_seq == chan->last_acked_seq)
1880 				frames_to_ack = 0;
1881 		}
1882 
1883 		/* Ack now if the window is 3/4ths full.
1884 		 * Calculate without mul or div
1885 		 */
1886 		threshold = chan->ack_win;
1887 		threshold += threshold << 1;
1888 		threshold >>= 2;
1889 
1890 		BT_DBG("frames_to_ack %u, threshold %d", frames_to_ack,
1891 		       threshold);
1892 
1893 		if (frames_to_ack >= threshold) {
1894 			__clear_ack_timer(chan);
1895 			control.super = L2CAP_SUPER_RR;
1896 			control.reqseq = chan->buffer_seq;
1897 			l2cap_send_sframe(chan, &control);
1898 			frames_to_ack = 0;
1899 		}
1900 
1901 		if (frames_to_ack)
1902 			__set_ack_timer(chan);
1903 	}
1904 }
1905 
1906 static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
1907 					 struct msghdr *msg, int len,
1908 					 int count, struct sk_buff *skb)
1909 {
1910 	struct l2cap_conn *conn = chan->conn;
1911 	struct sk_buff **frag;
1912 	int sent = 0;
1913 
1914 	if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count))
1915 		return -EFAULT;
1916 
1917 	sent += count;
1918 	len  -= count;
1919 
1920 	/* Continuation fragments (no L2CAP header) */
1921 	frag = &skb_shinfo(skb)->frag_list;
1922 	while (len) {
1923 		struct sk_buff *tmp;
1924 
1925 		count = min_t(unsigned int, conn->mtu, len);
1926 
1927 		tmp = chan->ops->alloc_skb(chan, count,
1928 					   msg->msg_flags & MSG_DONTWAIT);
1929 		if (IS_ERR(tmp))
1930 			return PTR_ERR(tmp);
1931 
1932 		*frag = tmp;
1933 
1934 		if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count))
1935 			return -EFAULT;
1936 
1937 		(*frag)->priority = skb->priority;
1938 
1939 		sent += count;
1940 		len  -= count;
1941 
1942 		skb->len += (*frag)->len;
1943 		skb->data_len += (*frag)->len;
1944 
1945 		frag = &(*frag)->next;
1946 	}
1947 
1948 	return sent;
1949 }
1950 
1951 static struct sk_buff *l2cap_create_connless_pdu(struct l2cap_chan *chan,
1952 						 struct msghdr *msg, size_t len,
1953 						 u32 priority)
1954 {
1955 	struct l2cap_conn *conn = chan->conn;
1956 	struct sk_buff *skb;
1957 	int err, count, hlen = L2CAP_HDR_SIZE + L2CAP_PSMLEN_SIZE;
1958 	struct l2cap_hdr *lh;
1959 
1960 	BT_DBG("chan %p len %zu priority %u", chan, len, priority);
1961 
1962 	count = min_t(unsigned int, (conn->mtu - hlen), len);
1963 
1964 	skb = chan->ops->alloc_skb(chan, count + hlen,
1965 				   msg->msg_flags & MSG_DONTWAIT);
1966 	if (IS_ERR(skb))
1967 		return skb;
1968 
1969 	skb->priority = priority;
1970 
1971 	/* Create L2CAP header */
1972 	lh = (struct l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
1973 	lh->cid = cpu_to_le16(chan->dcid);
1974 	lh->len = cpu_to_le16(len + L2CAP_PSMLEN_SIZE);
1975 	put_unaligned(chan->psm, skb_put(skb, L2CAP_PSMLEN_SIZE));
1976 
1977 	err = l2cap_skbuff_fromiovec(chan, msg, len, count, skb);
1978 	if (unlikely(err < 0)) {
1979 		kfree_skb(skb);
1980 		return ERR_PTR(err);
1981 	}
1982 	return skb;
1983 }
1984 
1985 static struct sk_buff *l2cap_create_basic_pdu(struct l2cap_chan *chan,
1986 					      struct msghdr *msg, size_t len,
1987 					      u32 priority)
1988 {
1989 	struct l2cap_conn *conn = chan->conn;
1990 	struct sk_buff *skb;
1991 	int err, count;
1992 	struct l2cap_hdr *lh;
1993 
1994 	BT_DBG("chan %p len %zu", chan, len);
1995 
1996 	count = min_t(unsigned int, (conn->mtu - L2CAP_HDR_SIZE), len);
1997 
1998 	skb = chan->ops->alloc_skb(chan, count + L2CAP_HDR_SIZE,
1999 				   msg->msg_flags & MSG_DONTWAIT);
2000 	if (IS_ERR(skb))
2001 		return skb;
2002 
2003 	skb->priority = priority;
2004 
2005 	/* Create L2CAP header */
2006 	lh = (struct l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
2007 	lh->cid = cpu_to_le16(chan->dcid);
2008 	lh->len = cpu_to_le16(len);
2009 
2010 	err = l2cap_skbuff_fromiovec(chan, msg, len, count, skb);
2011 	if (unlikely(err < 0)) {
2012 		kfree_skb(skb);
2013 		return ERR_PTR(err);
2014 	}
2015 	return skb;
2016 }
2017 
2018 static struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan,
2019 					       struct msghdr *msg, size_t len,
2020 					       u16 sdulen)
2021 {
2022 	struct l2cap_conn *conn = chan->conn;
2023 	struct sk_buff *skb;
2024 	int err, count, hlen;
2025 	struct l2cap_hdr *lh;
2026 
2027 	BT_DBG("chan %p len %zu", chan, len);
2028 
2029 	if (!conn)
2030 		return ERR_PTR(-ENOTCONN);
2031 
2032 	hlen = __ertm_hdr_size(chan);
2033 
2034 	if (sdulen)
2035 		hlen += L2CAP_SDULEN_SIZE;
2036 
2037 	if (chan->fcs == L2CAP_FCS_CRC16)
2038 		hlen += L2CAP_FCS_SIZE;
2039 
2040 	count = min_t(unsigned int, (conn->mtu - hlen), len);
2041 
2042 	skb = chan->ops->alloc_skb(chan, count + hlen,
2043 				   msg->msg_flags & MSG_DONTWAIT);
2044 	if (IS_ERR(skb))
2045 		return skb;
2046 
2047 	/* Create L2CAP header */
2048 	lh = (struct l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
2049 	lh->cid = cpu_to_le16(chan->dcid);
2050 	lh->len = cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE));
2051 
2052 	/* Control header is populated later */
2053 	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
2054 		put_unaligned_le32(0, skb_put(skb, L2CAP_EXT_CTRL_SIZE));
2055 	else
2056 		put_unaligned_le16(0, skb_put(skb, L2CAP_ENH_CTRL_SIZE));
2057 
2058 	if (sdulen)
2059 		put_unaligned_le16(sdulen, skb_put(skb, L2CAP_SDULEN_SIZE));
2060 
2061 	err = l2cap_skbuff_fromiovec(chan, msg, len, count, skb);
2062 	if (unlikely(err < 0)) {
2063 		kfree_skb(skb);
2064 		return ERR_PTR(err);
2065 	}
2066 
2067 	bt_cb(skb)->control.fcs = chan->fcs;
2068 	bt_cb(skb)->control.retries = 0;
2069 	return skb;
2070 }
2071 
2072 static int l2cap_segment_sdu(struct l2cap_chan *chan,
2073 			     struct sk_buff_head *seg_queue,
2074 			     struct msghdr *msg, size_t len)
2075 {
2076 	struct sk_buff *skb;
2077 	u16 sdu_len;
2078 	size_t pdu_len;
2079 	u8 sar;
2080 
2081 	BT_DBG("chan %p, msg %p, len %zu", chan, msg, len);
2082 
2083 	/* It is critical that ERTM PDUs fit in a single HCI fragment,
2084 	 * so fragmented skbs are not used.  The HCI layer's handling
2085 	 * of fragmented skbs is not compatible with ERTM's queueing.
2086 	 */
2087 
2088 	/* PDU size is derived from the HCI MTU */
2089 	pdu_len = chan->conn->mtu;
2090 
2091 	pdu_len = min_t(size_t, pdu_len, L2CAP_BREDR_MAX_PAYLOAD);
2092 
2093 	/* Adjust for largest possible L2CAP overhead. */
2094 	if (chan->fcs)
2095 		pdu_len -= L2CAP_FCS_SIZE;
2096 
2097 	pdu_len -= __ertm_hdr_size(chan);
2098 
2099 	/* Remote device may have requested smaller PDUs */
2100 	pdu_len = min_t(size_t, pdu_len, chan->remote_mps);
2101 
2102 	if (len <= pdu_len) {
2103 		sar = L2CAP_SAR_UNSEGMENTED;
2104 		sdu_len = 0;
2105 		pdu_len = len;
2106 	} else {
2107 		sar = L2CAP_SAR_START;
2108 		sdu_len = len;
2109 		pdu_len -= L2CAP_SDULEN_SIZE;
2110 	}
2111 
2112 	while (len > 0) {
2113 		skb = l2cap_create_iframe_pdu(chan, msg, pdu_len, sdu_len);
2114 
2115 		if (IS_ERR(skb)) {
2116 			__skb_queue_purge(seg_queue);
2117 			return PTR_ERR(skb);
2118 		}
2119 
2120 		bt_cb(skb)->control.sar = sar;
2121 		__skb_queue_tail(seg_queue, skb);
2122 
2123 		len -= pdu_len;
2124 		if (sdu_len) {
2125 			sdu_len = 0;
2126 			pdu_len += L2CAP_SDULEN_SIZE;
2127 		}
2128 
2129 		if (len <= pdu_len) {
2130 			sar = L2CAP_SAR_END;
2131 			pdu_len = len;
2132 		} else {
2133 			sar = L2CAP_SAR_CONTINUE;
2134 		}
2135 	}
2136 
2137 	return 0;
2138 }
2139 
2140 int l2cap_chan_send(struct l2cap_chan *chan, struct msghdr *msg, size_t len,
2141 								u32 priority)
2142 {
2143 	struct sk_buff *skb;
2144 	int err;
2145 	struct sk_buff_head seg_queue;
2146 
2147 	/* Connectionless channel */
2148 	if (chan->chan_type == L2CAP_CHAN_CONN_LESS) {
2149 		skb = l2cap_create_connless_pdu(chan, msg, len, priority);
2150 		if (IS_ERR(skb))
2151 			return PTR_ERR(skb);
2152 
2153 		l2cap_do_send(chan, skb);
2154 		return len;
2155 	}
2156 
2157 	switch (chan->mode) {
2158 	case L2CAP_MODE_BASIC:
2159 		/* Check outgoing MTU */
2160 		if (len > chan->omtu)
2161 			return -EMSGSIZE;
2162 
2163 		/* Create a basic PDU */
2164 		skb = l2cap_create_basic_pdu(chan, msg, len, priority);
2165 		if (IS_ERR(skb))
2166 			return PTR_ERR(skb);
2167 
2168 		l2cap_do_send(chan, skb);
2169 		err = len;
2170 		break;
2171 
2172 	case L2CAP_MODE_ERTM:
2173 	case L2CAP_MODE_STREAMING:
2174 		/* Check outgoing MTU */
2175 		if (len > chan->omtu) {
2176 			err = -EMSGSIZE;
2177 			break;
2178 		}
2179 
2180 		__skb_queue_head_init(&seg_queue);
2181 
2182 		/* Do segmentation before calling in to the state machine,
2183 		 * since it's possible to block while waiting for memory
2184 		 * allocation.
2185 		 */
2186 		err = l2cap_segment_sdu(chan, &seg_queue, msg, len);
2187 
2188 		/* The channel could have been closed while segmenting,
2189 		 * check that it is still connected.
2190 		 */
2191 		if (chan->state != BT_CONNECTED) {
2192 			__skb_queue_purge(&seg_queue);
2193 			err = -ENOTCONN;
2194 		}
2195 
2196 		if (err)
2197 			break;
2198 
2199 		if (chan->mode == L2CAP_MODE_ERTM)
2200 			l2cap_tx(chan, NULL, &seg_queue, L2CAP_EV_DATA_REQUEST);
2201 		else
2202 			l2cap_streaming_send(chan, &seg_queue);
2203 
2204 		err = len;
2205 
2206 		/* If the skbs were not queued for sending, they'll still be in
2207 		 * seg_queue and need to be purged.
2208 		 */
2209 		__skb_queue_purge(&seg_queue);
2210 		break;
2211 
2212 	default:
2213 		BT_DBG("bad state %1.1x", chan->mode);
2214 		err = -EBADFD;
2215 	}
2216 
2217 	return err;
2218 }
2219 
2220 static void l2cap_send_srej(struct l2cap_chan *chan, u16 txseq)
2221 {
2222 	struct l2cap_ctrl control;
2223 	u16 seq;
2224 
2225 	BT_DBG("chan %p, txseq %u", chan, txseq);
2226 
2227 	memset(&control, 0, sizeof(control));
2228 	control.sframe = 1;
2229 	control.super = L2CAP_SUPER_SREJ;
2230 
2231 	for (seq = chan->expected_tx_seq; seq != txseq;
2232 	     seq = __next_seq(chan, seq)) {
2233 		if (!l2cap_ertm_seq_in_queue(&chan->srej_q, seq)) {
2234 			control.reqseq = seq;
2235 			l2cap_send_sframe(chan, &control);
2236 			l2cap_seq_list_append(&chan->srej_list, seq);
2237 		}
2238 	}
2239 
2240 	chan->expected_tx_seq = __next_seq(chan, txseq);
2241 }
2242 
2243 static void l2cap_send_srej_tail(struct l2cap_chan *chan)
2244 {
2245 	struct l2cap_ctrl control;
2246 
2247 	BT_DBG("chan %p", chan);
2248 
2249 	if (chan->srej_list.tail == L2CAP_SEQ_LIST_CLEAR)
2250 		return;
2251 
2252 	memset(&control, 0, sizeof(control));
2253 	control.sframe = 1;
2254 	control.super = L2CAP_SUPER_SREJ;
2255 	control.reqseq = chan->srej_list.tail;
2256 	l2cap_send_sframe(chan, &control);
2257 }
2258 
2259 static void l2cap_send_srej_list(struct l2cap_chan *chan, u16 txseq)
2260 {
2261 	struct l2cap_ctrl control;
2262 	u16 initial_head;
2263 	u16 seq;
2264 
2265 	BT_DBG("chan %p, txseq %u", chan, txseq);
2266 
2267 	memset(&control, 0, sizeof(control));
2268 	control.sframe = 1;
2269 	control.super = L2CAP_SUPER_SREJ;
2270 
2271 	/* Capture initial list head to allow only one pass through the list. */
2272 	initial_head = chan->srej_list.head;
2273 
2274 	do {
2275 		seq = l2cap_seq_list_pop(&chan->srej_list);
2276 		if (seq == txseq || seq == L2CAP_SEQ_LIST_CLEAR)
2277 			break;
2278 
2279 		control.reqseq = seq;
2280 		l2cap_send_sframe(chan, &control);
2281 		l2cap_seq_list_append(&chan->srej_list, seq);
2282 	} while (chan->srej_list.head != initial_head);
2283 }
2284 
2285 static void l2cap_process_reqseq(struct l2cap_chan *chan, u16 reqseq)
2286 {
2287 	struct sk_buff *acked_skb;
2288 	u16 ackseq;
2289 
2290 	BT_DBG("chan %p, reqseq %u", chan, reqseq);
2291 
2292 	if (chan->unacked_frames == 0 || reqseq == chan->expected_ack_seq)
2293 		return;
2294 
2295 	BT_DBG("expected_ack_seq %u, unacked_frames %u",
2296 	       chan->expected_ack_seq, chan->unacked_frames);
2297 
2298 	for (ackseq = chan->expected_ack_seq; ackseq != reqseq;
2299 	     ackseq = __next_seq(chan, ackseq)) {
2300 
2301 		acked_skb = l2cap_ertm_seq_in_queue(&chan->tx_q, ackseq);
2302 		if (acked_skb) {
2303 			skb_unlink(acked_skb, &chan->tx_q);
2304 			kfree_skb(acked_skb);
2305 			chan->unacked_frames--;
2306 		}
2307 	}
2308 
2309 	chan->expected_ack_seq = reqseq;
2310 
2311 	if (chan->unacked_frames == 0)
2312 		__clear_retrans_timer(chan);
2313 
2314 	BT_DBG("unacked_frames %u", chan->unacked_frames);
2315 }
2316 
2317 static void l2cap_abort_rx_srej_sent(struct l2cap_chan *chan)
2318 {
2319 	BT_DBG("chan %p", chan);
2320 
2321 	chan->expected_tx_seq = chan->buffer_seq;
2322 	l2cap_seq_list_clear(&chan->srej_list);
2323 	skb_queue_purge(&chan->srej_q);
2324 	chan->rx_state = L2CAP_RX_STATE_RECV;
2325 }
2326 
2327 static void l2cap_tx_state_xmit(struct l2cap_chan *chan,
2328 				struct l2cap_ctrl *control,
2329 				struct sk_buff_head *skbs, u8 event)
2330 {
2331 	BT_DBG("chan %p, control %p, skbs %p, event %d", chan, control, skbs,
2332 	       event);
2333 
2334 	switch (event) {
2335 	case L2CAP_EV_DATA_REQUEST:
2336 		if (chan->tx_send_head == NULL)
2337 			chan->tx_send_head = skb_peek(skbs);
2338 
2339 		skb_queue_splice_tail_init(skbs, &chan->tx_q);
2340 		l2cap_ertm_send(chan);
2341 		break;
2342 	case L2CAP_EV_LOCAL_BUSY_DETECTED:
2343 		BT_DBG("Enter LOCAL_BUSY");
2344 		set_bit(CONN_LOCAL_BUSY, &chan->conn_state);
2345 
2346 		if (chan->rx_state == L2CAP_RX_STATE_SREJ_SENT) {
2347 			/* The SREJ_SENT state must be aborted if we are to
2348 			 * enter the LOCAL_BUSY state.
2349 			 */
2350 			l2cap_abort_rx_srej_sent(chan);
2351 		}
2352 
2353 		l2cap_send_ack(chan);
2354 
2355 		break;
2356 	case L2CAP_EV_LOCAL_BUSY_CLEAR:
2357 		BT_DBG("Exit LOCAL_BUSY");
2358 		clear_bit(CONN_LOCAL_BUSY, &chan->conn_state);
2359 
2360 		if (test_bit(CONN_RNR_SENT, &chan->conn_state)) {
2361 			struct l2cap_ctrl local_control;
2362 
2363 			memset(&local_control, 0, sizeof(local_control));
2364 			local_control.sframe = 1;
2365 			local_control.super = L2CAP_SUPER_RR;
2366 			local_control.poll = 1;
2367 			local_control.reqseq = chan->buffer_seq;
2368 			l2cap_send_sframe(chan, &local_control);
2369 
2370 			chan->retry_count = 1;
2371 			__set_monitor_timer(chan);
2372 			chan->tx_state = L2CAP_TX_STATE_WAIT_F;
2373 		}
2374 		break;
2375 	case L2CAP_EV_RECV_REQSEQ_AND_FBIT:
2376 		l2cap_process_reqseq(chan, control->reqseq);
2377 		break;
2378 	case L2CAP_EV_EXPLICIT_POLL:
2379 		l2cap_send_rr_or_rnr(chan, 1);
2380 		chan->retry_count = 1;
2381 		__set_monitor_timer(chan);
2382 		__clear_ack_timer(chan);
2383 		chan->tx_state = L2CAP_TX_STATE_WAIT_F;
2384 		break;
2385 	case L2CAP_EV_RETRANS_TO:
2386 		l2cap_send_rr_or_rnr(chan, 1);
2387 		chan->retry_count = 1;
2388 		__set_monitor_timer(chan);
2389 		chan->tx_state = L2CAP_TX_STATE_WAIT_F;
2390 		break;
2391 	case L2CAP_EV_RECV_FBIT:
2392 		/* Nothing to process */
2393 		break;
2394 	default:
2395 		break;
2396 	}
2397 }
2398 
2399 static void l2cap_tx_state_wait_f(struct l2cap_chan *chan,
2400 				  struct l2cap_ctrl *control,
2401 				  struct sk_buff_head *skbs, u8 event)
2402 {
2403 	BT_DBG("chan %p, control %p, skbs %p, event %d", chan, control, skbs,
2404 	       event);
2405 
2406 	switch (event) {
2407 	case L2CAP_EV_DATA_REQUEST:
2408 		if (chan->tx_send_head == NULL)
2409 			chan->tx_send_head = skb_peek(skbs);
2410 		/* Queue data, but don't send. */
2411 		skb_queue_splice_tail_init(skbs, &chan->tx_q);
2412 		break;
2413 	case L2CAP_EV_LOCAL_BUSY_DETECTED:
2414 		BT_DBG("Enter LOCAL_BUSY");
2415 		set_bit(CONN_LOCAL_BUSY, &chan->conn_state);
2416 
2417 		if (chan->rx_state == L2CAP_RX_STATE_SREJ_SENT) {
2418 			/* The SREJ_SENT state must be aborted if we are to
2419 			 * enter the LOCAL_BUSY state.
2420 			 */
2421 			l2cap_abort_rx_srej_sent(chan);
2422 		}
2423 
2424 		l2cap_send_ack(chan);
2425 
2426 		break;
2427 	case L2CAP_EV_LOCAL_BUSY_CLEAR:
2428 		BT_DBG("Exit LOCAL_BUSY");
2429 		clear_bit(CONN_LOCAL_BUSY, &chan->conn_state);
2430 
2431 		if (test_bit(CONN_RNR_SENT, &chan->conn_state)) {
2432 			struct l2cap_ctrl local_control;
2433 			memset(&local_control, 0, sizeof(local_control));
2434 			local_control.sframe = 1;
2435 			local_control.super = L2CAP_SUPER_RR;
2436 			local_control.poll = 1;
2437 			local_control.reqseq = chan->buffer_seq;
2438 			l2cap_send_sframe(chan, &local_control);
2439 
2440 			chan->retry_count = 1;
2441 			__set_monitor_timer(chan);
2442 			chan->tx_state = L2CAP_TX_STATE_WAIT_F;
2443 		}
2444 		break;
2445 	case L2CAP_EV_RECV_REQSEQ_AND_FBIT:
2446 		l2cap_process_reqseq(chan, control->reqseq);
2447 
2448 		/* Fall through */
2449 
2450 	case L2CAP_EV_RECV_FBIT:
2451 		if (control && control->final) {
2452 			__clear_monitor_timer(chan);
2453 			if (chan->unacked_frames > 0)
2454 				__set_retrans_timer(chan);
2455 			chan->retry_count = 0;
2456 			chan->tx_state = L2CAP_TX_STATE_XMIT;
2457 			BT_DBG("recv fbit tx_state 0x2.2%x", chan->tx_state);
2458 		}
2459 		break;
2460 	case L2CAP_EV_EXPLICIT_POLL:
2461 		/* Ignore */
2462 		break;
2463 	case L2CAP_EV_MONITOR_TO:
2464 		if (chan->max_tx == 0 || chan->retry_count < chan->max_tx) {
2465 			l2cap_send_rr_or_rnr(chan, 1);
2466 			__set_monitor_timer(chan);
2467 			chan->retry_count++;
2468 		} else {
2469 			l2cap_send_disconn_req(chan->conn, chan, ECONNABORTED);
2470 		}
2471 		break;
2472 	default:
2473 		break;
2474 	}
2475 }
2476 
2477 static void l2cap_tx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
2478 		     struct sk_buff_head *skbs, u8 event)
2479 {
2480 	BT_DBG("chan %p, control %p, skbs %p, event %d, state %d",
2481 	       chan, control, skbs, event, chan->tx_state);
2482 
2483 	switch (chan->tx_state) {
2484 	case L2CAP_TX_STATE_XMIT:
2485 		l2cap_tx_state_xmit(chan, control, skbs, event);
2486 		break;
2487 	case L2CAP_TX_STATE_WAIT_F:
2488 		l2cap_tx_state_wait_f(chan, control, skbs, event);
2489 		break;
2490 	default:
2491 		/* Ignore event */
2492 		break;
2493 	}
2494 }
2495 
2496 static void l2cap_pass_to_tx(struct l2cap_chan *chan,
2497 			     struct l2cap_ctrl *control)
2498 {
2499 	BT_DBG("chan %p, control %p", chan, control);
2500 	l2cap_tx(chan, control, NULL, L2CAP_EV_RECV_REQSEQ_AND_FBIT);
2501 }
2502 
2503 static void l2cap_pass_to_tx_fbit(struct l2cap_chan *chan,
2504 				  struct l2cap_ctrl *control)
2505 {
2506 	BT_DBG("chan %p, control %p", chan, control);
2507 	l2cap_tx(chan, control, NULL, L2CAP_EV_RECV_FBIT);
2508 }
2509 
2510 /* Copy frame to all raw sockets on that connection */
2511 static void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb)
2512 {
2513 	struct sk_buff *nskb;
2514 	struct l2cap_chan *chan;
2515 
2516 	BT_DBG("conn %p", conn);
2517 
2518 	mutex_lock(&conn->chan_lock);
2519 
2520 	list_for_each_entry(chan, &conn->chan_l, list) {
2521 		struct sock *sk = chan->sk;
2522 		if (chan->chan_type != L2CAP_CHAN_RAW)
2523 			continue;
2524 
2525 		/* Don't send frame to the socket it came from */
2526 		if (skb->sk == sk)
2527 			continue;
2528 		nskb = skb_clone(skb, GFP_ATOMIC);
2529 		if (!nskb)
2530 			continue;
2531 
2532 		if (chan->ops->recv(chan, nskb))
2533 			kfree_skb(nskb);
2534 	}
2535 
2536 	mutex_unlock(&conn->chan_lock);
2537 }
2538 
2539 /* ---- L2CAP signalling commands ---- */
2540 static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn, u8 code,
2541 				       u8 ident, u16 dlen, void *data)
2542 {
2543 	struct sk_buff *skb, **frag;
2544 	struct l2cap_cmd_hdr *cmd;
2545 	struct l2cap_hdr *lh;
2546 	int len, count;
2547 
2548 	BT_DBG("conn %p, code 0x%2.2x, ident 0x%2.2x, len %u",
2549 	       conn, code, ident, dlen);
2550 
2551 	len = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + dlen;
2552 	count = min_t(unsigned int, conn->mtu, len);
2553 
2554 	skb = bt_skb_alloc(count, GFP_ATOMIC);
2555 	if (!skb)
2556 		return NULL;
2557 
2558 	lh = (struct l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE);
2559 	lh->len = cpu_to_le16(L2CAP_CMD_HDR_SIZE + dlen);
2560 
2561 	if (conn->hcon->type == LE_LINK)
2562 		lh->cid = __constant_cpu_to_le16(L2CAP_CID_LE_SIGNALING);
2563 	else
2564 		lh->cid = __constant_cpu_to_le16(L2CAP_CID_SIGNALING);
2565 
2566 	cmd = (struct l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE);
2567 	cmd->code  = code;
2568 	cmd->ident = ident;
2569 	cmd->len   = cpu_to_le16(dlen);
2570 
2571 	if (dlen) {
2572 		count -= L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE;
2573 		memcpy(skb_put(skb, count), data, count);
2574 		data += count;
2575 	}
2576 
2577 	len -= skb->len;
2578 
2579 	/* Continuation fragments (no L2CAP header) */
2580 	frag = &skb_shinfo(skb)->frag_list;
2581 	while (len) {
2582 		count = min_t(unsigned int, conn->mtu, len);
2583 
2584 		*frag = bt_skb_alloc(count, GFP_ATOMIC);
2585 		if (!*frag)
2586 			goto fail;
2587 
2588 		memcpy(skb_put(*frag, count), data, count);
2589 
2590 		len  -= count;
2591 		data += count;
2592 
2593 		frag = &(*frag)->next;
2594 	}
2595 
2596 	return skb;
2597 
2598 fail:
2599 	kfree_skb(skb);
2600 	return NULL;
2601 }
2602 
2603 static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned long *val)
2604 {
2605 	struct l2cap_conf_opt *opt = *ptr;
2606 	int len;
2607 
2608 	len = L2CAP_CONF_OPT_SIZE + opt->len;
2609 	*ptr += len;
2610 
2611 	*type = opt->type;
2612 	*olen = opt->len;
2613 
2614 	switch (opt->len) {
2615 	case 1:
2616 		*val = *((u8 *) opt->val);
2617 		break;
2618 
2619 	case 2:
2620 		*val = get_unaligned_le16(opt->val);
2621 		break;
2622 
2623 	case 4:
2624 		*val = get_unaligned_le32(opt->val);
2625 		break;
2626 
2627 	default:
2628 		*val = (unsigned long) opt->val;
2629 		break;
2630 	}
2631 
2632 	BT_DBG("type 0x%2.2x len %u val 0x%lx", *type, opt->len, *val);
2633 	return len;
2634 }
2635 
2636 static void l2cap_add_conf_opt(void **ptr, u8 type, u8 len, unsigned long val)
2637 {
2638 	struct l2cap_conf_opt *opt = *ptr;
2639 
2640 	BT_DBG("type 0x%2.2x len %u val 0x%lx", type, len, val);
2641 
2642 	opt->type = type;
2643 	opt->len  = len;
2644 
2645 	switch (len) {
2646 	case 1:
2647 		*((u8 *) opt->val)  = val;
2648 		break;
2649 
2650 	case 2:
2651 		put_unaligned_le16(val, opt->val);
2652 		break;
2653 
2654 	case 4:
2655 		put_unaligned_le32(val, opt->val);
2656 		break;
2657 
2658 	default:
2659 		memcpy(opt->val, (void *) val, len);
2660 		break;
2661 	}
2662 
2663 	*ptr += L2CAP_CONF_OPT_SIZE + len;
2664 }
2665 
2666 static void l2cap_add_opt_efs(void **ptr, struct l2cap_chan *chan)
2667 {
2668 	struct l2cap_conf_efs efs;
2669 
2670 	switch (chan->mode) {
2671 	case L2CAP_MODE_ERTM:
2672 		efs.id		= chan->local_id;
2673 		efs.stype	= chan->local_stype;
2674 		efs.msdu	= cpu_to_le16(chan->local_msdu);
2675 		efs.sdu_itime	= cpu_to_le32(chan->local_sdu_itime);
2676 		efs.acc_lat	= __constant_cpu_to_le32(L2CAP_DEFAULT_ACC_LAT);
2677 		efs.flush_to	= __constant_cpu_to_le32(L2CAP_DEFAULT_FLUSH_TO);
2678 		break;
2679 
2680 	case L2CAP_MODE_STREAMING:
2681 		efs.id		= 1;
2682 		efs.stype	= L2CAP_SERV_BESTEFFORT;
2683 		efs.msdu	= cpu_to_le16(chan->local_msdu);
2684 		efs.sdu_itime	= cpu_to_le32(chan->local_sdu_itime);
2685 		efs.acc_lat	= 0;
2686 		efs.flush_to	= 0;
2687 		break;
2688 
2689 	default:
2690 		return;
2691 	}
2692 
2693 	l2cap_add_conf_opt(ptr, L2CAP_CONF_EFS, sizeof(efs),
2694 							(unsigned long) &efs);
2695 }
2696 
2697 static void l2cap_ack_timeout(struct work_struct *work)
2698 {
2699 	struct l2cap_chan *chan = container_of(work, struct l2cap_chan,
2700 					       ack_timer.work);
2701 	u16 frames_to_ack;
2702 
2703 	BT_DBG("chan %p", chan);
2704 
2705 	l2cap_chan_lock(chan);
2706 
2707 	frames_to_ack = __seq_offset(chan, chan->buffer_seq,
2708 				     chan->last_acked_seq);
2709 
2710 	if (frames_to_ack)
2711 		l2cap_send_rr_or_rnr(chan, 0);
2712 
2713 	l2cap_chan_unlock(chan);
2714 	l2cap_chan_put(chan);
2715 }
2716 
2717 int l2cap_ertm_init(struct l2cap_chan *chan)
2718 {
2719 	int err;
2720 
2721 	chan->next_tx_seq = 0;
2722 	chan->expected_tx_seq = 0;
2723 	chan->expected_ack_seq = 0;
2724 	chan->unacked_frames = 0;
2725 	chan->buffer_seq = 0;
2726 	chan->frames_sent = 0;
2727 	chan->last_acked_seq = 0;
2728 	chan->sdu = NULL;
2729 	chan->sdu_last_frag = NULL;
2730 	chan->sdu_len = 0;
2731 
2732 	skb_queue_head_init(&chan->tx_q);
2733 
2734 	if (chan->mode != L2CAP_MODE_ERTM)
2735 		return 0;
2736 
2737 	chan->rx_state = L2CAP_RX_STATE_RECV;
2738 	chan->tx_state = L2CAP_TX_STATE_XMIT;
2739 
2740 	INIT_DELAYED_WORK(&chan->retrans_timer, l2cap_retrans_timeout);
2741 	INIT_DELAYED_WORK(&chan->monitor_timer, l2cap_monitor_timeout);
2742 	INIT_DELAYED_WORK(&chan->ack_timer, l2cap_ack_timeout);
2743 
2744 	skb_queue_head_init(&chan->srej_q);
2745 
2746 	err = l2cap_seq_list_init(&chan->srej_list, chan->tx_win);
2747 	if (err < 0)
2748 		return err;
2749 
2750 	err = l2cap_seq_list_init(&chan->retrans_list, chan->remote_tx_win);
2751 	if (err < 0)
2752 		l2cap_seq_list_free(&chan->srej_list);
2753 
2754 	return err;
2755 }
2756 
2757 static inline __u8 l2cap_select_mode(__u8 mode, __u16 remote_feat_mask)
2758 {
2759 	switch (mode) {
2760 	case L2CAP_MODE_STREAMING:
2761 	case L2CAP_MODE_ERTM:
2762 		if (l2cap_mode_supported(mode, remote_feat_mask))
2763 			return mode;
2764 		/* fall through */
2765 	default:
2766 		return L2CAP_MODE_BASIC;
2767 	}
2768 }
2769 
2770 static inline bool __l2cap_ews_supported(struct l2cap_chan *chan)
2771 {
2772 	return enable_hs && chan->conn->feat_mask & L2CAP_FEAT_EXT_WINDOW;
2773 }
2774 
2775 static inline bool __l2cap_efs_supported(struct l2cap_chan *chan)
2776 {
2777 	return enable_hs && chan->conn->feat_mask & L2CAP_FEAT_EXT_FLOW;
2778 }
2779 
2780 static inline void l2cap_txwin_setup(struct l2cap_chan *chan)
2781 {
2782 	if (chan->tx_win > L2CAP_DEFAULT_TX_WINDOW &&
2783 						__l2cap_ews_supported(chan)) {
2784 		/* use extended control field */
2785 		set_bit(FLAG_EXT_CTRL, &chan->flags);
2786 		chan->tx_win_max = L2CAP_DEFAULT_EXT_WINDOW;
2787 	} else {
2788 		chan->tx_win = min_t(u16, chan->tx_win,
2789 						L2CAP_DEFAULT_TX_WINDOW);
2790 		chan->tx_win_max = L2CAP_DEFAULT_TX_WINDOW;
2791 	}
2792 	chan->ack_win = chan->tx_win;
2793 }
2794 
2795 static int l2cap_build_conf_req(struct l2cap_chan *chan, void *data)
2796 {
2797 	struct l2cap_conf_req *req = data;
2798 	struct l2cap_conf_rfc rfc = { .mode = chan->mode };
2799 	void *ptr = req->data;
2800 	u16 size;
2801 
2802 	BT_DBG("chan %p", chan);
2803 
2804 	if (chan->num_conf_req || chan->num_conf_rsp)
2805 		goto done;
2806 
2807 	switch (chan->mode) {
2808 	case L2CAP_MODE_STREAMING:
2809 	case L2CAP_MODE_ERTM:
2810 		if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state))
2811 			break;
2812 
2813 		if (__l2cap_efs_supported(chan))
2814 			set_bit(FLAG_EFS_ENABLE, &chan->flags);
2815 
2816 		/* fall through */
2817 	default:
2818 		chan->mode = l2cap_select_mode(rfc.mode, chan->conn->feat_mask);
2819 		break;
2820 	}
2821 
2822 done:
2823 	if (chan->imtu != L2CAP_DEFAULT_MTU)
2824 		l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, chan->imtu);
2825 
2826 	switch (chan->mode) {
2827 	case L2CAP_MODE_BASIC:
2828 		if (!(chan->conn->feat_mask & L2CAP_FEAT_ERTM) &&
2829 				!(chan->conn->feat_mask & L2CAP_FEAT_STREAMING))
2830 			break;
2831 
2832 		rfc.mode            = L2CAP_MODE_BASIC;
2833 		rfc.txwin_size      = 0;
2834 		rfc.max_transmit    = 0;
2835 		rfc.retrans_timeout = 0;
2836 		rfc.monitor_timeout = 0;
2837 		rfc.max_pdu_size    = 0;
2838 
2839 		l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc),
2840 							(unsigned long) &rfc);
2841 		break;
2842 
2843 	case L2CAP_MODE_ERTM:
2844 		rfc.mode            = L2CAP_MODE_ERTM;
2845 		rfc.max_transmit    = chan->max_tx;
2846 		rfc.retrans_timeout = 0;
2847 		rfc.monitor_timeout = 0;
2848 
2849 		size = min_t(u16, L2CAP_DEFAULT_MAX_PDU_SIZE, chan->conn->mtu -
2850 						L2CAP_EXT_HDR_SIZE -
2851 						L2CAP_SDULEN_SIZE -
2852 						L2CAP_FCS_SIZE);
2853 		rfc.max_pdu_size = cpu_to_le16(size);
2854 
2855 		l2cap_txwin_setup(chan);
2856 
2857 		rfc.txwin_size = min_t(u16, chan->tx_win,
2858 						L2CAP_DEFAULT_TX_WINDOW);
2859 
2860 		l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc),
2861 							(unsigned long) &rfc);
2862 
2863 		if (test_bit(FLAG_EFS_ENABLE, &chan->flags))
2864 			l2cap_add_opt_efs(&ptr, chan);
2865 
2866 		if (!(chan->conn->feat_mask & L2CAP_FEAT_FCS))
2867 			break;
2868 
2869 		if (chan->fcs == L2CAP_FCS_NONE ||
2870 				test_bit(CONF_NO_FCS_RECV, &chan->conf_state)) {
2871 			chan->fcs = L2CAP_FCS_NONE;
2872 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_FCS, 1, chan->fcs);
2873 		}
2874 
2875 		if (test_bit(FLAG_EXT_CTRL, &chan->flags))
2876 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_EWS, 2,
2877 								chan->tx_win);
2878 		break;
2879 
2880 	case L2CAP_MODE_STREAMING:
2881 		l2cap_txwin_setup(chan);
2882 		rfc.mode            = L2CAP_MODE_STREAMING;
2883 		rfc.txwin_size      = 0;
2884 		rfc.max_transmit    = 0;
2885 		rfc.retrans_timeout = 0;
2886 		rfc.monitor_timeout = 0;
2887 
2888 		size = min_t(u16, L2CAP_DEFAULT_MAX_PDU_SIZE, chan->conn->mtu -
2889 						L2CAP_EXT_HDR_SIZE -
2890 						L2CAP_SDULEN_SIZE -
2891 						L2CAP_FCS_SIZE);
2892 		rfc.max_pdu_size = cpu_to_le16(size);
2893 
2894 		l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc),
2895 							(unsigned long) &rfc);
2896 
2897 		if (test_bit(FLAG_EFS_ENABLE, &chan->flags))
2898 			l2cap_add_opt_efs(&ptr, chan);
2899 
2900 		if (!(chan->conn->feat_mask & L2CAP_FEAT_FCS))
2901 			break;
2902 
2903 		if (chan->fcs == L2CAP_FCS_NONE ||
2904 				test_bit(CONF_NO_FCS_RECV, &chan->conf_state)) {
2905 			chan->fcs = L2CAP_FCS_NONE;
2906 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_FCS, 1, chan->fcs);
2907 		}
2908 		break;
2909 	}
2910 
2911 	req->dcid  = cpu_to_le16(chan->dcid);
2912 	req->flags = __constant_cpu_to_le16(0);
2913 
2914 	return ptr - data;
2915 }
2916 
2917 static int l2cap_parse_conf_req(struct l2cap_chan *chan, void *data)
2918 {
2919 	struct l2cap_conf_rsp *rsp = data;
2920 	void *ptr = rsp->data;
2921 	void *req = chan->conf_req;
2922 	int len = chan->conf_len;
2923 	int type, hint, olen;
2924 	unsigned long val;
2925 	struct l2cap_conf_rfc rfc = { .mode = L2CAP_MODE_BASIC };
2926 	struct l2cap_conf_efs efs;
2927 	u8 remote_efs = 0;
2928 	u16 mtu = L2CAP_DEFAULT_MTU;
2929 	u16 result = L2CAP_CONF_SUCCESS;
2930 	u16 size;
2931 
2932 	BT_DBG("chan %p", chan);
2933 
2934 	while (len >= L2CAP_CONF_OPT_SIZE) {
2935 		len -= l2cap_get_conf_opt(&req, &type, &olen, &val);
2936 
2937 		hint  = type & L2CAP_CONF_HINT;
2938 		type &= L2CAP_CONF_MASK;
2939 
2940 		switch (type) {
2941 		case L2CAP_CONF_MTU:
2942 			mtu = val;
2943 			break;
2944 
2945 		case L2CAP_CONF_FLUSH_TO:
2946 			chan->flush_to = val;
2947 			break;
2948 
2949 		case L2CAP_CONF_QOS:
2950 			break;
2951 
2952 		case L2CAP_CONF_RFC:
2953 			if (olen == sizeof(rfc))
2954 				memcpy(&rfc, (void *) val, olen);
2955 			break;
2956 
2957 		case L2CAP_CONF_FCS:
2958 			if (val == L2CAP_FCS_NONE)
2959 				set_bit(CONF_NO_FCS_RECV, &chan->conf_state);
2960 			break;
2961 
2962 		case L2CAP_CONF_EFS:
2963 			remote_efs = 1;
2964 			if (olen == sizeof(efs))
2965 				memcpy(&efs, (void *) val, olen);
2966 			break;
2967 
2968 		case L2CAP_CONF_EWS:
2969 			if (!enable_hs)
2970 				return -ECONNREFUSED;
2971 
2972 			set_bit(FLAG_EXT_CTRL, &chan->flags);
2973 			set_bit(CONF_EWS_RECV, &chan->conf_state);
2974 			chan->tx_win_max = L2CAP_DEFAULT_EXT_WINDOW;
2975 			chan->remote_tx_win = val;
2976 			break;
2977 
2978 		default:
2979 			if (hint)
2980 				break;
2981 
2982 			result = L2CAP_CONF_UNKNOWN;
2983 			*((u8 *) ptr++) = type;
2984 			break;
2985 		}
2986 	}
2987 
2988 	if (chan->num_conf_rsp || chan->num_conf_req > 1)
2989 		goto done;
2990 
2991 	switch (chan->mode) {
2992 	case L2CAP_MODE_STREAMING:
2993 	case L2CAP_MODE_ERTM:
2994 		if (!test_bit(CONF_STATE2_DEVICE, &chan->conf_state)) {
2995 			chan->mode = l2cap_select_mode(rfc.mode,
2996 					chan->conn->feat_mask);
2997 			break;
2998 		}
2999 
3000 		if (remote_efs) {
3001 			if (__l2cap_efs_supported(chan))
3002 				set_bit(FLAG_EFS_ENABLE, &chan->flags);
3003 			else
3004 				return -ECONNREFUSED;
3005 		}
3006 
3007 		if (chan->mode != rfc.mode)
3008 			return -ECONNREFUSED;
3009 
3010 		break;
3011 	}
3012 
3013 done:
3014 	if (chan->mode != rfc.mode) {
3015 		result = L2CAP_CONF_UNACCEPT;
3016 		rfc.mode = chan->mode;
3017 
3018 		if (chan->num_conf_rsp == 1)
3019 			return -ECONNREFUSED;
3020 
3021 		l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
3022 					sizeof(rfc), (unsigned long) &rfc);
3023 	}
3024 
3025 	if (result == L2CAP_CONF_SUCCESS) {
3026 		/* Configure output options and let the other side know
3027 		 * which ones we don't like. */
3028 
3029 		if (mtu < L2CAP_DEFAULT_MIN_MTU)
3030 			result = L2CAP_CONF_UNACCEPT;
3031 		else {
3032 			chan->omtu = mtu;
3033 			set_bit(CONF_MTU_DONE, &chan->conf_state);
3034 		}
3035 		l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, chan->omtu);
3036 
3037 		if (remote_efs) {
3038 			if (chan->local_stype != L2CAP_SERV_NOTRAFIC &&
3039 					efs.stype != L2CAP_SERV_NOTRAFIC &&
3040 					efs.stype != chan->local_stype) {
3041 
3042 				result = L2CAP_CONF_UNACCEPT;
3043 
3044 				if (chan->num_conf_req >= 1)
3045 					return -ECONNREFUSED;
3046 
3047 				l2cap_add_conf_opt(&ptr, L2CAP_CONF_EFS,
3048 							sizeof(efs),
3049 							(unsigned long) &efs);
3050 			} else {
3051 				/* Send PENDING Conf Rsp */
3052 				result = L2CAP_CONF_PENDING;
3053 				set_bit(CONF_LOC_CONF_PEND, &chan->conf_state);
3054 			}
3055 		}
3056 
3057 		switch (rfc.mode) {
3058 		case L2CAP_MODE_BASIC:
3059 			chan->fcs = L2CAP_FCS_NONE;
3060 			set_bit(CONF_MODE_DONE, &chan->conf_state);
3061 			break;
3062 
3063 		case L2CAP_MODE_ERTM:
3064 			if (!test_bit(CONF_EWS_RECV, &chan->conf_state))
3065 				chan->remote_tx_win = rfc.txwin_size;
3066 			else
3067 				rfc.txwin_size = L2CAP_DEFAULT_TX_WINDOW;
3068 
3069 			chan->remote_max_tx = rfc.max_transmit;
3070 
3071 			size = min_t(u16, le16_to_cpu(rfc.max_pdu_size),
3072 						chan->conn->mtu -
3073 						L2CAP_EXT_HDR_SIZE -
3074 						L2CAP_SDULEN_SIZE -
3075 						L2CAP_FCS_SIZE);
3076 			rfc.max_pdu_size = cpu_to_le16(size);
3077 			chan->remote_mps = size;
3078 
3079 			rfc.retrans_timeout =
3080 				__constant_cpu_to_le16(L2CAP_DEFAULT_RETRANS_TO);
3081 			rfc.monitor_timeout =
3082 				__constant_cpu_to_le16(L2CAP_DEFAULT_MONITOR_TO);
3083 
3084 			set_bit(CONF_MODE_DONE, &chan->conf_state);
3085 
3086 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
3087 					sizeof(rfc), (unsigned long) &rfc);
3088 
3089 			if (test_bit(FLAG_EFS_ENABLE, &chan->flags)) {
3090 				chan->remote_id = efs.id;
3091 				chan->remote_stype = efs.stype;
3092 				chan->remote_msdu = le16_to_cpu(efs.msdu);
3093 				chan->remote_flush_to =
3094 						le32_to_cpu(efs.flush_to);
3095 				chan->remote_acc_lat =
3096 						le32_to_cpu(efs.acc_lat);
3097 				chan->remote_sdu_itime =
3098 					le32_to_cpu(efs.sdu_itime);
3099 				l2cap_add_conf_opt(&ptr, L2CAP_CONF_EFS,
3100 					sizeof(efs), (unsigned long) &efs);
3101 			}
3102 			break;
3103 
3104 		case L2CAP_MODE_STREAMING:
3105 			size = min_t(u16, le16_to_cpu(rfc.max_pdu_size),
3106 						chan->conn->mtu -
3107 						L2CAP_EXT_HDR_SIZE -
3108 						L2CAP_SDULEN_SIZE -
3109 						L2CAP_FCS_SIZE);
3110 			rfc.max_pdu_size = cpu_to_le16(size);
3111 			chan->remote_mps = size;
3112 
3113 			set_bit(CONF_MODE_DONE, &chan->conf_state);
3114 
3115 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
3116 					sizeof(rfc), (unsigned long) &rfc);
3117 
3118 			break;
3119 
3120 		default:
3121 			result = L2CAP_CONF_UNACCEPT;
3122 
3123 			memset(&rfc, 0, sizeof(rfc));
3124 			rfc.mode = chan->mode;
3125 		}
3126 
3127 		if (result == L2CAP_CONF_SUCCESS)
3128 			set_bit(CONF_OUTPUT_DONE, &chan->conf_state);
3129 	}
3130 	rsp->scid   = cpu_to_le16(chan->dcid);
3131 	rsp->result = cpu_to_le16(result);
3132 	rsp->flags  = __constant_cpu_to_le16(0);
3133 
3134 	return ptr - data;
3135 }
3136 
3137 static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, void *data, u16 *result)
3138 {
3139 	struct l2cap_conf_req *req = data;
3140 	void *ptr = req->data;
3141 	int type, olen;
3142 	unsigned long val;
3143 	struct l2cap_conf_rfc rfc = { .mode = L2CAP_MODE_BASIC };
3144 	struct l2cap_conf_efs efs;
3145 
3146 	BT_DBG("chan %p, rsp %p, len %d, req %p", chan, rsp, len, data);
3147 
3148 	while (len >= L2CAP_CONF_OPT_SIZE) {
3149 		len -= l2cap_get_conf_opt(&rsp, &type, &olen, &val);
3150 
3151 		switch (type) {
3152 		case L2CAP_CONF_MTU:
3153 			if (val < L2CAP_DEFAULT_MIN_MTU) {
3154 				*result = L2CAP_CONF_UNACCEPT;
3155 				chan->imtu = L2CAP_DEFAULT_MIN_MTU;
3156 			} else
3157 				chan->imtu = val;
3158 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, chan->imtu);
3159 			break;
3160 
3161 		case L2CAP_CONF_FLUSH_TO:
3162 			chan->flush_to = val;
3163 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO,
3164 							2, chan->flush_to);
3165 			break;
3166 
3167 		case L2CAP_CONF_RFC:
3168 			if (olen == sizeof(rfc))
3169 				memcpy(&rfc, (void *)val, olen);
3170 
3171 			if (test_bit(CONF_STATE2_DEVICE, &chan->conf_state) &&
3172 							rfc.mode != chan->mode)
3173 				return -ECONNREFUSED;
3174 
3175 			chan->fcs = 0;
3176 
3177 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
3178 					sizeof(rfc), (unsigned long) &rfc);
3179 			break;
3180 
3181 		case L2CAP_CONF_EWS:
3182 			chan->ack_win = min_t(u16, val, chan->ack_win);
3183 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_EWS, 2,
3184 					   chan->tx_win);
3185 			break;
3186 
3187 		case L2CAP_CONF_EFS:
3188 			if (olen == sizeof(efs))
3189 				memcpy(&efs, (void *)val, olen);
3190 
3191 			if (chan->local_stype != L2CAP_SERV_NOTRAFIC &&
3192 					efs.stype != L2CAP_SERV_NOTRAFIC &&
3193 					efs.stype != chan->local_stype)
3194 				return -ECONNREFUSED;
3195 
3196 			l2cap_add_conf_opt(&ptr, L2CAP_CONF_EFS,
3197 					sizeof(efs), (unsigned long) &efs);
3198 			break;
3199 		}
3200 	}
3201 
3202 	if (chan->mode == L2CAP_MODE_BASIC && chan->mode != rfc.mode)
3203 		return -ECONNREFUSED;
3204 
3205 	chan->mode = rfc.mode;
3206 
3207 	if (*result == L2CAP_CONF_SUCCESS || *result == L2CAP_CONF_PENDING) {
3208 		switch (rfc.mode) {
3209 		case L2CAP_MODE_ERTM:
3210 			chan->retrans_timeout = le16_to_cpu(rfc.retrans_timeout);
3211 			chan->monitor_timeout = le16_to_cpu(rfc.monitor_timeout);
3212 			chan->mps    = le16_to_cpu(rfc.max_pdu_size);
3213 			if (!test_bit(FLAG_EXT_CTRL, &chan->flags))
3214 				chan->ack_win = min_t(u16, chan->ack_win,
3215 						      rfc.txwin_size);
3216 
3217 			if (test_bit(FLAG_EFS_ENABLE, &chan->flags)) {
3218 				chan->local_msdu = le16_to_cpu(efs.msdu);
3219 				chan->local_sdu_itime =
3220 						le32_to_cpu(efs.sdu_itime);
3221 				chan->local_acc_lat = le32_to_cpu(efs.acc_lat);
3222 				chan->local_flush_to =
3223 						le32_to_cpu(efs.flush_to);
3224 			}
3225 			break;
3226 
3227 		case L2CAP_MODE_STREAMING:
3228 			chan->mps    = le16_to_cpu(rfc.max_pdu_size);
3229 		}
3230 	}
3231 
3232 	req->dcid   = cpu_to_le16(chan->dcid);
3233 	req->flags  = __constant_cpu_to_le16(0);
3234 
3235 	return ptr - data;
3236 }
3237 
3238 static int l2cap_build_conf_rsp(struct l2cap_chan *chan, void *data, u16 result, u16 flags)
3239 {
3240 	struct l2cap_conf_rsp *rsp = data;
3241 	void *ptr = rsp->data;
3242 
3243 	BT_DBG("chan %p", chan);
3244 
3245 	rsp->scid   = cpu_to_le16(chan->dcid);
3246 	rsp->result = cpu_to_le16(result);
3247 	rsp->flags  = cpu_to_le16(flags);
3248 
3249 	return ptr - data;
3250 }
3251 
3252 void __l2cap_connect_rsp_defer(struct l2cap_chan *chan)
3253 {
3254 	struct l2cap_conn_rsp rsp;
3255 	struct l2cap_conn *conn = chan->conn;
3256 	u8 buf[128];
3257 
3258 	rsp.scid   = cpu_to_le16(chan->dcid);
3259 	rsp.dcid   = cpu_to_le16(chan->scid);
3260 	rsp.result = __constant_cpu_to_le16(L2CAP_CR_SUCCESS);
3261 	rsp.status = __constant_cpu_to_le16(L2CAP_CS_NO_INFO);
3262 	l2cap_send_cmd(conn, chan->ident,
3263 				L2CAP_CONN_RSP, sizeof(rsp), &rsp);
3264 
3265 	if (test_and_set_bit(CONF_REQ_SENT, &chan->conf_state))
3266 		return;
3267 
3268 	l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ,
3269 			l2cap_build_conf_req(chan, buf), buf);
3270 	chan->num_conf_req++;
3271 }
3272 
3273 static void l2cap_conf_rfc_get(struct l2cap_chan *chan, void *rsp, int len)
3274 {
3275 	int type, olen;
3276 	unsigned long val;
3277 	/* Use sane default values in case a misbehaving remote device
3278 	 * did not send an RFC or extended window size option.
3279 	 */
3280 	u16 txwin_ext = chan->ack_win;
3281 	struct l2cap_conf_rfc rfc = {
3282 		.mode = chan->mode,
3283 		.retrans_timeout = __constant_cpu_to_le16(L2CAP_DEFAULT_RETRANS_TO),
3284 		.monitor_timeout = __constant_cpu_to_le16(L2CAP_DEFAULT_MONITOR_TO),
3285 		.max_pdu_size = cpu_to_le16(chan->imtu),
3286 		.txwin_size = min_t(u16, chan->ack_win, L2CAP_DEFAULT_TX_WINDOW),
3287 	};
3288 
3289 	BT_DBG("chan %p, rsp %p, len %d", chan, rsp, len);
3290 
3291 	if ((chan->mode != L2CAP_MODE_ERTM) && (chan->mode != L2CAP_MODE_STREAMING))
3292 		return;
3293 
3294 	while (len >= L2CAP_CONF_OPT_SIZE) {
3295 		len -= l2cap_get_conf_opt(&rsp, &type, &olen, &val);
3296 
3297 		switch (type) {
3298 		case L2CAP_CONF_RFC:
3299 			if (olen == sizeof(rfc))
3300 				memcpy(&rfc, (void *)val, olen);
3301 			break;
3302 		case L2CAP_CONF_EWS:
3303 			txwin_ext = val;
3304 			break;
3305 		}
3306 	}
3307 
3308 	switch (rfc.mode) {
3309 	case L2CAP_MODE_ERTM:
3310 		chan->retrans_timeout = le16_to_cpu(rfc.retrans_timeout);
3311 		chan->monitor_timeout = le16_to_cpu(rfc.monitor_timeout);
3312 		chan->mps = le16_to_cpu(rfc.max_pdu_size);
3313 		if (test_bit(FLAG_EXT_CTRL, &chan->flags))
3314 			chan->ack_win = min_t(u16, chan->ack_win, txwin_ext);
3315 		else
3316 			chan->ack_win = min_t(u16, chan->ack_win,
3317 					      rfc.txwin_size);
3318 		break;
3319 	case L2CAP_MODE_STREAMING:
3320 		chan->mps    = le16_to_cpu(rfc.max_pdu_size);
3321 	}
3322 }
3323 
3324 static inline int l2cap_command_rej(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3325 {
3326 	struct l2cap_cmd_rej_unk *rej = (struct l2cap_cmd_rej_unk *) data;
3327 
3328 	if (rej->reason != L2CAP_REJ_NOT_UNDERSTOOD)
3329 		return 0;
3330 
3331 	if ((conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) &&
3332 					cmd->ident == conn->info_ident) {
3333 		cancel_delayed_work(&conn->info_timer);
3334 
3335 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
3336 		conn->info_ident = 0;
3337 
3338 		l2cap_conn_start(conn);
3339 	}
3340 
3341 	return 0;
3342 }
3343 
3344 static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3345 {
3346 	struct l2cap_conn_req *req = (struct l2cap_conn_req *) data;
3347 	struct l2cap_conn_rsp rsp;
3348 	struct l2cap_chan *chan = NULL, *pchan;
3349 	struct sock *parent, *sk = NULL;
3350 	int result, status = L2CAP_CS_NO_INFO;
3351 
3352 	u16 dcid = 0, scid = __le16_to_cpu(req->scid);
3353 	__le16 psm = req->psm;
3354 
3355 	BT_DBG("psm 0x%2.2x scid 0x%4.4x", __le16_to_cpu(psm), scid);
3356 
3357 	/* Check if we have socket listening on psm */
3358 	pchan = l2cap_global_chan_by_psm(BT_LISTEN, psm, conn->src, conn->dst);
3359 	if (!pchan) {
3360 		result = L2CAP_CR_BAD_PSM;
3361 		goto sendresp;
3362 	}
3363 
3364 	parent = pchan->sk;
3365 
3366 	mutex_lock(&conn->chan_lock);
3367 	lock_sock(parent);
3368 
3369 	/* Check if the ACL is secure enough (if not SDP) */
3370 	if (psm != __constant_cpu_to_le16(L2CAP_PSM_SDP) &&
3371 				!hci_conn_check_link_mode(conn->hcon)) {
3372 		conn->disc_reason = HCI_ERROR_AUTH_FAILURE;
3373 		result = L2CAP_CR_SEC_BLOCK;
3374 		goto response;
3375 	}
3376 
3377 	result = L2CAP_CR_NO_MEM;
3378 
3379 	/* Check if we already have channel with that dcid */
3380 	if (__l2cap_get_chan_by_dcid(conn, scid))
3381 		goto response;
3382 
3383 	chan = pchan->ops->new_connection(pchan);
3384 	if (!chan)
3385 		goto response;
3386 
3387 	sk = chan->sk;
3388 
3389 	hci_conn_hold(conn->hcon);
3390 
3391 	bacpy(&bt_sk(sk)->src, conn->src);
3392 	bacpy(&bt_sk(sk)->dst, conn->dst);
3393 	chan->psm  = psm;
3394 	chan->dcid = scid;
3395 
3396 	bt_accept_enqueue(parent, sk);
3397 
3398 	__l2cap_chan_add(conn, chan);
3399 
3400 	dcid = chan->scid;
3401 
3402 	__set_chan_timer(chan, sk->sk_sndtimeo);
3403 
3404 	chan->ident = cmd->ident;
3405 
3406 	if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE) {
3407 		if (l2cap_chan_check_security(chan)) {
3408 			if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
3409 				__l2cap_state_change(chan, BT_CONNECT2);
3410 				result = L2CAP_CR_PEND;
3411 				status = L2CAP_CS_AUTHOR_PEND;
3412 				parent->sk_data_ready(parent, 0);
3413 			} else {
3414 				__l2cap_state_change(chan, BT_CONFIG);
3415 				result = L2CAP_CR_SUCCESS;
3416 				status = L2CAP_CS_NO_INFO;
3417 			}
3418 		} else {
3419 			__l2cap_state_change(chan, BT_CONNECT2);
3420 			result = L2CAP_CR_PEND;
3421 			status = L2CAP_CS_AUTHEN_PEND;
3422 		}
3423 	} else {
3424 		__l2cap_state_change(chan, BT_CONNECT2);
3425 		result = L2CAP_CR_PEND;
3426 		status = L2CAP_CS_NO_INFO;
3427 	}
3428 
3429 response:
3430 	release_sock(parent);
3431 	mutex_unlock(&conn->chan_lock);
3432 
3433 sendresp:
3434 	rsp.scid   = cpu_to_le16(scid);
3435 	rsp.dcid   = cpu_to_le16(dcid);
3436 	rsp.result = cpu_to_le16(result);
3437 	rsp.status = cpu_to_le16(status);
3438 	l2cap_send_cmd(conn, cmd->ident, L2CAP_CONN_RSP, sizeof(rsp), &rsp);
3439 
3440 	if (result == L2CAP_CR_PEND && status == L2CAP_CS_NO_INFO) {
3441 		struct l2cap_info_req info;
3442 		info.type = __constant_cpu_to_le16(L2CAP_IT_FEAT_MASK);
3443 
3444 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_SENT;
3445 		conn->info_ident = l2cap_get_ident(conn);
3446 
3447 		schedule_delayed_work(&conn->info_timer, L2CAP_INFO_TIMEOUT);
3448 
3449 		l2cap_send_cmd(conn, conn->info_ident,
3450 					L2CAP_INFO_REQ, sizeof(info), &info);
3451 	}
3452 
3453 	if (chan && !test_bit(CONF_REQ_SENT, &chan->conf_state) &&
3454 				result == L2CAP_CR_SUCCESS) {
3455 		u8 buf[128];
3456 		set_bit(CONF_REQ_SENT, &chan->conf_state);
3457 		l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ,
3458 					l2cap_build_conf_req(chan, buf), buf);
3459 		chan->num_conf_req++;
3460 	}
3461 
3462 	return 0;
3463 }
3464 
3465 static inline int l2cap_connect_rsp(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3466 {
3467 	struct l2cap_conn_rsp *rsp = (struct l2cap_conn_rsp *) data;
3468 	u16 scid, dcid, result, status;
3469 	struct l2cap_chan *chan;
3470 	u8 req[128];
3471 	int err;
3472 
3473 	scid   = __le16_to_cpu(rsp->scid);
3474 	dcid   = __le16_to_cpu(rsp->dcid);
3475 	result = __le16_to_cpu(rsp->result);
3476 	status = __le16_to_cpu(rsp->status);
3477 
3478 	BT_DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x",
3479 						dcid, scid, result, status);
3480 
3481 	mutex_lock(&conn->chan_lock);
3482 
3483 	if (scid) {
3484 		chan = __l2cap_get_chan_by_scid(conn, scid);
3485 		if (!chan) {
3486 			err = -EFAULT;
3487 			goto unlock;
3488 		}
3489 	} else {
3490 		chan = __l2cap_get_chan_by_ident(conn, cmd->ident);
3491 		if (!chan) {
3492 			err = -EFAULT;
3493 			goto unlock;
3494 		}
3495 	}
3496 
3497 	err = 0;
3498 
3499 	l2cap_chan_lock(chan);
3500 
3501 	switch (result) {
3502 	case L2CAP_CR_SUCCESS:
3503 		l2cap_state_change(chan, BT_CONFIG);
3504 		chan->ident = 0;
3505 		chan->dcid = dcid;
3506 		clear_bit(CONF_CONNECT_PEND, &chan->conf_state);
3507 
3508 		if (test_and_set_bit(CONF_REQ_SENT, &chan->conf_state))
3509 			break;
3510 
3511 		l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ,
3512 					l2cap_build_conf_req(chan, req), req);
3513 		chan->num_conf_req++;
3514 		break;
3515 
3516 	case L2CAP_CR_PEND:
3517 		set_bit(CONF_CONNECT_PEND, &chan->conf_state);
3518 		break;
3519 
3520 	default:
3521 		l2cap_chan_del(chan, ECONNREFUSED);
3522 		break;
3523 	}
3524 
3525 	l2cap_chan_unlock(chan);
3526 
3527 unlock:
3528 	mutex_unlock(&conn->chan_lock);
3529 
3530 	return err;
3531 }
3532 
3533 static inline void set_default_fcs(struct l2cap_chan *chan)
3534 {
3535 	/* FCS is enabled only in ERTM or streaming mode, if one or both
3536 	 * sides request it.
3537 	 */
3538 	if (chan->mode != L2CAP_MODE_ERTM && chan->mode != L2CAP_MODE_STREAMING)
3539 		chan->fcs = L2CAP_FCS_NONE;
3540 	else if (!test_bit(CONF_NO_FCS_RECV, &chan->conf_state))
3541 		chan->fcs = L2CAP_FCS_CRC16;
3542 }
3543 
3544 static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u16 cmd_len, u8 *data)
3545 {
3546 	struct l2cap_conf_req *req = (struct l2cap_conf_req *) data;
3547 	u16 dcid, flags;
3548 	u8 rsp[64];
3549 	struct l2cap_chan *chan;
3550 	int len, err = 0;
3551 
3552 	dcid  = __le16_to_cpu(req->dcid);
3553 	flags = __le16_to_cpu(req->flags);
3554 
3555 	BT_DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags);
3556 
3557 	chan = l2cap_get_chan_by_scid(conn, dcid);
3558 	if (!chan)
3559 		return -ENOENT;
3560 
3561 	if (chan->state != BT_CONFIG && chan->state != BT_CONNECT2) {
3562 		struct l2cap_cmd_rej_cid rej;
3563 
3564 		rej.reason = __constant_cpu_to_le16(L2CAP_REJ_INVALID_CID);
3565 		rej.scid = cpu_to_le16(chan->scid);
3566 		rej.dcid = cpu_to_le16(chan->dcid);
3567 
3568 		l2cap_send_cmd(conn, cmd->ident, L2CAP_COMMAND_REJ,
3569 				sizeof(rej), &rej);
3570 		goto unlock;
3571 	}
3572 
3573 	/* Reject if config buffer is too small. */
3574 	len = cmd_len - sizeof(*req);
3575 	if (len < 0 || chan->conf_len + len > sizeof(chan->conf_req)) {
3576 		l2cap_send_cmd(conn, cmd->ident, L2CAP_CONF_RSP,
3577 				l2cap_build_conf_rsp(chan, rsp,
3578 					L2CAP_CONF_REJECT, flags), rsp);
3579 		goto unlock;
3580 	}
3581 
3582 	/* Store config. */
3583 	memcpy(chan->conf_req + chan->conf_len, req->data, len);
3584 	chan->conf_len += len;
3585 
3586 	if (flags & L2CAP_CONF_FLAG_CONTINUATION) {
3587 		/* Incomplete config. Send empty response. */
3588 		l2cap_send_cmd(conn, cmd->ident, L2CAP_CONF_RSP,
3589 				l2cap_build_conf_rsp(chan, rsp,
3590 					L2CAP_CONF_SUCCESS, flags), rsp);
3591 		goto unlock;
3592 	}
3593 
3594 	/* Complete config. */
3595 	len = l2cap_parse_conf_req(chan, rsp);
3596 	if (len < 0) {
3597 		l2cap_send_disconn_req(conn, chan, ECONNRESET);
3598 		goto unlock;
3599 	}
3600 
3601 	l2cap_send_cmd(conn, cmd->ident, L2CAP_CONF_RSP, len, rsp);
3602 	chan->num_conf_rsp++;
3603 
3604 	/* Reset config buffer. */
3605 	chan->conf_len = 0;
3606 
3607 	if (!test_bit(CONF_OUTPUT_DONE, &chan->conf_state))
3608 		goto unlock;
3609 
3610 	if (test_bit(CONF_INPUT_DONE, &chan->conf_state)) {
3611 		set_default_fcs(chan);
3612 
3613 		if (chan->mode == L2CAP_MODE_ERTM ||
3614 		    chan->mode == L2CAP_MODE_STREAMING)
3615 			err = l2cap_ertm_init(chan);
3616 
3617 		if (err < 0)
3618 			l2cap_send_disconn_req(chan->conn, chan, -err);
3619 		else
3620 			l2cap_chan_ready(chan);
3621 
3622 		goto unlock;
3623 	}
3624 
3625 	if (!test_and_set_bit(CONF_REQ_SENT, &chan->conf_state)) {
3626 		u8 buf[64];
3627 		l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ,
3628 					l2cap_build_conf_req(chan, buf), buf);
3629 		chan->num_conf_req++;
3630 	}
3631 
3632 	/* Got Conf Rsp PENDING from remote side and asume we sent
3633 	   Conf Rsp PENDING in the code above */
3634 	if (test_bit(CONF_REM_CONF_PEND, &chan->conf_state) &&
3635 			test_bit(CONF_LOC_CONF_PEND, &chan->conf_state)) {
3636 
3637 		/* check compatibility */
3638 
3639 		clear_bit(CONF_LOC_CONF_PEND, &chan->conf_state);
3640 		set_bit(CONF_OUTPUT_DONE, &chan->conf_state);
3641 
3642 		l2cap_send_cmd(conn, cmd->ident, L2CAP_CONF_RSP,
3643 					l2cap_build_conf_rsp(chan, rsp,
3644 					L2CAP_CONF_SUCCESS, flags), rsp);
3645 	}
3646 
3647 unlock:
3648 	l2cap_chan_unlock(chan);
3649 	return err;
3650 }
3651 
3652 static inline int l2cap_config_rsp(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3653 {
3654 	struct l2cap_conf_rsp *rsp = (struct l2cap_conf_rsp *)data;
3655 	u16 scid, flags, result;
3656 	struct l2cap_chan *chan;
3657 	int len = le16_to_cpu(cmd->len) - sizeof(*rsp);
3658 	int err = 0;
3659 
3660 	scid   = __le16_to_cpu(rsp->scid);
3661 	flags  = __le16_to_cpu(rsp->flags);
3662 	result = __le16_to_cpu(rsp->result);
3663 
3664 	BT_DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x len %d", scid, flags,
3665 	       result, len);
3666 
3667 	chan = l2cap_get_chan_by_scid(conn, scid);
3668 	if (!chan)
3669 		return 0;
3670 
3671 	switch (result) {
3672 	case L2CAP_CONF_SUCCESS:
3673 		l2cap_conf_rfc_get(chan, rsp->data, len);
3674 		clear_bit(CONF_REM_CONF_PEND, &chan->conf_state);
3675 		break;
3676 
3677 	case L2CAP_CONF_PENDING:
3678 		set_bit(CONF_REM_CONF_PEND, &chan->conf_state);
3679 
3680 		if (test_bit(CONF_LOC_CONF_PEND, &chan->conf_state)) {
3681 			char buf[64];
3682 
3683 			len = l2cap_parse_conf_rsp(chan, rsp->data, len,
3684 								buf, &result);
3685 			if (len < 0) {
3686 				l2cap_send_disconn_req(conn, chan, ECONNRESET);
3687 				goto done;
3688 			}
3689 
3690 			/* check compatibility */
3691 
3692 			clear_bit(CONF_LOC_CONF_PEND, &chan->conf_state);
3693 			set_bit(CONF_OUTPUT_DONE, &chan->conf_state);
3694 
3695 			l2cap_send_cmd(conn, cmd->ident, L2CAP_CONF_RSP,
3696 						l2cap_build_conf_rsp(chan, buf,
3697 						L2CAP_CONF_SUCCESS, 0x0000), buf);
3698 		}
3699 		goto done;
3700 
3701 	case L2CAP_CONF_UNACCEPT:
3702 		if (chan->num_conf_rsp <= L2CAP_CONF_MAX_CONF_RSP) {
3703 			char req[64];
3704 
3705 			if (len > sizeof(req) - sizeof(struct l2cap_conf_req)) {
3706 				l2cap_send_disconn_req(conn, chan, ECONNRESET);
3707 				goto done;
3708 			}
3709 
3710 			/* throw out any old stored conf requests */
3711 			result = L2CAP_CONF_SUCCESS;
3712 			len = l2cap_parse_conf_rsp(chan, rsp->data, len,
3713 								req, &result);
3714 			if (len < 0) {
3715 				l2cap_send_disconn_req(conn, chan, ECONNRESET);
3716 				goto done;
3717 			}
3718 
3719 			l2cap_send_cmd(conn, l2cap_get_ident(conn),
3720 						L2CAP_CONF_REQ, len, req);
3721 			chan->num_conf_req++;
3722 			if (result != L2CAP_CONF_SUCCESS)
3723 				goto done;
3724 			break;
3725 		}
3726 
3727 	default:
3728 		l2cap_chan_set_err(chan, ECONNRESET);
3729 
3730 		__set_chan_timer(chan, L2CAP_DISC_REJ_TIMEOUT);
3731 		l2cap_send_disconn_req(conn, chan, ECONNRESET);
3732 		goto done;
3733 	}
3734 
3735 	if (flags & L2CAP_CONF_FLAG_CONTINUATION)
3736 		goto done;
3737 
3738 	set_bit(CONF_INPUT_DONE, &chan->conf_state);
3739 
3740 	if (test_bit(CONF_OUTPUT_DONE, &chan->conf_state)) {
3741 		set_default_fcs(chan);
3742 
3743 		if (chan->mode == L2CAP_MODE_ERTM ||
3744 		    chan->mode == L2CAP_MODE_STREAMING)
3745 			err = l2cap_ertm_init(chan);
3746 
3747 		if (err < 0)
3748 			l2cap_send_disconn_req(chan->conn, chan, -err);
3749 		else
3750 			l2cap_chan_ready(chan);
3751 	}
3752 
3753 done:
3754 	l2cap_chan_unlock(chan);
3755 	return err;
3756 }
3757 
3758 static inline int l2cap_disconnect_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3759 {
3760 	struct l2cap_disconn_req *req = (struct l2cap_disconn_req *) data;
3761 	struct l2cap_disconn_rsp rsp;
3762 	u16 dcid, scid;
3763 	struct l2cap_chan *chan;
3764 	struct sock *sk;
3765 
3766 	scid = __le16_to_cpu(req->scid);
3767 	dcid = __le16_to_cpu(req->dcid);
3768 
3769 	BT_DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid);
3770 
3771 	mutex_lock(&conn->chan_lock);
3772 
3773 	chan = __l2cap_get_chan_by_scid(conn, dcid);
3774 	if (!chan) {
3775 		mutex_unlock(&conn->chan_lock);
3776 		return 0;
3777 	}
3778 
3779 	l2cap_chan_lock(chan);
3780 
3781 	sk = chan->sk;
3782 
3783 	rsp.dcid = cpu_to_le16(chan->scid);
3784 	rsp.scid = cpu_to_le16(chan->dcid);
3785 	l2cap_send_cmd(conn, cmd->ident, L2CAP_DISCONN_RSP, sizeof(rsp), &rsp);
3786 
3787 	lock_sock(sk);
3788 	sk->sk_shutdown = SHUTDOWN_MASK;
3789 	release_sock(sk);
3790 
3791 	l2cap_chan_hold(chan);
3792 	l2cap_chan_del(chan, ECONNRESET);
3793 
3794 	l2cap_chan_unlock(chan);
3795 
3796 	chan->ops->close(chan);
3797 	l2cap_chan_put(chan);
3798 
3799 	mutex_unlock(&conn->chan_lock);
3800 
3801 	return 0;
3802 }
3803 
3804 static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3805 {
3806 	struct l2cap_disconn_rsp *rsp = (struct l2cap_disconn_rsp *) data;
3807 	u16 dcid, scid;
3808 	struct l2cap_chan *chan;
3809 
3810 	scid = __le16_to_cpu(rsp->scid);
3811 	dcid = __le16_to_cpu(rsp->dcid);
3812 
3813 	BT_DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid);
3814 
3815 	mutex_lock(&conn->chan_lock);
3816 
3817 	chan = __l2cap_get_chan_by_scid(conn, scid);
3818 	if (!chan) {
3819 		mutex_unlock(&conn->chan_lock);
3820 		return 0;
3821 	}
3822 
3823 	l2cap_chan_lock(chan);
3824 
3825 	l2cap_chan_hold(chan);
3826 	l2cap_chan_del(chan, 0);
3827 
3828 	l2cap_chan_unlock(chan);
3829 
3830 	chan->ops->close(chan);
3831 	l2cap_chan_put(chan);
3832 
3833 	mutex_unlock(&conn->chan_lock);
3834 
3835 	return 0;
3836 }
3837 
3838 static inline int l2cap_information_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3839 {
3840 	struct l2cap_info_req *req = (struct l2cap_info_req *) data;
3841 	u16 type;
3842 
3843 	type = __le16_to_cpu(req->type);
3844 
3845 	BT_DBG("type 0x%4.4x", type);
3846 
3847 	if (type == L2CAP_IT_FEAT_MASK) {
3848 		u8 buf[8];
3849 		u32 feat_mask = l2cap_feat_mask;
3850 		struct l2cap_info_rsp *rsp = (struct l2cap_info_rsp *) buf;
3851 		rsp->type   = __constant_cpu_to_le16(L2CAP_IT_FEAT_MASK);
3852 		rsp->result = __constant_cpu_to_le16(L2CAP_IR_SUCCESS);
3853 		if (!disable_ertm)
3854 			feat_mask |= L2CAP_FEAT_ERTM | L2CAP_FEAT_STREAMING
3855 							 | L2CAP_FEAT_FCS;
3856 		if (enable_hs)
3857 			feat_mask |= L2CAP_FEAT_EXT_FLOW
3858 						| L2CAP_FEAT_EXT_WINDOW;
3859 
3860 		put_unaligned_le32(feat_mask, rsp->data);
3861 		l2cap_send_cmd(conn, cmd->ident,
3862 					L2CAP_INFO_RSP, sizeof(buf), buf);
3863 	} else if (type == L2CAP_IT_FIXED_CHAN) {
3864 		u8 buf[12];
3865 		struct l2cap_info_rsp *rsp = (struct l2cap_info_rsp *) buf;
3866 
3867 		if (enable_hs)
3868 			l2cap_fixed_chan[0] |= L2CAP_FC_A2MP;
3869 		else
3870 			l2cap_fixed_chan[0] &= ~L2CAP_FC_A2MP;
3871 
3872 		rsp->type   = __constant_cpu_to_le16(L2CAP_IT_FIXED_CHAN);
3873 		rsp->result = __constant_cpu_to_le16(L2CAP_IR_SUCCESS);
3874 		memcpy(rsp->data, l2cap_fixed_chan, sizeof(l2cap_fixed_chan));
3875 		l2cap_send_cmd(conn, cmd->ident,
3876 					L2CAP_INFO_RSP, sizeof(buf), buf);
3877 	} else {
3878 		struct l2cap_info_rsp rsp;
3879 		rsp.type   = cpu_to_le16(type);
3880 		rsp.result = __constant_cpu_to_le16(L2CAP_IR_NOTSUPP);
3881 		l2cap_send_cmd(conn, cmd->ident,
3882 					L2CAP_INFO_RSP, sizeof(rsp), &rsp);
3883 	}
3884 
3885 	return 0;
3886 }
3887 
3888 static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u8 *data)
3889 {
3890 	struct l2cap_info_rsp *rsp = (struct l2cap_info_rsp *) data;
3891 	u16 type, result;
3892 
3893 	type   = __le16_to_cpu(rsp->type);
3894 	result = __le16_to_cpu(rsp->result);
3895 
3896 	BT_DBG("type 0x%4.4x result 0x%2.2x", type, result);
3897 
3898 	/* L2CAP Info req/rsp are unbound to channels, add extra checks */
3899 	if (cmd->ident != conn->info_ident ||
3900 			conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE)
3901 		return 0;
3902 
3903 	cancel_delayed_work(&conn->info_timer);
3904 
3905 	if (result != L2CAP_IR_SUCCESS) {
3906 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
3907 		conn->info_ident = 0;
3908 
3909 		l2cap_conn_start(conn);
3910 
3911 		return 0;
3912 	}
3913 
3914 	switch (type) {
3915 	case L2CAP_IT_FEAT_MASK:
3916 		conn->feat_mask = get_unaligned_le32(rsp->data);
3917 
3918 		if (conn->feat_mask & L2CAP_FEAT_FIXED_CHAN) {
3919 			struct l2cap_info_req req;
3920 			req.type = __constant_cpu_to_le16(L2CAP_IT_FIXED_CHAN);
3921 
3922 			conn->info_ident = l2cap_get_ident(conn);
3923 
3924 			l2cap_send_cmd(conn, conn->info_ident,
3925 					L2CAP_INFO_REQ, sizeof(req), &req);
3926 		} else {
3927 			conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
3928 			conn->info_ident = 0;
3929 
3930 			l2cap_conn_start(conn);
3931 		}
3932 		break;
3933 
3934 	case L2CAP_IT_FIXED_CHAN:
3935 		conn->fixed_chan_mask = rsp->data[0];
3936 		conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
3937 		conn->info_ident = 0;
3938 
3939 		l2cap_conn_start(conn);
3940 		break;
3941 	}
3942 
3943 	return 0;
3944 }
3945 
3946 static inline int l2cap_create_channel_req(struct l2cap_conn *conn,
3947 					struct l2cap_cmd_hdr *cmd, u16 cmd_len,
3948 					void *data)
3949 {
3950 	struct l2cap_create_chan_req *req = data;
3951 	struct l2cap_create_chan_rsp rsp;
3952 	u16 psm, scid;
3953 
3954 	if (cmd_len != sizeof(*req))
3955 		return -EPROTO;
3956 
3957 	if (!enable_hs)
3958 		return -EINVAL;
3959 
3960 	psm = le16_to_cpu(req->psm);
3961 	scid = le16_to_cpu(req->scid);
3962 
3963 	BT_DBG("psm 0x%2.2x, scid 0x%4.4x, amp_id %d", psm, scid, req->amp_id);
3964 
3965 	/* Placeholder: Always reject */
3966 	rsp.dcid = 0;
3967 	rsp.scid = cpu_to_le16(scid);
3968 	rsp.result = __constant_cpu_to_le16(L2CAP_CR_NO_MEM);
3969 	rsp.status = __constant_cpu_to_le16(L2CAP_CS_NO_INFO);
3970 
3971 	l2cap_send_cmd(conn, cmd->ident, L2CAP_CREATE_CHAN_RSP,
3972 		       sizeof(rsp), &rsp);
3973 
3974 	return 0;
3975 }
3976 
3977 static inline int l2cap_create_channel_rsp(struct l2cap_conn *conn,
3978 					struct l2cap_cmd_hdr *cmd, void *data)
3979 {
3980 	BT_DBG("conn %p", conn);
3981 
3982 	return l2cap_connect_rsp(conn, cmd, data);
3983 }
3984 
3985 static void l2cap_send_move_chan_rsp(struct l2cap_conn *conn, u8 ident,
3986 				     u16 icid, u16 result)
3987 {
3988 	struct l2cap_move_chan_rsp rsp;
3989 
3990 	BT_DBG("icid 0x%4.4x, result 0x%4.4x", icid, result);
3991 
3992 	rsp.icid = cpu_to_le16(icid);
3993 	rsp.result = cpu_to_le16(result);
3994 
3995 	l2cap_send_cmd(conn, ident, L2CAP_MOVE_CHAN_RSP, sizeof(rsp), &rsp);
3996 }
3997 
3998 static void l2cap_send_move_chan_cfm(struct l2cap_conn *conn,
3999 				     struct l2cap_chan *chan,
4000 				     u16 icid, u16 result)
4001 {
4002 	struct l2cap_move_chan_cfm cfm;
4003 	u8 ident;
4004 
4005 	BT_DBG("icid 0x%4.4x, result 0x%4.4x", icid, result);
4006 
4007 	ident = l2cap_get_ident(conn);
4008 	if (chan)
4009 		chan->ident = ident;
4010 
4011 	cfm.icid = cpu_to_le16(icid);
4012 	cfm.result = cpu_to_le16(result);
4013 
4014 	l2cap_send_cmd(conn, ident, L2CAP_MOVE_CHAN_CFM, sizeof(cfm), &cfm);
4015 }
4016 
4017 static void l2cap_send_move_chan_cfm_rsp(struct l2cap_conn *conn, u8 ident,
4018 					 u16 icid)
4019 {
4020 	struct l2cap_move_chan_cfm_rsp rsp;
4021 
4022 	BT_DBG("icid 0x%4.4x", icid);
4023 
4024 	rsp.icid = cpu_to_le16(icid);
4025 	l2cap_send_cmd(conn, ident, L2CAP_MOVE_CHAN_CFM_RSP, sizeof(rsp), &rsp);
4026 }
4027 
4028 static inline int l2cap_move_channel_req(struct l2cap_conn *conn,
4029 					 struct l2cap_cmd_hdr *cmd,
4030 					 u16 cmd_len, void *data)
4031 {
4032 	struct l2cap_move_chan_req *req = data;
4033 	u16 icid = 0;
4034 	u16 result = L2CAP_MR_NOT_ALLOWED;
4035 
4036 	if (cmd_len != sizeof(*req))
4037 		return -EPROTO;
4038 
4039 	icid = le16_to_cpu(req->icid);
4040 
4041 	BT_DBG("icid 0x%4.4x, dest_amp_id %d", icid, req->dest_amp_id);
4042 
4043 	if (!enable_hs)
4044 		return -EINVAL;
4045 
4046 	/* Placeholder: Always refuse */
4047 	l2cap_send_move_chan_rsp(conn, cmd->ident, icid, result);
4048 
4049 	return 0;
4050 }
4051 
4052 static inline int l2cap_move_channel_rsp(struct l2cap_conn *conn,
4053 					 struct l2cap_cmd_hdr *cmd,
4054 					 u16 cmd_len, void *data)
4055 {
4056 	struct l2cap_move_chan_rsp *rsp = data;
4057 	u16 icid, result;
4058 
4059 	if (cmd_len != sizeof(*rsp))
4060 		return -EPROTO;
4061 
4062 	icid = le16_to_cpu(rsp->icid);
4063 	result = le16_to_cpu(rsp->result);
4064 
4065 	BT_DBG("icid 0x%4.4x, result 0x%4.4x", icid, result);
4066 
4067 	/* Placeholder: Always unconfirmed */
4068 	l2cap_send_move_chan_cfm(conn, NULL, icid, L2CAP_MC_UNCONFIRMED);
4069 
4070 	return 0;
4071 }
4072 
4073 static inline int l2cap_move_channel_confirm(struct l2cap_conn *conn,
4074 					     struct l2cap_cmd_hdr *cmd,
4075 					     u16 cmd_len, void *data)
4076 {
4077 	struct l2cap_move_chan_cfm *cfm = data;
4078 	u16 icid, result;
4079 
4080 	if (cmd_len != sizeof(*cfm))
4081 		return -EPROTO;
4082 
4083 	icid = le16_to_cpu(cfm->icid);
4084 	result = le16_to_cpu(cfm->result);
4085 
4086 	BT_DBG("icid 0x%4.4x, result 0x%4.4x", icid, result);
4087 
4088 	l2cap_send_move_chan_cfm_rsp(conn, cmd->ident, icid);
4089 
4090 	return 0;
4091 }
4092 
4093 static inline int l2cap_move_channel_confirm_rsp(struct l2cap_conn *conn,
4094 						 struct l2cap_cmd_hdr *cmd,
4095 						 u16 cmd_len, void *data)
4096 {
4097 	struct l2cap_move_chan_cfm_rsp *rsp = data;
4098 	u16 icid;
4099 
4100 	if (cmd_len != sizeof(*rsp))
4101 		return -EPROTO;
4102 
4103 	icid = le16_to_cpu(rsp->icid);
4104 
4105 	BT_DBG("icid 0x%4.4x", icid);
4106 
4107 	return 0;
4108 }
4109 
4110 static inline int l2cap_check_conn_param(u16 min, u16 max, u16 latency,
4111 							u16 to_multiplier)
4112 {
4113 	u16 max_latency;
4114 
4115 	if (min > max || min < 6 || max > 3200)
4116 		return -EINVAL;
4117 
4118 	if (to_multiplier < 10 || to_multiplier > 3200)
4119 		return -EINVAL;
4120 
4121 	if (max >= to_multiplier * 8)
4122 		return -EINVAL;
4123 
4124 	max_latency = (to_multiplier * 8 / max) - 1;
4125 	if (latency > 499 || latency > max_latency)
4126 		return -EINVAL;
4127 
4128 	return 0;
4129 }
4130 
4131 static inline int l2cap_conn_param_update_req(struct l2cap_conn *conn,
4132 					struct l2cap_cmd_hdr *cmd, u8 *data)
4133 {
4134 	struct hci_conn *hcon = conn->hcon;
4135 	struct l2cap_conn_param_update_req *req;
4136 	struct l2cap_conn_param_update_rsp rsp;
4137 	u16 min, max, latency, to_multiplier, cmd_len;
4138 	int err;
4139 
4140 	if (!(hcon->link_mode & HCI_LM_MASTER))
4141 		return -EINVAL;
4142 
4143 	cmd_len = __le16_to_cpu(cmd->len);
4144 	if (cmd_len != sizeof(struct l2cap_conn_param_update_req))
4145 		return -EPROTO;
4146 
4147 	req = (struct l2cap_conn_param_update_req *) data;
4148 	min		= __le16_to_cpu(req->min);
4149 	max		= __le16_to_cpu(req->max);
4150 	latency		= __le16_to_cpu(req->latency);
4151 	to_multiplier	= __le16_to_cpu(req->to_multiplier);
4152 
4153 	BT_DBG("min 0x%4.4x max 0x%4.4x latency: 0x%4.4x Timeout: 0x%4.4x",
4154 						min, max, latency, to_multiplier);
4155 
4156 	memset(&rsp, 0, sizeof(rsp));
4157 
4158 	err = l2cap_check_conn_param(min, max, latency, to_multiplier);
4159 	if (err)
4160 		rsp.result = __constant_cpu_to_le16(L2CAP_CONN_PARAM_REJECTED);
4161 	else
4162 		rsp.result = __constant_cpu_to_le16(L2CAP_CONN_PARAM_ACCEPTED);
4163 
4164 	l2cap_send_cmd(conn, cmd->ident, L2CAP_CONN_PARAM_UPDATE_RSP,
4165 							sizeof(rsp), &rsp);
4166 
4167 	if (!err)
4168 		hci_le_conn_update(hcon, min, max, latency, to_multiplier);
4169 
4170 	return 0;
4171 }
4172 
4173 static inline int l2cap_bredr_sig_cmd(struct l2cap_conn *conn,
4174 			struct l2cap_cmd_hdr *cmd, u16 cmd_len, u8 *data)
4175 {
4176 	int err = 0;
4177 
4178 	switch (cmd->code) {
4179 	case L2CAP_COMMAND_REJ:
4180 		l2cap_command_rej(conn, cmd, data);
4181 		break;
4182 
4183 	case L2CAP_CONN_REQ:
4184 		err = l2cap_connect_req(conn, cmd, data);
4185 		break;
4186 
4187 	case L2CAP_CONN_RSP:
4188 		err = l2cap_connect_rsp(conn, cmd, data);
4189 		break;
4190 
4191 	case L2CAP_CONF_REQ:
4192 		err = l2cap_config_req(conn, cmd, cmd_len, data);
4193 		break;
4194 
4195 	case L2CAP_CONF_RSP:
4196 		err = l2cap_config_rsp(conn, cmd, data);
4197 		break;
4198 
4199 	case L2CAP_DISCONN_REQ:
4200 		err = l2cap_disconnect_req(conn, cmd, data);
4201 		break;
4202 
4203 	case L2CAP_DISCONN_RSP:
4204 		err = l2cap_disconnect_rsp(conn, cmd, data);
4205 		break;
4206 
4207 	case L2CAP_ECHO_REQ:
4208 		l2cap_send_cmd(conn, cmd->ident, L2CAP_ECHO_RSP, cmd_len, data);
4209 		break;
4210 
4211 	case L2CAP_ECHO_RSP:
4212 		break;
4213 
4214 	case L2CAP_INFO_REQ:
4215 		err = l2cap_information_req(conn, cmd, data);
4216 		break;
4217 
4218 	case L2CAP_INFO_RSP:
4219 		err = l2cap_information_rsp(conn, cmd, data);
4220 		break;
4221 
4222 	case L2CAP_CREATE_CHAN_REQ:
4223 		err = l2cap_create_channel_req(conn, cmd, cmd_len, data);
4224 		break;
4225 
4226 	case L2CAP_CREATE_CHAN_RSP:
4227 		err = l2cap_create_channel_rsp(conn, cmd, data);
4228 		break;
4229 
4230 	case L2CAP_MOVE_CHAN_REQ:
4231 		err = l2cap_move_channel_req(conn, cmd, cmd_len, data);
4232 		break;
4233 
4234 	case L2CAP_MOVE_CHAN_RSP:
4235 		err = l2cap_move_channel_rsp(conn, cmd, cmd_len, data);
4236 		break;
4237 
4238 	case L2CAP_MOVE_CHAN_CFM:
4239 		err = l2cap_move_channel_confirm(conn, cmd, cmd_len, data);
4240 		break;
4241 
4242 	case L2CAP_MOVE_CHAN_CFM_RSP:
4243 		err = l2cap_move_channel_confirm_rsp(conn, cmd, cmd_len, data);
4244 		break;
4245 
4246 	default:
4247 		BT_ERR("Unknown BR/EDR signaling command 0x%2.2x", cmd->code);
4248 		err = -EINVAL;
4249 		break;
4250 	}
4251 
4252 	return err;
4253 }
4254 
4255 static inline int l2cap_le_sig_cmd(struct l2cap_conn *conn,
4256 					struct l2cap_cmd_hdr *cmd, u8 *data)
4257 {
4258 	switch (cmd->code) {
4259 	case L2CAP_COMMAND_REJ:
4260 		return 0;
4261 
4262 	case L2CAP_CONN_PARAM_UPDATE_REQ:
4263 		return l2cap_conn_param_update_req(conn, cmd, data);
4264 
4265 	case L2CAP_CONN_PARAM_UPDATE_RSP:
4266 		return 0;
4267 
4268 	default:
4269 		BT_ERR("Unknown LE signaling command 0x%2.2x", cmd->code);
4270 		return -EINVAL;
4271 	}
4272 }
4273 
4274 static inline void l2cap_sig_channel(struct l2cap_conn *conn,
4275 							struct sk_buff *skb)
4276 {
4277 	u8 *data = skb->data;
4278 	int len = skb->len;
4279 	struct l2cap_cmd_hdr cmd;
4280 	int err;
4281 
4282 	l2cap_raw_recv(conn, skb);
4283 
4284 	while (len >= L2CAP_CMD_HDR_SIZE) {
4285 		u16 cmd_len;
4286 		memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE);
4287 		data += L2CAP_CMD_HDR_SIZE;
4288 		len  -= L2CAP_CMD_HDR_SIZE;
4289 
4290 		cmd_len = le16_to_cpu(cmd.len);
4291 
4292 		BT_DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd_len, cmd.ident);
4293 
4294 		if (cmd_len > len || !cmd.ident) {
4295 			BT_DBG("corrupted command");
4296 			break;
4297 		}
4298 
4299 		if (conn->hcon->type == LE_LINK)
4300 			err = l2cap_le_sig_cmd(conn, &cmd, data);
4301 		else
4302 			err = l2cap_bredr_sig_cmd(conn, &cmd, cmd_len, data);
4303 
4304 		if (err) {
4305 			struct l2cap_cmd_rej_unk rej;
4306 
4307 			BT_ERR("Wrong link type (%d)", err);
4308 
4309 			/* FIXME: Map err to a valid reason */
4310 			rej.reason = __constant_cpu_to_le16(L2CAP_REJ_NOT_UNDERSTOOD);
4311 			l2cap_send_cmd(conn, cmd.ident, L2CAP_COMMAND_REJ, sizeof(rej), &rej);
4312 		}
4313 
4314 		data += cmd_len;
4315 		len  -= cmd_len;
4316 	}
4317 
4318 	kfree_skb(skb);
4319 }
4320 
4321 static int l2cap_check_fcs(struct l2cap_chan *chan,  struct sk_buff *skb)
4322 {
4323 	u16 our_fcs, rcv_fcs;
4324 	int hdr_size;
4325 
4326 	if (test_bit(FLAG_EXT_CTRL, &chan->flags))
4327 		hdr_size = L2CAP_EXT_HDR_SIZE;
4328 	else
4329 		hdr_size = L2CAP_ENH_HDR_SIZE;
4330 
4331 	if (chan->fcs == L2CAP_FCS_CRC16) {
4332 		skb_trim(skb, skb->len - L2CAP_FCS_SIZE);
4333 		rcv_fcs = get_unaligned_le16(skb->data + skb->len);
4334 		our_fcs = crc16(0, skb->data - hdr_size, skb->len + hdr_size);
4335 
4336 		if (our_fcs != rcv_fcs)
4337 			return -EBADMSG;
4338 	}
4339 	return 0;
4340 }
4341 
4342 static void l2cap_send_i_or_rr_or_rnr(struct l2cap_chan *chan)
4343 {
4344 	struct l2cap_ctrl control;
4345 
4346 	BT_DBG("chan %p", chan);
4347 
4348 	memset(&control, 0, sizeof(control));
4349 	control.sframe = 1;
4350 	control.final = 1;
4351 	control.reqseq = chan->buffer_seq;
4352 	set_bit(CONN_SEND_FBIT, &chan->conn_state);
4353 
4354 	if (test_bit(CONN_LOCAL_BUSY, &chan->conn_state)) {
4355 		control.super = L2CAP_SUPER_RNR;
4356 		l2cap_send_sframe(chan, &control);
4357 	}
4358 
4359 	if (test_and_clear_bit(CONN_REMOTE_BUSY, &chan->conn_state) &&
4360 	    chan->unacked_frames > 0)
4361 		__set_retrans_timer(chan);
4362 
4363 	/* Send pending iframes */
4364 	l2cap_ertm_send(chan);
4365 
4366 	if (!test_bit(CONN_LOCAL_BUSY, &chan->conn_state) &&
4367 	    test_bit(CONN_SEND_FBIT, &chan->conn_state)) {
4368 		/* F-bit wasn't sent in an s-frame or i-frame yet, so
4369 		 * send it now.
4370 		 */
4371 		control.super = L2CAP_SUPER_RR;
4372 		l2cap_send_sframe(chan, &control);
4373 	}
4374 }
4375 
4376 static void append_skb_frag(struct sk_buff *skb,
4377 			struct sk_buff *new_frag, struct sk_buff **last_frag)
4378 {
4379 	/* skb->len reflects data in skb as well as all fragments
4380 	 * skb->data_len reflects only data in fragments
4381 	 */
4382 	if (!skb_has_frag_list(skb))
4383 		skb_shinfo(skb)->frag_list = new_frag;
4384 
4385 	new_frag->next = NULL;
4386 
4387 	(*last_frag)->next = new_frag;
4388 	*last_frag = new_frag;
4389 
4390 	skb->len += new_frag->len;
4391 	skb->data_len += new_frag->len;
4392 	skb->truesize += new_frag->truesize;
4393 }
4394 
4395 static int l2cap_reassemble_sdu(struct l2cap_chan *chan, struct sk_buff *skb,
4396 				struct l2cap_ctrl *control)
4397 {
4398 	int err = -EINVAL;
4399 
4400 	switch (control->sar) {
4401 	case L2CAP_SAR_UNSEGMENTED:
4402 		if (chan->sdu)
4403 			break;
4404 
4405 		err = chan->ops->recv(chan, skb);
4406 		break;
4407 
4408 	case L2CAP_SAR_START:
4409 		if (chan->sdu)
4410 			break;
4411 
4412 		chan->sdu_len = get_unaligned_le16(skb->data);
4413 		skb_pull(skb, L2CAP_SDULEN_SIZE);
4414 
4415 		if (chan->sdu_len > chan->imtu) {
4416 			err = -EMSGSIZE;
4417 			break;
4418 		}
4419 
4420 		if (skb->len >= chan->sdu_len)
4421 			break;
4422 
4423 		chan->sdu = skb;
4424 		chan->sdu_last_frag = skb;
4425 
4426 		skb = NULL;
4427 		err = 0;
4428 		break;
4429 
4430 	case L2CAP_SAR_CONTINUE:
4431 		if (!chan->sdu)
4432 			break;
4433 
4434 		append_skb_frag(chan->sdu, skb,
4435 				&chan->sdu_last_frag);
4436 		skb = NULL;
4437 
4438 		if (chan->sdu->len >= chan->sdu_len)
4439 			break;
4440 
4441 		err = 0;
4442 		break;
4443 
4444 	case L2CAP_SAR_END:
4445 		if (!chan->sdu)
4446 			break;
4447 
4448 		append_skb_frag(chan->sdu, skb,
4449 				&chan->sdu_last_frag);
4450 		skb = NULL;
4451 
4452 		if (chan->sdu->len != chan->sdu_len)
4453 			break;
4454 
4455 		err = chan->ops->recv(chan, chan->sdu);
4456 
4457 		if (!err) {
4458 			/* Reassembly complete */
4459 			chan->sdu = NULL;
4460 			chan->sdu_last_frag = NULL;
4461 			chan->sdu_len = 0;
4462 		}
4463 		break;
4464 	}
4465 
4466 	if (err) {
4467 		kfree_skb(skb);
4468 		kfree_skb(chan->sdu);
4469 		chan->sdu = NULL;
4470 		chan->sdu_last_frag = NULL;
4471 		chan->sdu_len = 0;
4472 	}
4473 
4474 	return err;
4475 }
4476 
4477 void l2cap_chan_busy(struct l2cap_chan *chan, int busy)
4478 {
4479 	u8 event;
4480 
4481 	if (chan->mode != L2CAP_MODE_ERTM)
4482 		return;
4483 
4484 	event = busy ? L2CAP_EV_LOCAL_BUSY_DETECTED : L2CAP_EV_LOCAL_BUSY_CLEAR;
4485 	l2cap_tx(chan, NULL, NULL, event);
4486 }
4487 
4488 static int l2cap_rx_queued_iframes(struct l2cap_chan *chan)
4489 {
4490 	int err = 0;
4491 	/* Pass sequential frames to l2cap_reassemble_sdu()
4492 	 * until a gap is encountered.
4493 	 */
4494 
4495 	BT_DBG("chan %p", chan);
4496 
4497 	while (!test_bit(CONN_LOCAL_BUSY, &chan->conn_state)) {
4498 		struct sk_buff *skb;
4499 		BT_DBG("Searching for skb with txseq %d (queue len %d)",
4500 		       chan->buffer_seq, skb_queue_len(&chan->srej_q));
4501 
4502 		skb = l2cap_ertm_seq_in_queue(&chan->srej_q, chan->buffer_seq);
4503 
4504 		if (!skb)
4505 			break;
4506 
4507 		skb_unlink(skb, &chan->srej_q);
4508 		chan->buffer_seq = __next_seq(chan, chan->buffer_seq);
4509 		err = l2cap_reassemble_sdu(chan, skb, &bt_cb(skb)->control);
4510 		if (err)
4511 			break;
4512 	}
4513 
4514 	if (skb_queue_empty(&chan->srej_q)) {
4515 		chan->rx_state = L2CAP_RX_STATE_RECV;
4516 		l2cap_send_ack(chan);
4517 	}
4518 
4519 	return err;
4520 }
4521 
4522 static void l2cap_handle_srej(struct l2cap_chan *chan,
4523 			      struct l2cap_ctrl *control)
4524 {
4525 	struct sk_buff *skb;
4526 
4527 	BT_DBG("chan %p, control %p", chan, control);
4528 
4529 	if (control->reqseq == chan->next_tx_seq) {
4530 		BT_DBG("Invalid reqseq %d, disconnecting", control->reqseq);
4531 		l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
4532 		return;
4533 	}
4534 
4535 	skb = l2cap_ertm_seq_in_queue(&chan->tx_q, control->reqseq);
4536 
4537 	if (skb == NULL) {
4538 		BT_DBG("Seq %d not available for retransmission",
4539 		       control->reqseq);
4540 		return;
4541 	}
4542 
4543 	if (chan->max_tx != 0 && bt_cb(skb)->control.retries >= chan->max_tx) {
4544 		BT_DBG("Retry limit exceeded (%d)", chan->max_tx);
4545 		l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
4546 		return;
4547 	}
4548 
4549 	clear_bit(CONN_REMOTE_BUSY, &chan->conn_state);
4550 
4551 	if (control->poll) {
4552 		l2cap_pass_to_tx(chan, control);
4553 
4554 		set_bit(CONN_SEND_FBIT, &chan->conn_state);
4555 		l2cap_retransmit(chan, control);
4556 		l2cap_ertm_send(chan);
4557 
4558 		if (chan->tx_state == L2CAP_TX_STATE_WAIT_F) {
4559 			set_bit(CONN_SREJ_ACT, &chan->conn_state);
4560 			chan->srej_save_reqseq = control->reqseq;
4561 		}
4562 	} else {
4563 		l2cap_pass_to_tx_fbit(chan, control);
4564 
4565 		if (control->final) {
4566 			if (chan->srej_save_reqseq != control->reqseq ||
4567 			    !test_and_clear_bit(CONN_SREJ_ACT,
4568 						&chan->conn_state))
4569 				l2cap_retransmit(chan, control);
4570 		} else {
4571 			l2cap_retransmit(chan, control);
4572 			if (chan->tx_state == L2CAP_TX_STATE_WAIT_F) {
4573 				set_bit(CONN_SREJ_ACT, &chan->conn_state);
4574 				chan->srej_save_reqseq = control->reqseq;
4575 			}
4576 		}
4577 	}
4578 }
4579 
4580 static void l2cap_handle_rej(struct l2cap_chan *chan,
4581 			     struct l2cap_ctrl *control)
4582 {
4583 	struct sk_buff *skb;
4584 
4585 	BT_DBG("chan %p, control %p", chan, control);
4586 
4587 	if (control->reqseq == chan->next_tx_seq) {
4588 		BT_DBG("Invalid reqseq %d, disconnecting", control->reqseq);
4589 		l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
4590 		return;
4591 	}
4592 
4593 	skb = l2cap_ertm_seq_in_queue(&chan->tx_q, control->reqseq);
4594 
4595 	if (chan->max_tx && skb &&
4596 	    bt_cb(skb)->control.retries >= chan->max_tx) {
4597 		BT_DBG("Retry limit exceeded (%d)", chan->max_tx);
4598 		l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
4599 		return;
4600 	}
4601 
4602 	clear_bit(CONN_REMOTE_BUSY, &chan->conn_state);
4603 
4604 	l2cap_pass_to_tx(chan, control);
4605 
4606 	if (control->final) {
4607 		if (!test_and_clear_bit(CONN_REJ_ACT, &chan->conn_state))
4608 			l2cap_retransmit_all(chan, control);
4609 	} else {
4610 		l2cap_retransmit_all(chan, control);
4611 		l2cap_ertm_send(chan);
4612 		if (chan->tx_state == L2CAP_TX_STATE_WAIT_F)
4613 			set_bit(CONN_REJ_ACT, &chan->conn_state);
4614 	}
4615 }
4616 
4617 static u8 l2cap_classify_txseq(struct l2cap_chan *chan, u16 txseq)
4618 {
4619 	BT_DBG("chan %p, txseq %d", chan, txseq);
4620 
4621 	BT_DBG("last_acked_seq %d, expected_tx_seq %d", chan->last_acked_seq,
4622 	       chan->expected_tx_seq);
4623 
4624 	if (chan->rx_state == L2CAP_RX_STATE_SREJ_SENT) {
4625 		if (__seq_offset(chan, txseq, chan->last_acked_seq) >=
4626 								chan->tx_win) {
4627 			/* See notes below regarding "double poll" and
4628 			 * invalid packets.
4629 			 */
4630 			if (chan->tx_win <= ((chan->tx_win_max + 1) >> 1)) {
4631 				BT_DBG("Invalid/Ignore - after SREJ");
4632 				return L2CAP_TXSEQ_INVALID_IGNORE;
4633 			} else {
4634 				BT_DBG("Invalid - in window after SREJ sent");
4635 				return L2CAP_TXSEQ_INVALID;
4636 			}
4637 		}
4638 
4639 		if (chan->srej_list.head == txseq) {
4640 			BT_DBG("Expected SREJ");
4641 			return L2CAP_TXSEQ_EXPECTED_SREJ;
4642 		}
4643 
4644 		if (l2cap_ertm_seq_in_queue(&chan->srej_q, txseq)) {
4645 			BT_DBG("Duplicate SREJ - txseq already stored");
4646 			return L2CAP_TXSEQ_DUPLICATE_SREJ;
4647 		}
4648 
4649 		if (l2cap_seq_list_contains(&chan->srej_list, txseq)) {
4650 			BT_DBG("Unexpected SREJ - not requested");
4651 			return L2CAP_TXSEQ_UNEXPECTED_SREJ;
4652 		}
4653 	}
4654 
4655 	if (chan->expected_tx_seq == txseq) {
4656 		if (__seq_offset(chan, txseq, chan->last_acked_seq) >=
4657 		    chan->tx_win) {
4658 			BT_DBG("Invalid - txseq outside tx window");
4659 			return L2CAP_TXSEQ_INVALID;
4660 		} else {
4661 			BT_DBG("Expected");
4662 			return L2CAP_TXSEQ_EXPECTED;
4663 		}
4664 	}
4665 
4666 	if (__seq_offset(chan, txseq, chan->last_acked_seq) <
4667 		__seq_offset(chan, chan->expected_tx_seq,
4668 			     chan->last_acked_seq)){
4669 		BT_DBG("Duplicate - expected_tx_seq later than txseq");
4670 		return L2CAP_TXSEQ_DUPLICATE;
4671 	}
4672 
4673 	if (__seq_offset(chan, txseq, chan->last_acked_seq) >= chan->tx_win) {
4674 		/* A source of invalid packets is a "double poll" condition,
4675 		 * where delays cause us to send multiple poll packets.  If
4676 		 * the remote stack receives and processes both polls,
4677 		 * sequence numbers can wrap around in such a way that a
4678 		 * resent frame has a sequence number that looks like new data
4679 		 * with a sequence gap.  This would trigger an erroneous SREJ
4680 		 * request.
4681 		 *
4682 		 * Fortunately, this is impossible with a tx window that's
4683 		 * less than half of the maximum sequence number, which allows
4684 		 * invalid frames to be safely ignored.
4685 		 *
4686 		 * With tx window sizes greater than half of the tx window
4687 		 * maximum, the frame is invalid and cannot be ignored.  This
4688 		 * causes a disconnect.
4689 		 */
4690 
4691 		if (chan->tx_win <= ((chan->tx_win_max + 1) >> 1)) {
4692 			BT_DBG("Invalid/Ignore - txseq outside tx window");
4693 			return L2CAP_TXSEQ_INVALID_IGNORE;
4694 		} else {
4695 			BT_DBG("Invalid - txseq outside tx window");
4696 			return L2CAP_TXSEQ_INVALID;
4697 		}
4698 	} else {
4699 		BT_DBG("Unexpected - txseq indicates missing frames");
4700 		return L2CAP_TXSEQ_UNEXPECTED;
4701 	}
4702 }
4703 
4704 static int l2cap_rx_state_recv(struct l2cap_chan *chan,
4705 			       struct l2cap_ctrl *control,
4706 			       struct sk_buff *skb, u8 event)
4707 {
4708 	int err = 0;
4709 	bool skb_in_use = 0;
4710 
4711 	BT_DBG("chan %p, control %p, skb %p, event %d", chan, control, skb,
4712 	       event);
4713 
4714 	switch (event) {
4715 	case L2CAP_EV_RECV_IFRAME:
4716 		switch (l2cap_classify_txseq(chan, control->txseq)) {
4717 		case L2CAP_TXSEQ_EXPECTED:
4718 			l2cap_pass_to_tx(chan, control);
4719 
4720 			if (test_bit(CONN_LOCAL_BUSY, &chan->conn_state)) {
4721 				BT_DBG("Busy, discarding expected seq %d",
4722 				       control->txseq);
4723 				break;
4724 			}
4725 
4726 			chan->expected_tx_seq = __next_seq(chan,
4727 							   control->txseq);
4728 
4729 			chan->buffer_seq = chan->expected_tx_seq;
4730 			skb_in_use = 1;
4731 
4732 			err = l2cap_reassemble_sdu(chan, skb, control);
4733 			if (err)
4734 				break;
4735 
4736 			if (control->final) {
4737 				if (!test_and_clear_bit(CONN_REJ_ACT,
4738 							&chan->conn_state)) {
4739 					control->final = 0;
4740 					l2cap_retransmit_all(chan, control);
4741 					l2cap_ertm_send(chan);
4742 				}
4743 			}
4744 
4745 			if (!test_bit(CONN_LOCAL_BUSY, &chan->conn_state))
4746 				l2cap_send_ack(chan);
4747 			break;
4748 		case L2CAP_TXSEQ_UNEXPECTED:
4749 			l2cap_pass_to_tx(chan, control);
4750 
4751 			/* Can't issue SREJ frames in the local busy state.
4752 			 * Drop this frame, it will be seen as missing
4753 			 * when local busy is exited.
4754 			 */
4755 			if (test_bit(CONN_LOCAL_BUSY, &chan->conn_state)) {
4756 				BT_DBG("Busy, discarding unexpected seq %d",
4757 				       control->txseq);
4758 				break;
4759 			}
4760 
4761 			/* There was a gap in the sequence, so an SREJ
4762 			 * must be sent for each missing frame.  The
4763 			 * current frame is stored for later use.
4764 			 */
4765 			skb_queue_tail(&chan->srej_q, skb);
4766 			skb_in_use = 1;
4767 			BT_DBG("Queued %p (queue len %d)", skb,
4768 			       skb_queue_len(&chan->srej_q));
4769 
4770 			clear_bit(CONN_SREJ_ACT, &chan->conn_state);
4771 			l2cap_seq_list_clear(&chan->srej_list);
4772 			l2cap_send_srej(chan, control->txseq);
4773 
4774 			chan->rx_state = L2CAP_RX_STATE_SREJ_SENT;
4775 			break;
4776 		case L2CAP_TXSEQ_DUPLICATE:
4777 			l2cap_pass_to_tx(chan, control);
4778 			break;
4779 		case L2CAP_TXSEQ_INVALID_IGNORE:
4780 			break;
4781 		case L2CAP_TXSEQ_INVALID:
4782 		default:
4783 			l2cap_send_disconn_req(chan->conn, chan,
4784 					       ECONNRESET);
4785 			break;
4786 		}
4787 		break;
4788 	case L2CAP_EV_RECV_RR:
4789 		l2cap_pass_to_tx(chan, control);
4790 		if (control->final) {
4791 			clear_bit(CONN_REMOTE_BUSY, &chan->conn_state);
4792 
4793 			if (!test_and_clear_bit(CONN_REJ_ACT,
4794 						&chan->conn_state)) {
4795 				control->final = 0;
4796 				l2cap_retransmit_all(chan, control);
4797 			}
4798 
4799 			l2cap_ertm_send(chan);
4800 		} else if (control->poll) {
4801 			l2cap_send_i_or_rr_or_rnr(chan);
4802 		} else {
4803 			if (test_and_clear_bit(CONN_REMOTE_BUSY,
4804 					       &chan->conn_state) &&
4805 			    chan->unacked_frames)
4806 				__set_retrans_timer(chan);
4807 
4808 			l2cap_ertm_send(chan);
4809 		}
4810 		break;
4811 	case L2CAP_EV_RECV_RNR:
4812 		set_bit(CONN_REMOTE_BUSY, &chan->conn_state);
4813 		l2cap_pass_to_tx(chan, control);
4814 		if (control && control->poll) {
4815 			set_bit(CONN_SEND_FBIT, &chan->conn_state);
4816 			l2cap_send_rr_or_rnr(chan, 0);
4817 		}
4818 		__clear_retrans_timer(chan);
4819 		l2cap_seq_list_clear(&chan->retrans_list);
4820 		break;
4821 	case L2CAP_EV_RECV_REJ:
4822 		l2cap_handle_rej(chan, control);
4823 		break;
4824 	case L2CAP_EV_RECV_SREJ:
4825 		l2cap_handle_srej(chan, control);
4826 		break;
4827 	default:
4828 		break;
4829 	}
4830 
4831 	if (skb && !skb_in_use) {
4832 		BT_DBG("Freeing %p", skb);
4833 		kfree_skb(skb);
4834 	}
4835 
4836 	return err;
4837 }
4838 
4839 static int l2cap_rx_state_srej_sent(struct l2cap_chan *chan,
4840 				    struct l2cap_ctrl *control,
4841 				    struct sk_buff *skb, u8 event)
4842 {
4843 	int err = 0;
4844 	u16 txseq = control->txseq;
4845 	bool skb_in_use = 0;
4846 
4847 	BT_DBG("chan %p, control %p, skb %p, event %d", chan, control, skb,
4848 	       event);
4849 
4850 	switch (event) {
4851 	case L2CAP_EV_RECV_IFRAME:
4852 		switch (l2cap_classify_txseq(chan, txseq)) {
4853 		case L2CAP_TXSEQ_EXPECTED:
4854 			/* Keep frame for reassembly later */
4855 			l2cap_pass_to_tx(chan, control);
4856 			skb_queue_tail(&chan->srej_q, skb);
4857 			skb_in_use = 1;
4858 			BT_DBG("Queued %p (queue len %d)", skb,
4859 			       skb_queue_len(&chan->srej_q));
4860 
4861 			chan->expected_tx_seq = __next_seq(chan, txseq);
4862 			break;
4863 		case L2CAP_TXSEQ_EXPECTED_SREJ:
4864 			l2cap_seq_list_pop(&chan->srej_list);
4865 
4866 			l2cap_pass_to_tx(chan, control);
4867 			skb_queue_tail(&chan->srej_q, skb);
4868 			skb_in_use = 1;
4869 			BT_DBG("Queued %p (queue len %d)", skb,
4870 			       skb_queue_len(&chan->srej_q));
4871 
4872 			err = l2cap_rx_queued_iframes(chan);
4873 			if (err)
4874 				break;
4875 
4876 			break;
4877 		case L2CAP_TXSEQ_UNEXPECTED:
4878 			/* Got a frame that can't be reassembled yet.
4879 			 * Save it for later, and send SREJs to cover
4880 			 * the missing frames.
4881 			 */
4882 			skb_queue_tail(&chan->srej_q, skb);
4883 			skb_in_use = 1;
4884 			BT_DBG("Queued %p (queue len %d)", skb,
4885 			       skb_queue_len(&chan->srej_q));
4886 
4887 			l2cap_pass_to_tx(chan, control);
4888 			l2cap_send_srej(chan, control->txseq);
4889 			break;
4890 		case L2CAP_TXSEQ_UNEXPECTED_SREJ:
4891 			/* This frame was requested with an SREJ, but
4892 			 * some expected retransmitted frames are
4893 			 * missing.  Request retransmission of missing
4894 			 * SREJ'd frames.
4895 			 */
4896 			skb_queue_tail(&chan->srej_q, skb);
4897 			skb_in_use = 1;
4898 			BT_DBG("Queued %p (queue len %d)", skb,
4899 			       skb_queue_len(&chan->srej_q));
4900 
4901 			l2cap_pass_to_tx(chan, control);
4902 			l2cap_send_srej_list(chan, control->txseq);
4903 			break;
4904 		case L2CAP_TXSEQ_DUPLICATE_SREJ:
4905 			/* We've already queued this frame.  Drop this copy. */
4906 			l2cap_pass_to_tx(chan, control);
4907 			break;
4908 		case L2CAP_TXSEQ_DUPLICATE:
4909 			/* Expecting a later sequence number, so this frame
4910 			 * was already received.  Ignore it completely.
4911 			 */
4912 			break;
4913 		case L2CAP_TXSEQ_INVALID_IGNORE:
4914 			break;
4915 		case L2CAP_TXSEQ_INVALID:
4916 		default:
4917 			l2cap_send_disconn_req(chan->conn, chan,
4918 					       ECONNRESET);
4919 			break;
4920 		}
4921 		break;
4922 	case L2CAP_EV_RECV_RR:
4923 		l2cap_pass_to_tx(chan, control);
4924 		if (control->final) {
4925 			clear_bit(CONN_REMOTE_BUSY, &chan->conn_state);
4926 
4927 			if (!test_and_clear_bit(CONN_REJ_ACT,
4928 						&chan->conn_state)) {
4929 				control->final = 0;
4930 				l2cap_retransmit_all(chan, control);
4931 			}
4932 
4933 			l2cap_ertm_send(chan);
4934 		} else if (control->poll) {
4935 			if (test_and_clear_bit(CONN_REMOTE_BUSY,
4936 					       &chan->conn_state) &&
4937 			    chan->unacked_frames) {
4938 				__set_retrans_timer(chan);
4939 			}
4940 
4941 			set_bit(CONN_SEND_FBIT, &chan->conn_state);
4942 			l2cap_send_srej_tail(chan);
4943 		} else {
4944 			if (test_and_clear_bit(CONN_REMOTE_BUSY,
4945 					       &chan->conn_state) &&
4946 			    chan->unacked_frames)
4947 				__set_retrans_timer(chan);
4948 
4949 			l2cap_send_ack(chan);
4950 		}
4951 		break;
4952 	case L2CAP_EV_RECV_RNR:
4953 		set_bit(CONN_REMOTE_BUSY, &chan->conn_state);
4954 		l2cap_pass_to_tx(chan, control);
4955 		if (control->poll) {
4956 			l2cap_send_srej_tail(chan);
4957 		} else {
4958 			struct l2cap_ctrl rr_control;
4959 			memset(&rr_control, 0, sizeof(rr_control));
4960 			rr_control.sframe = 1;
4961 			rr_control.super = L2CAP_SUPER_RR;
4962 			rr_control.reqseq = chan->buffer_seq;
4963 			l2cap_send_sframe(chan, &rr_control);
4964 		}
4965 
4966 		break;
4967 	case L2CAP_EV_RECV_REJ:
4968 		l2cap_handle_rej(chan, control);
4969 		break;
4970 	case L2CAP_EV_RECV_SREJ:
4971 		l2cap_handle_srej(chan, control);
4972 		break;
4973 	}
4974 
4975 	if (skb && !skb_in_use) {
4976 		BT_DBG("Freeing %p", skb);
4977 		kfree_skb(skb);
4978 	}
4979 
4980 	return err;
4981 }
4982 
4983 static bool __valid_reqseq(struct l2cap_chan *chan, u16 reqseq)
4984 {
4985 	/* Make sure reqseq is for a packet that has been sent but not acked */
4986 	u16 unacked;
4987 
4988 	unacked = __seq_offset(chan, chan->next_tx_seq, chan->expected_ack_seq);
4989 	return __seq_offset(chan, chan->next_tx_seq, reqseq) <= unacked;
4990 }
4991 
4992 static int l2cap_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
4993 		    struct sk_buff *skb, u8 event)
4994 {
4995 	int err = 0;
4996 
4997 	BT_DBG("chan %p, control %p, skb %p, event %d, state %d", chan,
4998 	       control, skb, event, chan->rx_state);
4999 
5000 	if (__valid_reqseq(chan, control->reqseq)) {
5001 		switch (chan->rx_state) {
5002 		case L2CAP_RX_STATE_RECV:
5003 			err = l2cap_rx_state_recv(chan, control, skb, event);
5004 			break;
5005 		case L2CAP_RX_STATE_SREJ_SENT:
5006 			err = l2cap_rx_state_srej_sent(chan, control, skb,
5007 						       event);
5008 			break;
5009 		default:
5010 			/* shut it down */
5011 			break;
5012 		}
5013 	} else {
5014 		BT_DBG("Invalid reqseq %d (next_tx_seq %d, expected_ack_seq %d",
5015 		       control->reqseq, chan->next_tx_seq,
5016 		       chan->expected_ack_seq);
5017 		l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
5018 	}
5019 
5020 	return err;
5021 }
5022 
5023 static int l2cap_stream_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control,
5024 			   struct sk_buff *skb)
5025 {
5026 	int err = 0;
5027 
5028 	BT_DBG("chan %p, control %p, skb %p, state %d", chan, control, skb,
5029 	       chan->rx_state);
5030 
5031 	if (l2cap_classify_txseq(chan, control->txseq) ==
5032 	    L2CAP_TXSEQ_EXPECTED) {
5033 		l2cap_pass_to_tx(chan, control);
5034 
5035 		BT_DBG("buffer_seq %d->%d", chan->buffer_seq,
5036 		       __next_seq(chan, chan->buffer_seq));
5037 
5038 		chan->buffer_seq = __next_seq(chan, chan->buffer_seq);
5039 
5040 		l2cap_reassemble_sdu(chan, skb, control);
5041 	} else {
5042 		if (chan->sdu) {
5043 			kfree_skb(chan->sdu);
5044 			chan->sdu = NULL;
5045 		}
5046 		chan->sdu_last_frag = NULL;
5047 		chan->sdu_len = 0;
5048 
5049 		if (skb) {
5050 			BT_DBG("Freeing %p", skb);
5051 			kfree_skb(skb);
5052 		}
5053 	}
5054 
5055 	chan->last_acked_seq = control->txseq;
5056 	chan->expected_tx_seq = __next_seq(chan, control->txseq);
5057 
5058 	return err;
5059 }
5060 
5061 static int l2cap_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
5062 {
5063 	struct l2cap_ctrl *control = &bt_cb(skb)->control;
5064 	u16 len;
5065 	u8 event;
5066 
5067 	__unpack_control(chan, skb);
5068 
5069 	len = skb->len;
5070 
5071 	/*
5072 	 * We can just drop the corrupted I-frame here.
5073 	 * Receiver will miss it and start proper recovery
5074 	 * procedures and ask for retransmission.
5075 	 */
5076 	if (l2cap_check_fcs(chan, skb))
5077 		goto drop;
5078 
5079 	if (!control->sframe && control->sar == L2CAP_SAR_START)
5080 		len -= L2CAP_SDULEN_SIZE;
5081 
5082 	if (chan->fcs == L2CAP_FCS_CRC16)
5083 		len -= L2CAP_FCS_SIZE;
5084 
5085 	if (len > chan->mps) {
5086 		l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
5087 		goto drop;
5088 	}
5089 
5090 	if (!control->sframe) {
5091 		int err;
5092 
5093 		BT_DBG("iframe sar %d, reqseq %d, final %d, txseq %d",
5094 		       control->sar, control->reqseq, control->final,
5095 		       control->txseq);
5096 
5097 		/* Validate F-bit - F=0 always valid, F=1 only
5098 		 * valid in TX WAIT_F
5099 		 */
5100 		if (control->final && chan->tx_state != L2CAP_TX_STATE_WAIT_F)
5101 			goto drop;
5102 
5103 		if (chan->mode != L2CAP_MODE_STREAMING) {
5104 			event = L2CAP_EV_RECV_IFRAME;
5105 			err = l2cap_rx(chan, control, skb, event);
5106 		} else {
5107 			err = l2cap_stream_rx(chan, control, skb);
5108 		}
5109 
5110 		if (err)
5111 			l2cap_send_disconn_req(chan->conn, chan,
5112 					       ECONNRESET);
5113 	} else {
5114 		const u8 rx_func_to_event[4] = {
5115 			L2CAP_EV_RECV_RR, L2CAP_EV_RECV_REJ,
5116 			L2CAP_EV_RECV_RNR, L2CAP_EV_RECV_SREJ
5117 		};
5118 
5119 		/* Only I-frames are expected in streaming mode */
5120 		if (chan->mode == L2CAP_MODE_STREAMING)
5121 			goto drop;
5122 
5123 		BT_DBG("sframe reqseq %d, final %d, poll %d, super %d",
5124 		       control->reqseq, control->final, control->poll,
5125 		       control->super);
5126 
5127 		if (len != 0) {
5128 			BT_ERR("%d", len);
5129 			l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
5130 			goto drop;
5131 		}
5132 
5133 		/* Validate F and P bits */
5134 		if (control->final && (control->poll ||
5135 				       chan->tx_state != L2CAP_TX_STATE_WAIT_F))
5136 			goto drop;
5137 
5138 		event = rx_func_to_event[control->super];
5139 		if (l2cap_rx(chan, control, skb, event))
5140 			l2cap_send_disconn_req(chan->conn, chan, ECONNRESET);
5141 	}
5142 
5143 	return 0;
5144 
5145 drop:
5146 	kfree_skb(skb);
5147 	return 0;
5148 }
5149 
5150 static void l2cap_data_channel(struct l2cap_conn *conn, u16 cid,
5151 			       struct sk_buff *skb)
5152 {
5153 	struct l2cap_chan *chan;
5154 
5155 	chan = l2cap_get_chan_by_scid(conn, cid);
5156 	if (!chan) {
5157 		if (cid == L2CAP_CID_A2MP) {
5158 			chan = a2mp_channel_create(conn, skb);
5159 			if (!chan) {
5160 				kfree_skb(skb);
5161 				return;
5162 			}
5163 
5164 			l2cap_chan_lock(chan);
5165 		} else {
5166 			BT_DBG("unknown cid 0x%4.4x", cid);
5167 			/* Drop packet and return */
5168 			kfree_skb(skb);
5169 			return;
5170 		}
5171 	}
5172 
5173 	BT_DBG("chan %p, len %d", chan, skb->len);
5174 
5175 	if (chan->state != BT_CONNECTED)
5176 		goto drop;
5177 
5178 	switch (chan->mode) {
5179 	case L2CAP_MODE_BASIC:
5180 		/* If socket recv buffers overflows we drop data here
5181 		 * which is *bad* because L2CAP has to be reliable.
5182 		 * But we don't have any other choice. L2CAP doesn't
5183 		 * provide flow control mechanism. */
5184 
5185 		if (chan->imtu < skb->len)
5186 			goto drop;
5187 
5188 		if (!chan->ops->recv(chan, skb))
5189 			goto done;
5190 		break;
5191 
5192 	case L2CAP_MODE_ERTM:
5193 	case L2CAP_MODE_STREAMING:
5194 		l2cap_data_rcv(chan, skb);
5195 		goto done;
5196 
5197 	default:
5198 		BT_DBG("chan %p: bad mode 0x%2.2x", chan, chan->mode);
5199 		break;
5200 	}
5201 
5202 drop:
5203 	kfree_skb(skb);
5204 
5205 done:
5206 	l2cap_chan_unlock(chan);
5207 }
5208 
5209 static void l2cap_conless_channel(struct l2cap_conn *conn, __le16 psm,
5210 				  struct sk_buff *skb)
5211 {
5212 	struct l2cap_chan *chan;
5213 
5214 	chan = l2cap_global_chan_by_psm(0, psm, conn->src, conn->dst);
5215 	if (!chan)
5216 		goto drop;
5217 
5218 	BT_DBG("chan %p, len %d", chan, skb->len);
5219 
5220 	if (chan->state != BT_BOUND && chan->state != BT_CONNECTED)
5221 		goto drop;
5222 
5223 	if (chan->imtu < skb->len)
5224 		goto drop;
5225 
5226 	if (!chan->ops->recv(chan, skb))
5227 		return;
5228 
5229 drop:
5230 	kfree_skb(skb);
5231 }
5232 
5233 static void l2cap_att_channel(struct l2cap_conn *conn, u16 cid,
5234 			      struct sk_buff *skb)
5235 {
5236 	struct l2cap_chan *chan;
5237 
5238 	chan = l2cap_global_chan_by_scid(0, cid, conn->src, conn->dst);
5239 	if (!chan)
5240 		goto drop;
5241 
5242 	BT_DBG("chan %p, len %d", chan, skb->len);
5243 
5244 	if (chan->state != BT_BOUND && chan->state != BT_CONNECTED)
5245 		goto drop;
5246 
5247 	if (chan->imtu < skb->len)
5248 		goto drop;
5249 
5250 	if (!chan->ops->recv(chan, skb))
5251 		return;
5252 
5253 drop:
5254 	kfree_skb(skb);
5255 }
5256 
5257 static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb)
5258 {
5259 	struct l2cap_hdr *lh = (void *) skb->data;
5260 	u16 cid, len;
5261 	__le16 psm;
5262 
5263 	skb_pull(skb, L2CAP_HDR_SIZE);
5264 	cid = __le16_to_cpu(lh->cid);
5265 	len = __le16_to_cpu(lh->len);
5266 
5267 	if (len != skb->len) {
5268 		kfree_skb(skb);
5269 		return;
5270 	}
5271 
5272 	BT_DBG("len %d, cid 0x%4.4x", len, cid);
5273 
5274 	switch (cid) {
5275 	case L2CAP_CID_LE_SIGNALING:
5276 	case L2CAP_CID_SIGNALING:
5277 		l2cap_sig_channel(conn, skb);
5278 		break;
5279 
5280 	case L2CAP_CID_CONN_LESS:
5281 		psm = get_unaligned((__le16 *) skb->data);
5282 		skb_pull(skb, L2CAP_PSMLEN_SIZE);
5283 		l2cap_conless_channel(conn, psm, skb);
5284 		break;
5285 
5286 	case L2CAP_CID_LE_DATA:
5287 		l2cap_att_channel(conn, cid, skb);
5288 		break;
5289 
5290 	case L2CAP_CID_SMP:
5291 		if (smp_sig_channel(conn, skb))
5292 			l2cap_conn_del(conn->hcon, EACCES);
5293 		break;
5294 
5295 	default:
5296 		l2cap_data_channel(conn, cid, skb);
5297 		break;
5298 	}
5299 }
5300 
5301 /* ---- L2CAP interface with lower layer (HCI) ---- */
5302 
5303 int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
5304 {
5305 	int exact = 0, lm1 = 0, lm2 = 0;
5306 	struct l2cap_chan *c;
5307 
5308 	BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
5309 
5310 	/* Find listening sockets and check their link_mode */
5311 	read_lock(&chan_list_lock);
5312 	list_for_each_entry(c, &chan_list, global_l) {
5313 		struct sock *sk = c->sk;
5314 
5315 		if (c->state != BT_LISTEN)
5316 			continue;
5317 
5318 		if (!bacmp(&bt_sk(sk)->src, &hdev->bdaddr)) {
5319 			lm1 |= HCI_LM_ACCEPT;
5320 			if (test_bit(FLAG_ROLE_SWITCH, &c->flags))
5321 				lm1 |= HCI_LM_MASTER;
5322 			exact++;
5323 		} else if (!bacmp(&bt_sk(sk)->src, BDADDR_ANY)) {
5324 			lm2 |= HCI_LM_ACCEPT;
5325 			if (test_bit(FLAG_ROLE_SWITCH, &c->flags))
5326 				lm2 |= HCI_LM_MASTER;
5327 		}
5328 	}
5329 	read_unlock(&chan_list_lock);
5330 
5331 	return exact ? lm1 : lm2;
5332 }
5333 
5334 int l2cap_connect_cfm(struct hci_conn *hcon, u8 status)
5335 {
5336 	struct l2cap_conn *conn;
5337 
5338 	BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
5339 
5340 	if (!status) {
5341 		conn = l2cap_conn_add(hcon, status);
5342 		if (conn)
5343 			l2cap_conn_ready(conn);
5344 	} else
5345 		l2cap_conn_del(hcon, bt_to_errno(status));
5346 
5347 	return 0;
5348 }
5349 
5350 int l2cap_disconn_ind(struct hci_conn *hcon)
5351 {
5352 	struct l2cap_conn *conn = hcon->l2cap_data;
5353 
5354 	BT_DBG("hcon %p", hcon);
5355 
5356 	if (!conn)
5357 		return HCI_ERROR_REMOTE_USER_TERM;
5358 	return conn->disc_reason;
5359 }
5360 
5361 int l2cap_disconn_cfm(struct hci_conn *hcon, u8 reason)
5362 {
5363 	BT_DBG("hcon %p reason %d", hcon, reason);
5364 
5365 	l2cap_conn_del(hcon, bt_to_errno(reason));
5366 	return 0;
5367 }
5368 
5369 static inline void l2cap_check_encryption(struct l2cap_chan *chan, u8 encrypt)
5370 {
5371 	if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED)
5372 		return;
5373 
5374 	if (encrypt == 0x00) {
5375 		if (chan->sec_level == BT_SECURITY_MEDIUM) {
5376 			__set_chan_timer(chan, L2CAP_ENC_TIMEOUT);
5377 		} else if (chan->sec_level == BT_SECURITY_HIGH)
5378 			l2cap_chan_close(chan, ECONNREFUSED);
5379 	} else {
5380 		if (chan->sec_level == BT_SECURITY_MEDIUM)
5381 			__clear_chan_timer(chan);
5382 	}
5383 }
5384 
5385 int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
5386 {
5387 	struct l2cap_conn *conn = hcon->l2cap_data;
5388 	struct l2cap_chan *chan;
5389 
5390 	if (!conn)
5391 		return 0;
5392 
5393 	BT_DBG("conn %p status 0x%2.2x encrypt %u", conn, status, encrypt);
5394 
5395 	if (hcon->type == LE_LINK) {
5396 		if (!status && encrypt)
5397 			smp_distribute_keys(conn, 0);
5398 		cancel_delayed_work(&conn->security_timer);
5399 	}
5400 
5401 	mutex_lock(&conn->chan_lock);
5402 
5403 	list_for_each_entry(chan, &conn->chan_l, list) {
5404 		l2cap_chan_lock(chan);
5405 
5406 		BT_DBG("chan %p scid 0x%4.4x state %s", chan, chan->scid,
5407 		       state_to_string(chan->state));
5408 
5409 		if (chan->scid == L2CAP_CID_LE_DATA) {
5410 			if (!status && encrypt) {
5411 				chan->sec_level = hcon->sec_level;
5412 				l2cap_chan_ready(chan);
5413 			}
5414 
5415 			l2cap_chan_unlock(chan);
5416 			continue;
5417 		}
5418 
5419 		if (test_bit(CONF_CONNECT_PEND, &chan->conf_state)) {
5420 			l2cap_chan_unlock(chan);
5421 			continue;
5422 		}
5423 
5424 		if (!status && (chan->state == BT_CONNECTED ||
5425 						chan->state == BT_CONFIG)) {
5426 			struct sock *sk = chan->sk;
5427 
5428 			clear_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
5429 			sk->sk_state_change(sk);
5430 
5431 			l2cap_check_encryption(chan, encrypt);
5432 			l2cap_chan_unlock(chan);
5433 			continue;
5434 		}
5435 
5436 		if (chan->state == BT_CONNECT) {
5437 			if (!status) {
5438 				l2cap_send_conn_req(chan);
5439 			} else {
5440 				__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
5441 			}
5442 		} else if (chan->state == BT_CONNECT2) {
5443 			struct sock *sk = chan->sk;
5444 			struct l2cap_conn_rsp rsp;
5445 			__u16 res, stat;
5446 
5447 			lock_sock(sk);
5448 
5449 			if (!status) {
5450 				if (test_bit(BT_SK_DEFER_SETUP,
5451 					     &bt_sk(sk)->flags)) {
5452 					struct sock *parent = bt_sk(sk)->parent;
5453 					res = L2CAP_CR_PEND;
5454 					stat = L2CAP_CS_AUTHOR_PEND;
5455 					if (parent)
5456 						parent->sk_data_ready(parent, 0);
5457 				} else {
5458 					__l2cap_state_change(chan, BT_CONFIG);
5459 					res = L2CAP_CR_SUCCESS;
5460 					stat = L2CAP_CS_NO_INFO;
5461 				}
5462 			} else {
5463 				__l2cap_state_change(chan, BT_DISCONN);
5464 				__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
5465 				res = L2CAP_CR_SEC_BLOCK;
5466 				stat = L2CAP_CS_NO_INFO;
5467 			}
5468 
5469 			release_sock(sk);
5470 
5471 			rsp.scid   = cpu_to_le16(chan->dcid);
5472 			rsp.dcid   = cpu_to_le16(chan->scid);
5473 			rsp.result = cpu_to_le16(res);
5474 			rsp.status = cpu_to_le16(stat);
5475 			l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
5476 							sizeof(rsp), &rsp);
5477 
5478 			if (!test_bit(CONF_REQ_SENT, &chan->conf_state) &&
5479 			    res == L2CAP_CR_SUCCESS) {
5480 				char buf[128];
5481 				set_bit(CONF_REQ_SENT, &chan->conf_state);
5482 				l2cap_send_cmd(conn, l2cap_get_ident(conn),
5483 					       L2CAP_CONF_REQ,
5484 					       l2cap_build_conf_req(chan, buf),
5485 					       buf);
5486 				chan->num_conf_req++;
5487 			}
5488 		}
5489 
5490 		l2cap_chan_unlock(chan);
5491 	}
5492 
5493 	mutex_unlock(&conn->chan_lock);
5494 
5495 	return 0;
5496 }
5497 
5498 int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, u16 flags)
5499 {
5500 	struct l2cap_conn *conn = hcon->l2cap_data;
5501 
5502 	if (!conn)
5503 		conn = l2cap_conn_add(hcon, 0);
5504 
5505 	if (!conn)
5506 		goto drop;
5507 
5508 	BT_DBG("conn %p len %d flags 0x%x", conn, skb->len, flags);
5509 
5510 	if (!(flags & ACL_CONT)) {
5511 		struct l2cap_hdr *hdr;
5512 		int len;
5513 
5514 		if (conn->rx_len) {
5515 			BT_ERR("Unexpected start frame (len %d)", skb->len);
5516 			kfree_skb(conn->rx_skb);
5517 			conn->rx_skb = NULL;
5518 			conn->rx_len = 0;
5519 			l2cap_conn_unreliable(conn, ECOMM);
5520 		}
5521 
5522 		/* Start fragment always begin with Basic L2CAP header */
5523 		if (skb->len < L2CAP_HDR_SIZE) {
5524 			BT_ERR("Frame is too short (len %d)", skb->len);
5525 			l2cap_conn_unreliable(conn, ECOMM);
5526 			goto drop;
5527 		}
5528 
5529 		hdr = (struct l2cap_hdr *) skb->data;
5530 		len = __le16_to_cpu(hdr->len) + L2CAP_HDR_SIZE;
5531 
5532 		if (len == skb->len) {
5533 			/* Complete frame received */
5534 			l2cap_recv_frame(conn, skb);
5535 			return 0;
5536 		}
5537 
5538 		BT_DBG("Start: total len %d, frag len %d", len, skb->len);
5539 
5540 		if (skb->len > len) {
5541 			BT_ERR("Frame is too long (len %d, expected len %d)",
5542 				skb->len, len);
5543 			l2cap_conn_unreliable(conn, ECOMM);
5544 			goto drop;
5545 		}
5546 
5547 		/* Allocate skb for the complete frame (with header) */
5548 		conn->rx_skb = bt_skb_alloc(len, GFP_ATOMIC);
5549 		if (!conn->rx_skb)
5550 			goto drop;
5551 
5552 		skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
5553 								skb->len);
5554 		conn->rx_len = len - skb->len;
5555 	} else {
5556 		BT_DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
5557 
5558 		if (!conn->rx_len) {
5559 			BT_ERR("Unexpected continuation frame (len %d)", skb->len);
5560 			l2cap_conn_unreliable(conn, ECOMM);
5561 			goto drop;
5562 		}
5563 
5564 		if (skb->len > conn->rx_len) {
5565 			BT_ERR("Fragment is too long (len %d, expected %d)",
5566 					skb->len, conn->rx_len);
5567 			kfree_skb(conn->rx_skb);
5568 			conn->rx_skb = NULL;
5569 			conn->rx_len = 0;
5570 			l2cap_conn_unreliable(conn, ECOMM);
5571 			goto drop;
5572 		}
5573 
5574 		skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
5575 								skb->len);
5576 		conn->rx_len -= skb->len;
5577 
5578 		if (!conn->rx_len) {
5579 			/* Complete frame received */
5580 			l2cap_recv_frame(conn, conn->rx_skb);
5581 			conn->rx_skb = NULL;
5582 		}
5583 	}
5584 
5585 drop:
5586 	kfree_skb(skb);
5587 	return 0;
5588 }
5589 
5590 static int l2cap_debugfs_show(struct seq_file *f, void *p)
5591 {
5592 	struct l2cap_chan *c;
5593 
5594 	read_lock(&chan_list_lock);
5595 
5596 	list_for_each_entry(c, &chan_list, global_l) {
5597 		struct sock *sk = c->sk;
5598 
5599 		seq_printf(f, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d %d %d\n",
5600 					batostr(&bt_sk(sk)->src),
5601 					batostr(&bt_sk(sk)->dst),
5602 					c->state, __le16_to_cpu(c->psm),
5603 					c->scid, c->dcid, c->imtu, c->omtu,
5604 					c->sec_level, c->mode);
5605 	}
5606 
5607 	read_unlock(&chan_list_lock);
5608 
5609 	return 0;
5610 }
5611 
5612 static int l2cap_debugfs_open(struct inode *inode, struct file *file)
5613 {
5614 	return single_open(file, l2cap_debugfs_show, inode->i_private);
5615 }
5616 
5617 static const struct file_operations l2cap_debugfs_fops = {
5618 	.open		= l2cap_debugfs_open,
5619 	.read		= seq_read,
5620 	.llseek		= seq_lseek,
5621 	.release	= single_release,
5622 };
5623 
5624 static struct dentry *l2cap_debugfs;
5625 
5626 int __init l2cap_init(void)
5627 {
5628 	int err;
5629 
5630 	err = l2cap_init_sockets();
5631 	if (err < 0)
5632 		return err;
5633 
5634 	if (bt_debugfs) {
5635 		l2cap_debugfs = debugfs_create_file("l2cap", 0444,
5636 					bt_debugfs, NULL, &l2cap_debugfs_fops);
5637 		if (!l2cap_debugfs)
5638 			BT_ERR("Failed to create L2CAP debug file");
5639 	}
5640 
5641 	return 0;
5642 }
5643 
5644 void l2cap_exit(void)
5645 {
5646 	debugfs_remove(l2cap_debugfs);
5647 	l2cap_cleanup_sockets();
5648 }
5649 
5650 module_param(disable_ertm, bool, 0644);
5651 MODULE_PARM_DESC(disable_ertm, "Disable enhanced retransmission mode");
5652