xref: /openbmc/linux/net/bluetooth/hci_core.c (revision 1eb4c977)
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4    Copyright (C) 2011 ProFUSION Embedded Systems
5 
6    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
7 
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License version 2 as
10    published by the Free Software Foundation;
11 
12    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
15    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
16    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
17    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
19    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 
21    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
22    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
23    SOFTWARE IS DISCLAIMED.
24 */
25 
26 /* Bluetooth HCI core. */
27 
28 #include <linux/jiffies.h>
29 #include <linux/module.h>
30 #include <linux/kmod.h>
31 
32 #include <linux/types.h>
33 #include <linux/errno.h>
34 #include <linux/kernel.h>
35 #include <linux/sched.h>
36 #include <linux/slab.h>
37 #include <linux/poll.h>
38 #include <linux/fcntl.h>
39 #include <linux/init.h>
40 #include <linux/skbuff.h>
41 #include <linux/workqueue.h>
42 #include <linux/interrupt.h>
43 #include <linux/rfkill.h>
44 #include <linux/timer.h>
45 #include <linux/crypto.h>
46 #include <net/sock.h>
47 
48 #include <asm/system.h>
49 #include <linux/uaccess.h>
50 #include <asm/unaligned.h>
51 
52 #include <net/bluetooth/bluetooth.h>
53 #include <net/bluetooth/hci_core.h>
54 
55 #define AUTO_OFF_TIMEOUT 2000
56 
57 static void hci_rx_work(struct work_struct *work);
58 static void hci_cmd_work(struct work_struct *work);
59 static void hci_tx_work(struct work_struct *work);
60 
61 /* HCI device list */
62 LIST_HEAD(hci_dev_list);
63 DEFINE_RWLOCK(hci_dev_list_lock);
64 
65 /* HCI callback list */
66 LIST_HEAD(hci_cb_list);
67 DEFINE_RWLOCK(hci_cb_list_lock);
68 
69 /* ---- HCI notifications ---- */
70 
71 static void hci_notify(struct hci_dev *hdev, int event)
72 {
73 	hci_sock_dev_event(hdev, event);
74 }
75 
76 /* ---- HCI requests ---- */
77 
78 void hci_req_complete(struct hci_dev *hdev, __u16 cmd, int result)
79 {
80 	BT_DBG("%s command 0x%04x result 0x%2.2x", hdev->name, cmd, result);
81 
82 	/* If this is the init phase check if the completed command matches
83 	 * the last init command, and if not just return.
84 	 */
85 	if (test_bit(HCI_INIT, &hdev->flags) && hdev->init_last_cmd != cmd) {
86 		struct hci_command_hdr *sent = (void *) hdev->sent_cmd->data;
87 		struct sk_buff *skb;
88 
89 		/* Some CSR based controllers generate a spontaneous
90 		 * reset complete event during init and any pending
91 		 * command will never be completed. In such a case we
92 		 * need to resend whatever was the last sent
93 		 * command.
94 		 */
95 
96 		if (cmd != HCI_OP_RESET || sent->opcode == HCI_OP_RESET)
97 			return;
98 
99 		skb = skb_clone(hdev->sent_cmd, GFP_ATOMIC);
100 		if (skb) {
101 			skb_queue_head(&hdev->cmd_q, skb);
102 			queue_work(hdev->workqueue, &hdev->cmd_work);
103 		}
104 
105 		return;
106 	}
107 
108 	if (hdev->req_status == HCI_REQ_PEND) {
109 		hdev->req_result = result;
110 		hdev->req_status = HCI_REQ_DONE;
111 		wake_up_interruptible(&hdev->req_wait_q);
112 	}
113 }
114 
115 static void hci_req_cancel(struct hci_dev *hdev, int err)
116 {
117 	BT_DBG("%s err 0x%2.2x", hdev->name, err);
118 
119 	if (hdev->req_status == HCI_REQ_PEND) {
120 		hdev->req_result = err;
121 		hdev->req_status = HCI_REQ_CANCELED;
122 		wake_up_interruptible(&hdev->req_wait_q);
123 	}
124 }
125 
126 /* Execute request and wait for completion. */
127 static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt),
128 					unsigned long opt, __u32 timeout)
129 {
130 	DECLARE_WAITQUEUE(wait, current);
131 	int err = 0;
132 
133 	BT_DBG("%s start", hdev->name);
134 
135 	hdev->req_status = HCI_REQ_PEND;
136 
137 	add_wait_queue(&hdev->req_wait_q, &wait);
138 	set_current_state(TASK_INTERRUPTIBLE);
139 
140 	req(hdev, opt);
141 	schedule_timeout(timeout);
142 
143 	remove_wait_queue(&hdev->req_wait_q, &wait);
144 
145 	if (signal_pending(current))
146 		return -EINTR;
147 
148 	switch (hdev->req_status) {
149 	case HCI_REQ_DONE:
150 		err = -bt_to_errno(hdev->req_result);
151 		break;
152 
153 	case HCI_REQ_CANCELED:
154 		err = -hdev->req_result;
155 		break;
156 
157 	default:
158 		err = -ETIMEDOUT;
159 		break;
160 	}
161 
162 	hdev->req_status = hdev->req_result = 0;
163 
164 	BT_DBG("%s end: err %d", hdev->name, err);
165 
166 	return err;
167 }
168 
169 static inline int hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt),
170 					unsigned long opt, __u32 timeout)
171 {
172 	int ret;
173 
174 	if (!test_bit(HCI_UP, &hdev->flags))
175 		return -ENETDOWN;
176 
177 	/* Serialize all requests */
178 	hci_req_lock(hdev);
179 	ret = __hci_request(hdev, req, opt, timeout);
180 	hci_req_unlock(hdev);
181 
182 	return ret;
183 }
184 
185 static void hci_reset_req(struct hci_dev *hdev, unsigned long opt)
186 {
187 	BT_DBG("%s %ld", hdev->name, opt);
188 
189 	/* Reset device */
190 	set_bit(HCI_RESET, &hdev->flags);
191 	hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
192 }
193 
194 static void bredr_init(struct hci_dev *hdev)
195 {
196 	struct hci_cp_delete_stored_link_key cp;
197 	__le16 param;
198 	__u8 flt_type;
199 
200 	hdev->flow_ctl_mode = HCI_FLOW_CTL_MODE_PACKET_BASED;
201 
202 	/* Mandatory initialization */
203 
204 	/* Reset */
205 	if (!test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks)) {
206 		set_bit(HCI_RESET, &hdev->flags);
207 		hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
208 	}
209 
210 	/* Read Local Supported Features */
211 	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_FEATURES, 0, NULL);
212 
213 	/* Read Local Version */
214 	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL);
215 
216 	/* Read Buffer Size (ACL mtu, max pkt, etc.) */
217 	hci_send_cmd(hdev, HCI_OP_READ_BUFFER_SIZE, 0, NULL);
218 
219 	/* Read BD Address */
220 	hci_send_cmd(hdev, HCI_OP_READ_BD_ADDR, 0, NULL);
221 
222 	/* Read Class of Device */
223 	hci_send_cmd(hdev, HCI_OP_READ_CLASS_OF_DEV, 0, NULL);
224 
225 	/* Read Local Name */
226 	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_NAME, 0, NULL);
227 
228 	/* Read Voice Setting */
229 	hci_send_cmd(hdev, HCI_OP_READ_VOICE_SETTING, 0, NULL);
230 
231 	/* Optional initialization */
232 
233 	/* Clear Event Filters */
234 	flt_type = HCI_FLT_CLEAR_ALL;
235 	hci_send_cmd(hdev, HCI_OP_SET_EVENT_FLT, 1, &flt_type);
236 
237 	/* Connection accept timeout ~20 secs */
238 	param = cpu_to_le16(0x7d00);
239 	hci_send_cmd(hdev, HCI_OP_WRITE_CA_TIMEOUT, 2, &param);
240 
241 	bacpy(&cp.bdaddr, BDADDR_ANY);
242 	cp.delete_all = 1;
243 	hci_send_cmd(hdev, HCI_OP_DELETE_STORED_LINK_KEY, sizeof(cp), &cp);
244 }
245 
246 static void amp_init(struct hci_dev *hdev)
247 {
248 	hdev->flow_ctl_mode = HCI_FLOW_CTL_MODE_BLOCK_BASED;
249 
250 	/* Reset */
251 	hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
252 
253 	/* Read Local Version */
254 	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL);
255 }
256 
257 static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
258 {
259 	struct sk_buff *skb;
260 
261 	BT_DBG("%s %ld", hdev->name, opt);
262 
263 	/* Driver initialization */
264 
265 	/* Special commands */
266 	while ((skb = skb_dequeue(&hdev->driver_init))) {
267 		bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
268 		skb->dev = (void *) hdev;
269 
270 		skb_queue_tail(&hdev->cmd_q, skb);
271 		queue_work(hdev->workqueue, &hdev->cmd_work);
272 	}
273 	skb_queue_purge(&hdev->driver_init);
274 
275 	switch (hdev->dev_type) {
276 	case HCI_BREDR:
277 		bredr_init(hdev);
278 		break;
279 
280 	case HCI_AMP:
281 		amp_init(hdev);
282 		break;
283 
284 	default:
285 		BT_ERR("Unknown device type %d", hdev->dev_type);
286 		break;
287 	}
288 
289 }
290 
291 static void hci_le_init_req(struct hci_dev *hdev, unsigned long opt)
292 {
293 	BT_DBG("%s", hdev->name);
294 
295 	/* Read LE buffer size */
296 	hci_send_cmd(hdev, HCI_OP_LE_READ_BUFFER_SIZE, 0, NULL);
297 }
298 
299 static void hci_scan_req(struct hci_dev *hdev, unsigned long opt)
300 {
301 	__u8 scan = opt;
302 
303 	BT_DBG("%s %x", hdev->name, scan);
304 
305 	/* Inquiry and Page scans */
306 	hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan);
307 }
308 
309 static void hci_auth_req(struct hci_dev *hdev, unsigned long opt)
310 {
311 	__u8 auth = opt;
312 
313 	BT_DBG("%s %x", hdev->name, auth);
314 
315 	/* Authentication */
316 	hci_send_cmd(hdev, HCI_OP_WRITE_AUTH_ENABLE, 1, &auth);
317 }
318 
319 static void hci_encrypt_req(struct hci_dev *hdev, unsigned long opt)
320 {
321 	__u8 encrypt = opt;
322 
323 	BT_DBG("%s %x", hdev->name, encrypt);
324 
325 	/* Encryption */
326 	hci_send_cmd(hdev, HCI_OP_WRITE_ENCRYPT_MODE, 1, &encrypt);
327 }
328 
329 static void hci_linkpol_req(struct hci_dev *hdev, unsigned long opt)
330 {
331 	__le16 policy = cpu_to_le16(opt);
332 
333 	BT_DBG("%s %x", hdev->name, policy);
334 
335 	/* Default link policy */
336 	hci_send_cmd(hdev, HCI_OP_WRITE_DEF_LINK_POLICY, 2, &policy);
337 }
338 
339 /* Get HCI device by index.
340  * Device is held on return. */
341 struct hci_dev *hci_dev_get(int index)
342 {
343 	struct hci_dev *hdev = NULL, *d;
344 
345 	BT_DBG("%d", index);
346 
347 	if (index < 0)
348 		return NULL;
349 
350 	read_lock(&hci_dev_list_lock);
351 	list_for_each_entry(d, &hci_dev_list, list) {
352 		if (d->id == index) {
353 			hdev = hci_dev_hold(d);
354 			break;
355 		}
356 	}
357 	read_unlock(&hci_dev_list_lock);
358 	return hdev;
359 }
360 
361 /* ---- Inquiry support ---- */
362 
363 bool hci_discovery_active(struct hci_dev *hdev)
364 {
365 	struct discovery_state *discov = &hdev->discovery;
366 
367 	switch (discov->state) {
368 	case DISCOVERY_FINDING:
369 	case DISCOVERY_RESOLVING:
370 		return true;
371 
372 	default:
373 		return false;
374 	}
375 }
376 
377 void hci_discovery_set_state(struct hci_dev *hdev, int state)
378 {
379 	BT_DBG("%s state %u -> %u", hdev->name, hdev->discovery.state, state);
380 
381 	if (hdev->discovery.state == state)
382 		return;
383 
384 	switch (state) {
385 	case DISCOVERY_STOPPED:
386 		if (hdev->discovery.state != DISCOVERY_STARTING)
387 			mgmt_discovering(hdev, 0);
388 		hdev->discovery.type = 0;
389 		break;
390 	case DISCOVERY_STARTING:
391 		break;
392 	case DISCOVERY_FINDING:
393 		mgmt_discovering(hdev, 1);
394 		break;
395 	case DISCOVERY_RESOLVING:
396 		break;
397 	case DISCOVERY_STOPPING:
398 		break;
399 	}
400 
401 	hdev->discovery.state = state;
402 }
403 
404 static void inquiry_cache_flush(struct hci_dev *hdev)
405 {
406 	struct discovery_state *cache = &hdev->discovery;
407 	struct inquiry_entry *p, *n;
408 
409 	list_for_each_entry_safe(p, n, &cache->all, all) {
410 		list_del(&p->all);
411 		kfree(p);
412 	}
413 
414 	INIT_LIST_HEAD(&cache->unknown);
415 	INIT_LIST_HEAD(&cache->resolve);
416 }
417 
418 struct inquiry_entry *hci_inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
419 {
420 	struct discovery_state *cache = &hdev->discovery;
421 	struct inquiry_entry *e;
422 
423 	BT_DBG("cache %p, %s", cache, batostr(bdaddr));
424 
425 	list_for_each_entry(e, &cache->all, all) {
426 		if (!bacmp(&e->data.bdaddr, bdaddr))
427 			return e;
428 	}
429 
430 	return NULL;
431 }
432 
433 struct inquiry_entry *hci_inquiry_cache_lookup_unknown(struct hci_dev *hdev,
434 						       bdaddr_t *bdaddr)
435 {
436 	struct discovery_state *cache = &hdev->discovery;
437 	struct inquiry_entry *e;
438 
439 	BT_DBG("cache %p, %s", cache, batostr(bdaddr));
440 
441 	list_for_each_entry(e, &cache->unknown, list) {
442 		if (!bacmp(&e->data.bdaddr, bdaddr))
443 			return e;
444 	}
445 
446 	return NULL;
447 }
448 
449 struct inquiry_entry *hci_inquiry_cache_lookup_resolve(struct hci_dev *hdev,
450 						       bdaddr_t *bdaddr,
451 						       int state)
452 {
453 	struct discovery_state *cache = &hdev->discovery;
454 	struct inquiry_entry *e;
455 
456 	BT_DBG("cache %p bdaddr %s state %d", cache, batostr(bdaddr), state);
457 
458 	list_for_each_entry(e, &cache->resolve, list) {
459 		if (!bacmp(bdaddr, BDADDR_ANY) && e->name_state == state)
460 			return e;
461 		if (!bacmp(&e->data.bdaddr, bdaddr))
462 			return e;
463 	}
464 
465 	return NULL;
466 }
467 
468 void hci_inquiry_cache_update_resolve(struct hci_dev *hdev,
469 				      struct inquiry_entry *ie)
470 {
471 	struct discovery_state *cache = &hdev->discovery;
472 	struct list_head *pos = &cache->resolve;
473 	struct inquiry_entry *p;
474 
475 	list_del(&ie->list);
476 
477 	list_for_each_entry(p, &cache->resolve, list) {
478 		if (p->name_state != NAME_PENDING &&
479 				abs(p->data.rssi) >= abs(ie->data.rssi))
480 			break;
481 		pos = &p->list;
482 	}
483 
484 	list_add(&ie->list, pos);
485 }
486 
487 bool hci_inquiry_cache_update(struct hci_dev *hdev, struct inquiry_data *data,
488 			      bool name_known, bool *ssp)
489 {
490 	struct discovery_state *cache = &hdev->discovery;
491 	struct inquiry_entry *ie;
492 
493 	BT_DBG("cache %p, %s", cache, batostr(&data->bdaddr));
494 
495 	if (ssp)
496 		*ssp = data->ssp_mode;
497 
498 	ie = hci_inquiry_cache_lookup(hdev, &data->bdaddr);
499 	if (ie) {
500 		if (ie->data.ssp_mode && ssp)
501 			*ssp = true;
502 
503 		if (ie->name_state == NAME_NEEDED &&
504 						data->rssi != ie->data.rssi) {
505 			ie->data.rssi = data->rssi;
506 			hci_inquiry_cache_update_resolve(hdev, ie);
507 		}
508 
509 		goto update;
510 	}
511 
512 	/* Entry not in the cache. Add new one. */
513 	ie = kzalloc(sizeof(struct inquiry_entry), GFP_ATOMIC);
514 	if (!ie)
515 		return false;
516 
517 	list_add(&ie->all, &cache->all);
518 
519 	if (name_known) {
520 		ie->name_state = NAME_KNOWN;
521 	} else {
522 		ie->name_state = NAME_NOT_KNOWN;
523 		list_add(&ie->list, &cache->unknown);
524 	}
525 
526 update:
527 	if (name_known && ie->name_state != NAME_KNOWN &&
528 					ie->name_state != NAME_PENDING) {
529 		ie->name_state = NAME_KNOWN;
530 		list_del(&ie->list);
531 	}
532 
533 	memcpy(&ie->data, data, sizeof(*data));
534 	ie->timestamp = jiffies;
535 	cache->timestamp = jiffies;
536 
537 	if (ie->name_state == NAME_NOT_KNOWN)
538 		return false;
539 
540 	return true;
541 }
542 
543 static int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf)
544 {
545 	struct discovery_state *cache = &hdev->discovery;
546 	struct inquiry_info *info = (struct inquiry_info *) buf;
547 	struct inquiry_entry *e;
548 	int copied = 0;
549 
550 	list_for_each_entry(e, &cache->all, all) {
551 		struct inquiry_data *data = &e->data;
552 
553 		if (copied >= num)
554 			break;
555 
556 		bacpy(&info->bdaddr, &data->bdaddr);
557 		info->pscan_rep_mode	= data->pscan_rep_mode;
558 		info->pscan_period_mode	= data->pscan_period_mode;
559 		info->pscan_mode	= data->pscan_mode;
560 		memcpy(info->dev_class, data->dev_class, 3);
561 		info->clock_offset	= data->clock_offset;
562 
563 		info++;
564 		copied++;
565 	}
566 
567 	BT_DBG("cache %p, copied %d", cache, copied);
568 	return copied;
569 }
570 
571 static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
572 {
573 	struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
574 	struct hci_cp_inquiry cp;
575 
576 	BT_DBG("%s", hdev->name);
577 
578 	if (test_bit(HCI_INQUIRY, &hdev->flags))
579 		return;
580 
581 	/* Start Inquiry */
582 	memcpy(&cp.lap, &ir->lap, 3);
583 	cp.length  = ir->length;
584 	cp.num_rsp = ir->num_rsp;
585 	hci_send_cmd(hdev, HCI_OP_INQUIRY, sizeof(cp), &cp);
586 }
587 
588 int hci_inquiry(void __user *arg)
589 {
590 	__u8 __user *ptr = arg;
591 	struct hci_inquiry_req ir;
592 	struct hci_dev *hdev;
593 	int err = 0, do_inquiry = 0, max_rsp;
594 	long timeo;
595 	__u8 *buf;
596 
597 	if (copy_from_user(&ir, ptr, sizeof(ir)))
598 		return -EFAULT;
599 
600 	hdev = hci_dev_get(ir.dev_id);
601 	if (!hdev)
602 		return -ENODEV;
603 
604 	hci_dev_lock(hdev);
605 	if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX ||
606 				inquiry_cache_empty(hdev) ||
607 				ir.flags & IREQ_CACHE_FLUSH) {
608 		inquiry_cache_flush(hdev);
609 		do_inquiry = 1;
610 	}
611 	hci_dev_unlock(hdev);
612 
613 	timeo = ir.length * msecs_to_jiffies(2000);
614 
615 	if (do_inquiry) {
616 		err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo);
617 		if (err < 0)
618 			goto done;
619 	}
620 
621 	/* for unlimited number of responses we will use buffer with 255 entries */
622 	max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp;
623 
624 	/* cache_dump can't sleep. Therefore we allocate temp buffer and then
625 	 * copy it to the user space.
626 	 */
627 	buf = kmalloc(sizeof(struct inquiry_info) * max_rsp, GFP_KERNEL);
628 	if (!buf) {
629 		err = -ENOMEM;
630 		goto done;
631 	}
632 
633 	hci_dev_lock(hdev);
634 	ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf);
635 	hci_dev_unlock(hdev);
636 
637 	BT_DBG("num_rsp %d", ir.num_rsp);
638 
639 	if (!copy_to_user(ptr, &ir, sizeof(ir))) {
640 		ptr += sizeof(ir);
641 		if (copy_to_user(ptr, buf, sizeof(struct inquiry_info) *
642 					ir.num_rsp))
643 			err = -EFAULT;
644 	} else
645 		err = -EFAULT;
646 
647 	kfree(buf);
648 
649 done:
650 	hci_dev_put(hdev);
651 	return err;
652 }
653 
654 /* ---- HCI ioctl helpers ---- */
655 
656 int hci_dev_open(__u16 dev)
657 {
658 	struct hci_dev *hdev;
659 	int ret = 0;
660 
661 	hdev = hci_dev_get(dev);
662 	if (!hdev)
663 		return -ENODEV;
664 
665 	BT_DBG("%s %p", hdev->name, hdev);
666 
667 	hci_req_lock(hdev);
668 
669 	if (hdev->rfkill && rfkill_blocked(hdev->rfkill)) {
670 		ret = -ERFKILL;
671 		goto done;
672 	}
673 
674 	if (test_bit(HCI_UP, &hdev->flags)) {
675 		ret = -EALREADY;
676 		goto done;
677 	}
678 
679 	if (test_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks))
680 		set_bit(HCI_RAW, &hdev->flags);
681 
682 	/* Treat all non BR/EDR controllers as raw devices if
683 	   enable_hs is not set */
684 	if (hdev->dev_type != HCI_BREDR && !enable_hs)
685 		set_bit(HCI_RAW, &hdev->flags);
686 
687 	if (hdev->open(hdev)) {
688 		ret = -EIO;
689 		goto done;
690 	}
691 
692 	if (!test_bit(HCI_RAW, &hdev->flags)) {
693 		atomic_set(&hdev->cmd_cnt, 1);
694 		set_bit(HCI_INIT, &hdev->flags);
695 		hdev->init_last_cmd = 0;
696 
697 		ret = __hci_request(hdev, hci_init_req, 0,
698 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
699 
700 		if (lmp_host_le_capable(hdev))
701 			ret = __hci_request(hdev, hci_le_init_req, 0,
702 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
703 
704 		clear_bit(HCI_INIT, &hdev->flags);
705 	}
706 
707 	if (!ret) {
708 		hci_dev_hold(hdev);
709 		set_bit(HCI_UP, &hdev->flags);
710 		hci_notify(hdev, HCI_DEV_UP);
711 		if (!test_bit(HCI_SETUP, &hdev->dev_flags)) {
712 			hci_dev_lock(hdev);
713 			mgmt_powered(hdev, 1);
714 			hci_dev_unlock(hdev);
715 		}
716 	} else {
717 		/* Init failed, cleanup */
718 		flush_work(&hdev->tx_work);
719 		flush_work(&hdev->cmd_work);
720 		flush_work(&hdev->rx_work);
721 
722 		skb_queue_purge(&hdev->cmd_q);
723 		skb_queue_purge(&hdev->rx_q);
724 
725 		if (hdev->flush)
726 			hdev->flush(hdev);
727 
728 		if (hdev->sent_cmd) {
729 			kfree_skb(hdev->sent_cmd);
730 			hdev->sent_cmd = NULL;
731 		}
732 
733 		hdev->close(hdev);
734 		hdev->flags = 0;
735 	}
736 
737 done:
738 	hci_req_unlock(hdev);
739 	hci_dev_put(hdev);
740 	return ret;
741 }
742 
743 static int hci_dev_do_close(struct hci_dev *hdev)
744 {
745 	BT_DBG("%s %p", hdev->name, hdev);
746 
747 	cancel_work_sync(&hdev->le_scan);
748 
749 	hci_req_cancel(hdev, ENODEV);
750 	hci_req_lock(hdev);
751 
752 	if (!test_and_clear_bit(HCI_UP, &hdev->flags)) {
753 		del_timer_sync(&hdev->cmd_timer);
754 		hci_req_unlock(hdev);
755 		return 0;
756 	}
757 
758 	/* Flush RX and TX works */
759 	flush_work(&hdev->tx_work);
760 	flush_work(&hdev->rx_work);
761 
762 	if (hdev->discov_timeout > 0) {
763 		cancel_delayed_work(&hdev->discov_off);
764 		hdev->discov_timeout = 0;
765 		clear_bit(HCI_DISCOVERABLE, &hdev->dev_flags);
766 	}
767 
768 	if (test_and_clear_bit(HCI_SERVICE_CACHE, &hdev->dev_flags))
769 		cancel_delayed_work(&hdev->service_cache);
770 
771 	cancel_delayed_work_sync(&hdev->le_scan_disable);
772 
773 	hci_dev_lock(hdev);
774 	inquiry_cache_flush(hdev);
775 	hci_conn_hash_flush(hdev);
776 	hci_dev_unlock(hdev);
777 
778 	hci_notify(hdev, HCI_DEV_DOWN);
779 
780 	if (hdev->flush)
781 		hdev->flush(hdev);
782 
783 	/* Reset device */
784 	skb_queue_purge(&hdev->cmd_q);
785 	atomic_set(&hdev->cmd_cnt, 1);
786 	if (!test_bit(HCI_RAW, &hdev->flags) &&
787 				test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks)) {
788 		set_bit(HCI_INIT, &hdev->flags);
789 		__hci_request(hdev, hci_reset_req, 0,
790 					msecs_to_jiffies(250));
791 		clear_bit(HCI_INIT, &hdev->flags);
792 	}
793 
794 	/* flush cmd  work */
795 	flush_work(&hdev->cmd_work);
796 
797 	/* Drop queues */
798 	skb_queue_purge(&hdev->rx_q);
799 	skb_queue_purge(&hdev->cmd_q);
800 	skb_queue_purge(&hdev->raw_q);
801 
802 	/* Drop last sent command */
803 	if (hdev->sent_cmd) {
804 		del_timer_sync(&hdev->cmd_timer);
805 		kfree_skb(hdev->sent_cmd);
806 		hdev->sent_cmd = NULL;
807 	}
808 
809 	/* After this point our queues are empty
810 	 * and no tasks are scheduled. */
811 	hdev->close(hdev);
812 
813 	if (!test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags)) {
814 		hci_dev_lock(hdev);
815 		mgmt_powered(hdev, 0);
816 		hci_dev_unlock(hdev);
817 	}
818 
819 	/* Clear flags */
820 	hdev->flags = 0;
821 
822 	memset(hdev->eir, 0, sizeof(hdev->eir));
823 	memset(hdev->dev_class, 0, sizeof(hdev->dev_class));
824 
825 	hci_req_unlock(hdev);
826 
827 	hci_dev_put(hdev);
828 	return 0;
829 }
830 
831 int hci_dev_close(__u16 dev)
832 {
833 	struct hci_dev *hdev;
834 	int err;
835 
836 	hdev = hci_dev_get(dev);
837 	if (!hdev)
838 		return -ENODEV;
839 
840 	if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags))
841 		cancel_delayed_work(&hdev->power_off);
842 
843 	err = hci_dev_do_close(hdev);
844 
845 	hci_dev_put(hdev);
846 	return err;
847 }
848 
849 int hci_dev_reset(__u16 dev)
850 {
851 	struct hci_dev *hdev;
852 	int ret = 0;
853 
854 	hdev = hci_dev_get(dev);
855 	if (!hdev)
856 		return -ENODEV;
857 
858 	hci_req_lock(hdev);
859 
860 	if (!test_bit(HCI_UP, &hdev->flags))
861 		goto done;
862 
863 	/* Drop queues */
864 	skb_queue_purge(&hdev->rx_q);
865 	skb_queue_purge(&hdev->cmd_q);
866 
867 	hci_dev_lock(hdev);
868 	inquiry_cache_flush(hdev);
869 	hci_conn_hash_flush(hdev);
870 	hci_dev_unlock(hdev);
871 
872 	if (hdev->flush)
873 		hdev->flush(hdev);
874 
875 	atomic_set(&hdev->cmd_cnt, 1);
876 	hdev->acl_cnt = 0; hdev->sco_cnt = 0; hdev->le_cnt = 0;
877 
878 	if (!test_bit(HCI_RAW, &hdev->flags))
879 		ret = __hci_request(hdev, hci_reset_req, 0,
880 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
881 
882 done:
883 	hci_req_unlock(hdev);
884 	hci_dev_put(hdev);
885 	return ret;
886 }
887 
888 int hci_dev_reset_stat(__u16 dev)
889 {
890 	struct hci_dev *hdev;
891 	int ret = 0;
892 
893 	hdev = hci_dev_get(dev);
894 	if (!hdev)
895 		return -ENODEV;
896 
897 	memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
898 
899 	hci_dev_put(hdev);
900 
901 	return ret;
902 }
903 
904 int hci_dev_cmd(unsigned int cmd, void __user *arg)
905 {
906 	struct hci_dev *hdev;
907 	struct hci_dev_req dr;
908 	int err = 0;
909 
910 	if (copy_from_user(&dr, arg, sizeof(dr)))
911 		return -EFAULT;
912 
913 	hdev = hci_dev_get(dr.dev_id);
914 	if (!hdev)
915 		return -ENODEV;
916 
917 	switch (cmd) {
918 	case HCISETAUTH:
919 		err = hci_request(hdev, hci_auth_req, dr.dev_opt,
920 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
921 		break;
922 
923 	case HCISETENCRYPT:
924 		if (!lmp_encrypt_capable(hdev)) {
925 			err = -EOPNOTSUPP;
926 			break;
927 		}
928 
929 		if (!test_bit(HCI_AUTH, &hdev->flags)) {
930 			/* Auth must be enabled first */
931 			err = hci_request(hdev, hci_auth_req, dr.dev_opt,
932 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
933 			if (err)
934 				break;
935 		}
936 
937 		err = hci_request(hdev, hci_encrypt_req, dr.dev_opt,
938 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
939 		break;
940 
941 	case HCISETSCAN:
942 		err = hci_request(hdev, hci_scan_req, dr.dev_opt,
943 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
944 		break;
945 
946 	case HCISETLINKPOL:
947 		err = hci_request(hdev, hci_linkpol_req, dr.dev_opt,
948 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
949 		break;
950 
951 	case HCISETLINKMODE:
952 		hdev->link_mode = ((__u16) dr.dev_opt) &
953 					(HCI_LM_MASTER | HCI_LM_ACCEPT);
954 		break;
955 
956 	case HCISETPTYPE:
957 		hdev->pkt_type = (__u16) dr.dev_opt;
958 		break;
959 
960 	case HCISETACLMTU:
961 		hdev->acl_mtu  = *((__u16 *) &dr.dev_opt + 1);
962 		hdev->acl_pkts = *((__u16 *) &dr.dev_opt + 0);
963 		break;
964 
965 	case HCISETSCOMTU:
966 		hdev->sco_mtu  = *((__u16 *) &dr.dev_opt + 1);
967 		hdev->sco_pkts = *((__u16 *) &dr.dev_opt + 0);
968 		break;
969 
970 	default:
971 		err = -EINVAL;
972 		break;
973 	}
974 
975 	hci_dev_put(hdev);
976 	return err;
977 }
978 
979 int hci_get_dev_list(void __user *arg)
980 {
981 	struct hci_dev *hdev;
982 	struct hci_dev_list_req *dl;
983 	struct hci_dev_req *dr;
984 	int n = 0, size, err;
985 	__u16 dev_num;
986 
987 	if (get_user(dev_num, (__u16 __user *) arg))
988 		return -EFAULT;
989 
990 	if (!dev_num || dev_num > (PAGE_SIZE * 2) / sizeof(*dr))
991 		return -EINVAL;
992 
993 	size = sizeof(*dl) + dev_num * sizeof(*dr);
994 
995 	dl = kzalloc(size, GFP_KERNEL);
996 	if (!dl)
997 		return -ENOMEM;
998 
999 	dr = dl->dev_req;
1000 
1001 	read_lock(&hci_dev_list_lock);
1002 	list_for_each_entry(hdev, &hci_dev_list, list) {
1003 		if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags))
1004 			cancel_delayed_work(&hdev->power_off);
1005 
1006 		if (!test_bit(HCI_MGMT, &hdev->dev_flags))
1007 			set_bit(HCI_PAIRABLE, &hdev->dev_flags);
1008 
1009 		(dr + n)->dev_id  = hdev->id;
1010 		(dr + n)->dev_opt = hdev->flags;
1011 
1012 		if (++n >= dev_num)
1013 			break;
1014 	}
1015 	read_unlock(&hci_dev_list_lock);
1016 
1017 	dl->dev_num = n;
1018 	size = sizeof(*dl) + n * sizeof(*dr);
1019 
1020 	err = copy_to_user(arg, dl, size);
1021 	kfree(dl);
1022 
1023 	return err ? -EFAULT : 0;
1024 }
1025 
1026 int hci_get_dev_info(void __user *arg)
1027 {
1028 	struct hci_dev *hdev;
1029 	struct hci_dev_info di;
1030 	int err = 0;
1031 
1032 	if (copy_from_user(&di, arg, sizeof(di)))
1033 		return -EFAULT;
1034 
1035 	hdev = hci_dev_get(di.dev_id);
1036 	if (!hdev)
1037 		return -ENODEV;
1038 
1039 	if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags))
1040 		cancel_delayed_work_sync(&hdev->power_off);
1041 
1042 	if (!test_bit(HCI_MGMT, &hdev->dev_flags))
1043 		set_bit(HCI_PAIRABLE, &hdev->dev_flags);
1044 
1045 	strcpy(di.name, hdev->name);
1046 	di.bdaddr   = hdev->bdaddr;
1047 	di.type     = (hdev->bus & 0x0f) | (hdev->dev_type << 4);
1048 	di.flags    = hdev->flags;
1049 	di.pkt_type = hdev->pkt_type;
1050 	di.acl_mtu  = hdev->acl_mtu;
1051 	di.acl_pkts = hdev->acl_pkts;
1052 	di.sco_mtu  = hdev->sco_mtu;
1053 	di.sco_pkts = hdev->sco_pkts;
1054 	di.link_policy = hdev->link_policy;
1055 	di.link_mode   = hdev->link_mode;
1056 
1057 	memcpy(&di.stat, &hdev->stat, sizeof(di.stat));
1058 	memcpy(&di.features, &hdev->features, sizeof(di.features));
1059 
1060 	if (copy_to_user(arg, &di, sizeof(di)))
1061 		err = -EFAULT;
1062 
1063 	hci_dev_put(hdev);
1064 
1065 	return err;
1066 }
1067 
1068 /* ---- Interface to HCI drivers ---- */
1069 
1070 static int hci_rfkill_set_block(void *data, bool blocked)
1071 {
1072 	struct hci_dev *hdev = data;
1073 
1074 	BT_DBG("%p name %s blocked %d", hdev, hdev->name, blocked);
1075 
1076 	if (!blocked)
1077 		return 0;
1078 
1079 	hci_dev_do_close(hdev);
1080 
1081 	return 0;
1082 }
1083 
1084 static const struct rfkill_ops hci_rfkill_ops = {
1085 	.set_block = hci_rfkill_set_block,
1086 };
1087 
1088 /* Alloc HCI device */
1089 struct hci_dev *hci_alloc_dev(void)
1090 {
1091 	struct hci_dev *hdev;
1092 
1093 	hdev = kzalloc(sizeof(struct hci_dev), GFP_KERNEL);
1094 	if (!hdev)
1095 		return NULL;
1096 
1097 	hci_init_sysfs(hdev);
1098 	skb_queue_head_init(&hdev->driver_init);
1099 
1100 	return hdev;
1101 }
1102 EXPORT_SYMBOL(hci_alloc_dev);
1103 
1104 /* Free HCI device */
1105 void hci_free_dev(struct hci_dev *hdev)
1106 {
1107 	skb_queue_purge(&hdev->driver_init);
1108 
1109 	/* will free via device release */
1110 	put_device(&hdev->dev);
1111 }
1112 EXPORT_SYMBOL(hci_free_dev);
1113 
1114 static void hci_power_on(struct work_struct *work)
1115 {
1116 	struct hci_dev *hdev = container_of(work, struct hci_dev, power_on);
1117 
1118 	BT_DBG("%s", hdev->name);
1119 
1120 	if (hci_dev_open(hdev->id) < 0)
1121 		return;
1122 
1123 	if (test_bit(HCI_AUTO_OFF, &hdev->dev_flags))
1124 		schedule_delayed_work(&hdev->power_off,
1125 					msecs_to_jiffies(AUTO_OFF_TIMEOUT));
1126 
1127 	if (test_and_clear_bit(HCI_SETUP, &hdev->dev_flags))
1128 		mgmt_index_added(hdev);
1129 }
1130 
1131 static void hci_power_off(struct work_struct *work)
1132 {
1133 	struct hci_dev *hdev = container_of(work, struct hci_dev,
1134 							power_off.work);
1135 
1136 	BT_DBG("%s", hdev->name);
1137 
1138 	hci_dev_do_close(hdev);
1139 }
1140 
1141 static void hci_discov_off(struct work_struct *work)
1142 {
1143 	struct hci_dev *hdev;
1144 	u8 scan = SCAN_PAGE;
1145 
1146 	hdev = container_of(work, struct hci_dev, discov_off.work);
1147 
1148 	BT_DBG("%s", hdev->name);
1149 
1150 	hci_dev_lock(hdev);
1151 
1152 	hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, sizeof(scan), &scan);
1153 
1154 	hdev->discov_timeout = 0;
1155 
1156 	hci_dev_unlock(hdev);
1157 }
1158 
1159 int hci_uuids_clear(struct hci_dev *hdev)
1160 {
1161 	struct list_head *p, *n;
1162 
1163 	list_for_each_safe(p, n, &hdev->uuids) {
1164 		struct bt_uuid *uuid;
1165 
1166 		uuid = list_entry(p, struct bt_uuid, list);
1167 
1168 		list_del(p);
1169 		kfree(uuid);
1170 	}
1171 
1172 	return 0;
1173 }
1174 
1175 int hci_link_keys_clear(struct hci_dev *hdev)
1176 {
1177 	struct list_head *p, *n;
1178 
1179 	list_for_each_safe(p, n, &hdev->link_keys) {
1180 		struct link_key *key;
1181 
1182 		key = list_entry(p, struct link_key, list);
1183 
1184 		list_del(p);
1185 		kfree(key);
1186 	}
1187 
1188 	return 0;
1189 }
1190 
1191 int hci_smp_ltks_clear(struct hci_dev *hdev)
1192 {
1193 	struct smp_ltk *k, *tmp;
1194 
1195 	list_for_each_entry_safe(k, tmp, &hdev->long_term_keys, list) {
1196 		list_del(&k->list);
1197 		kfree(k);
1198 	}
1199 
1200 	return 0;
1201 }
1202 
1203 struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
1204 {
1205 	struct link_key *k;
1206 
1207 	list_for_each_entry(k, &hdev->link_keys, list)
1208 		if (bacmp(bdaddr, &k->bdaddr) == 0)
1209 			return k;
1210 
1211 	return NULL;
1212 }
1213 
1214 static int hci_persistent_key(struct hci_dev *hdev, struct hci_conn *conn,
1215 						u8 key_type, u8 old_key_type)
1216 {
1217 	/* Legacy key */
1218 	if (key_type < 0x03)
1219 		return 1;
1220 
1221 	/* Debug keys are insecure so don't store them persistently */
1222 	if (key_type == HCI_LK_DEBUG_COMBINATION)
1223 		return 0;
1224 
1225 	/* Changed combination key and there's no previous one */
1226 	if (key_type == HCI_LK_CHANGED_COMBINATION && old_key_type == 0xff)
1227 		return 0;
1228 
1229 	/* Security mode 3 case */
1230 	if (!conn)
1231 		return 1;
1232 
1233 	/* Neither local nor remote side had no-bonding as requirement */
1234 	if (conn->auth_type > 0x01 && conn->remote_auth > 0x01)
1235 		return 1;
1236 
1237 	/* Local side had dedicated bonding as requirement */
1238 	if (conn->auth_type == 0x02 || conn->auth_type == 0x03)
1239 		return 1;
1240 
1241 	/* Remote side had dedicated bonding as requirement */
1242 	if (conn->remote_auth == 0x02 || conn->remote_auth == 0x03)
1243 		return 1;
1244 
1245 	/* If none of the above criteria match, then don't store the key
1246 	 * persistently */
1247 	return 0;
1248 }
1249 
1250 struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, u8 rand[8])
1251 {
1252 	struct smp_ltk *k;
1253 
1254 	list_for_each_entry(k, &hdev->long_term_keys, list) {
1255 		if (k->ediv != ediv ||
1256 				memcmp(rand, k->rand, sizeof(k->rand)))
1257 			continue;
1258 
1259 		return k;
1260 	}
1261 
1262 	return NULL;
1263 }
1264 EXPORT_SYMBOL(hci_find_ltk);
1265 
1266 struct smp_ltk *hci_find_ltk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr,
1267 				     u8 addr_type)
1268 {
1269 	struct smp_ltk *k;
1270 
1271 	list_for_each_entry(k, &hdev->long_term_keys, list)
1272 		if (addr_type == k->bdaddr_type &&
1273 					bacmp(bdaddr, &k->bdaddr) == 0)
1274 			return k;
1275 
1276 	return NULL;
1277 }
1278 EXPORT_SYMBOL(hci_find_ltk_by_addr);
1279 
1280 int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
1281 		     bdaddr_t *bdaddr, u8 *val, u8 type, u8 pin_len)
1282 {
1283 	struct link_key *key, *old_key;
1284 	u8 old_key_type, persistent;
1285 
1286 	old_key = hci_find_link_key(hdev, bdaddr);
1287 	if (old_key) {
1288 		old_key_type = old_key->type;
1289 		key = old_key;
1290 	} else {
1291 		old_key_type = conn ? conn->key_type : 0xff;
1292 		key = kzalloc(sizeof(*key), GFP_ATOMIC);
1293 		if (!key)
1294 			return -ENOMEM;
1295 		list_add(&key->list, &hdev->link_keys);
1296 	}
1297 
1298 	BT_DBG("%s key for %s type %u", hdev->name, batostr(bdaddr), type);
1299 
1300 	/* Some buggy controller combinations generate a changed
1301 	 * combination key for legacy pairing even when there's no
1302 	 * previous key */
1303 	if (type == HCI_LK_CHANGED_COMBINATION &&
1304 					(!conn || conn->remote_auth == 0xff) &&
1305 					old_key_type == 0xff) {
1306 		type = HCI_LK_COMBINATION;
1307 		if (conn)
1308 			conn->key_type = type;
1309 	}
1310 
1311 	bacpy(&key->bdaddr, bdaddr);
1312 	memcpy(key->val, val, 16);
1313 	key->pin_len = pin_len;
1314 
1315 	if (type == HCI_LK_CHANGED_COMBINATION)
1316 		key->type = old_key_type;
1317 	else
1318 		key->type = type;
1319 
1320 	if (!new_key)
1321 		return 0;
1322 
1323 	persistent = hci_persistent_key(hdev, conn, type, old_key_type);
1324 
1325 	mgmt_new_link_key(hdev, key, persistent);
1326 
1327 	if (!persistent) {
1328 		list_del(&key->list);
1329 		kfree(key);
1330 	}
1331 
1332 	return 0;
1333 }
1334 
1335 int hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 addr_type, u8 type,
1336 		int new_key, u8 authenticated, u8 tk[16], u8 enc_size, u16
1337 		ediv, u8 rand[8])
1338 {
1339 	struct smp_ltk *key, *old_key;
1340 
1341 	if (!(type & HCI_SMP_STK) && !(type & HCI_SMP_LTK))
1342 		return 0;
1343 
1344 	old_key = hci_find_ltk_by_addr(hdev, bdaddr, addr_type);
1345 	if (old_key)
1346 		key = old_key;
1347 	else {
1348 		key = kzalloc(sizeof(*key), GFP_ATOMIC);
1349 		if (!key)
1350 			return -ENOMEM;
1351 		list_add(&key->list, &hdev->long_term_keys);
1352 	}
1353 
1354 	bacpy(&key->bdaddr, bdaddr);
1355 	key->bdaddr_type = addr_type;
1356 	memcpy(key->val, tk, sizeof(key->val));
1357 	key->authenticated = authenticated;
1358 	key->ediv = ediv;
1359 	key->enc_size = enc_size;
1360 	key->type = type;
1361 	memcpy(key->rand, rand, sizeof(key->rand));
1362 
1363 	if (!new_key)
1364 		return 0;
1365 
1366 	if (type & HCI_SMP_LTK)
1367 		mgmt_new_ltk(hdev, key, 1);
1368 
1369 	return 0;
1370 }
1371 
1372 int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
1373 {
1374 	struct link_key *key;
1375 
1376 	key = hci_find_link_key(hdev, bdaddr);
1377 	if (!key)
1378 		return -ENOENT;
1379 
1380 	BT_DBG("%s removing %s", hdev->name, batostr(bdaddr));
1381 
1382 	list_del(&key->list);
1383 	kfree(key);
1384 
1385 	return 0;
1386 }
1387 
1388 int hci_remove_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr)
1389 {
1390 	struct smp_ltk *k, *tmp;
1391 
1392 	list_for_each_entry_safe(k, tmp, &hdev->long_term_keys, list) {
1393 		if (bacmp(bdaddr, &k->bdaddr))
1394 			continue;
1395 
1396 		BT_DBG("%s removing %s", hdev->name, batostr(bdaddr));
1397 
1398 		list_del(&k->list);
1399 		kfree(k);
1400 	}
1401 
1402 	return 0;
1403 }
1404 
1405 /* HCI command timer function */
1406 static void hci_cmd_timer(unsigned long arg)
1407 {
1408 	struct hci_dev *hdev = (void *) arg;
1409 
1410 	BT_ERR("%s command tx timeout", hdev->name);
1411 	atomic_set(&hdev->cmd_cnt, 1);
1412 	queue_work(hdev->workqueue, &hdev->cmd_work);
1413 }
1414 
1415 struct oob_data *hci_find_remote_oob_data(struct hci_dev *hdev,
1416 					  bdaddr_t *bdaddr)
1417 {
1418 	struct oob_data *data;
1419 
1420 	list_for_each_entry(data, &hdev->remote_oob_data, list)
1421 		if (bacmp(bdaddr, &data->bdaddr) == 0)
1422 			return data;
1423 
1424 	return NULL;
1425 }
1426 
1427 int hci_remove_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr)
1428 {
1429 	struct oob_data *data;
1430 
1431 	data = hci_find_remote_oob_data(hdev, bdaddr);
1432 	if (!data)
1433 		return -ENOENT;
1434 
1435 	BT_DBG("%s removing %s", hdev->name, batostr(bdaddr));
1436 
1437 	list_del(&data->list);
1438 	kfree(data);
1439 
1440 	return 0;
1441 }
1442 
1443 int hci_remote_oob_data_clear(struct hci_dev *hdev)
1444 {
1445 	struct oob_data *data, *n;
1446 
1447 	list_for_each_entry_safe(data, n, &hdev->remote_oob_data, list) {
1448 		list_del(&data->list);
1449 		kfree(data);
1450 	}
1451 
1452 	return 0;
1453 }
1454 
1455 int hci_add_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 *hash,
1456 			    u8 *randomizer)
1457 {
1458 	struct oob_data *data;
1459 
1460 	data = hci_find_remote_oob_data(hdev, bdaddr);
1461 
1462 	if (!data) {
1463 		data = kmalloc(sizeof(*data), GFP_ATOMIC);
1464 		if (!data)
1465 			return -ENOMEM;
1466 
1467 		bacpy(&data->bdaddr, bdaddr);
1468 		list_add(&data->list, &hdev->remote_oob_data);
1469 	}
1470 
1471 	memcpy(data->hash, hash, sizeof(data->hash));
1472 	memcpy(data->randomizer, randomizer, sizeof(data->randomizer));
1473 
1474 	BT_DBG("%s for %s", hdev->name, batostr(bdaddr));
1475 
1476 	return 0;
1477 }
1478 
1479 struct bdaddr_list *hci_blacklist_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
1480 {
1481 	struct bdaddr_list *b;
1482 
1483 	list_for_each_entry(b, &hdev->blacklist, list)
1484 		if (bacmp(bdaddr, &b->bdaddr) == 0)
1485 			return b;
1486 
1487 	return NULL;
1488 }
1489 
1490 int hci_blacklist_clear(struct hci_dev *hdev)
1491 {
1492 	struct list_head *p, *n;
1493 
1494 	list_for_each_safe(p, n, &hdev->blacklist) {
1495 		struct bdaddr_list *b;
1496 
1497 		b = list_entry(p, struct bdaddr_list, list);
1498 
1499 		list_del(p);
1500 		kfree(b);
1501 	}
1502 
1503 	return 0;
1504 }
1505 
1506 int hci_blacklist_add(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
1507 {
1508 	struct bdaddr_list *entry;
1509 
1510 	if (bacmp(bdaddr, BDADDR_ANY) == 0)
1511 		return -EBADF;
1512 
1513 	if (hci_blacklist_lookup(hdev, bdaddr))
1514 		return -EEXIST;
1515 
1516 	entry = kzalloc(sizeof(struct bdaddr_list), GFP_KERNEL);
1517 	if (!entry)
1518 		return -ENOMEM;
1519 
1520 	bacpy(&entry->bdaddr, bdaddr);
1521 
1522 	list_add(&entry->list, &hdev->blacklist);
1523 
1524 	return mgmt_device_blocked(hdev, bdaddr, type);
1525 }
1526 
1527 int hci_blacklist_del(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
1528 {
1529 	struct bdaddr_list *entry;
1530 
1531 	if (bacmp(bdaddr, BDADDR_ANY) == 0)
1532 		return hci_blacklist_clear(hdev);
1533 
1534 	entry = hci_blacklist_lookup(hdev, bdaddr);
1535 	if (!entry)
1536 		return -ENOENT;
1537 
1538 	list_del(&entry->list);
1539 	kfree(entry);
1540 
1541 	return mgmt_device_unblocked(hdev, bdaddr, type);
1542 }
1543 
1544 static void hci_clear_adv_cache(struct work_struct *work)
1545 {
1546 	struct hci_dev *hdev = container_of(work, struct hci_dev,
1547 					    adv_work.work);
1548 
1549 	hci_dev_lock(hdev);
1550 
1551 	hci_adv_entries_clear(hdev);
1552 
1553 	hci_dev_unlock(hdev);
1554 }
1555 
1556 int hci_adv_entries_clear(struct hci_dev *hdev)
1557 {
1558 	struct adv_entry *entry, *tmp;
1559 
1560 	list_for_each_entry_safe(entry, tmp, &hdev->adv_entries, list) {
1561 		list_del(&entry->list);
1562 		kfree(entry);
1563 	}
1564 
1565 	BT_DBG("%s adv cache cleared", hdev->name);
1566 
1567 	return 0;
1568 }
1569 
1570 struct adv_entry *hci_find_adv_entry(struct hci_dev *hdev, bdaddr_t *bdaddr)
1571 {
1572 	struct adv_entry *entry;
1573 
1574 	list_for_each_entry(entry, &hdev->adv_entries, list)
1575 		if (bacmp(bdaddr, &entry->bdaddr) == 0)
1576 			return entry;
1577 
1578 	return NULL;
1579 }
1580 
1581 static inline int is_connectable_adv(u8 evt_type)
1582 {
1583 	if (evt_type == ADV_IND || evt_type == ADV_DIRECT_IND)
1584 		return 1;
1585 
1586 	return 0;
1587 }
1588 
1589 int hci_add_adv_entry(struct hci_dev *hdev,
1590 					struct hci_ev_le_advertising_info *ev) { struct adv_entry *entry; if (!is_connectable_adv(ev->evt_type))
1591 		return -EINVAL;
1592 
1593 	/* Only new entries should be added to adv_entries. So, if
1594 	 * bdaddr was found, don't add it. */
1595 	if (hci_find_adv_entry(hdev, &ev->bdaddr))
1596 		return 0;
1597 
1598 	entry = kzalloc(sizeof(*entry), GFP_KERNEL);
1599 	if (!entry)
1600 		return -ENOMEM;
1601 
1602 	bacpy(&entry->bdaddr, &ev->bdaddr);
1603 	entry->bdaddr_type = ev->bdaddr_type;
1604 
1605 	list_add(&entry->list, &hdev->adv_entries);
1606 
1607 	BT_DBG("%s adv entry added: address %s type %u", hdev->name,
1608 				batostr(&entry->bdaddr), entry->bdaddr_type);
1609 
1610 	return 0;
1611 }
1612 
1613 static void le_scan_param_req(struct hci_dev *hdev, unsigned long opt)
1614 {
1615 	struct le_scan_params *param =  (struct le_scan_params *) opt;
1616 	struct hci_cp_le_set_scan_param cp;
1617 
1618 	memset(&cp, 0, sizeof(cp));
1619 	cp.type = param->type;
1620 	cp.interval = cpu_to_le16(param->interval);
1621 	cp.window = cpu_to_le16(param->window);
1622 
1623 	hci_send_cmd(hdev, HCI_OP_LE_SET_SCAN_PARAM, sizeof(cp), &cp);
1624 }
1625 
1626 static void le_scan_enable_req(struct hci_dev *hdev, unsigned long opt)
1627 {
1628 	struct hci_cp_le_set_scan_enable cp;
1629 
1630 	memset(&cp, 0, sizeof(cp));
1631 	cp.enable = 1;
1632 
1633 	hci_send_cmd(hdev, HCI_OP_LE_SET_SCAN_ENABLE, sizeof(cp), &cp);
1634 }
1635 
1636 static int hci_do_le_scan(struct hci_dev *hdev, u8 type, u16 interval,
1637 			  u16 window, int timeout)
1638 {
1639 	long timeo = msecs_to_jiffies(3000);
1640 	struct le_scan_params param;
1641 	int err;
1642 
1643 	BT_DBG("%s", hdev->name);
1644 
1645 	if (test_bit(HCI_LE_SCAN, &hdev->dev_flags))
1646 		return -EINPROGRESS;
1647 
1648 	param.type = type;
1649 	param.interval = interval;
1650 	param.window = window;
1651 
1652 	hci_req_lock(hdev);
1653 
1654 	err = __hci_request(hdev, le_scan_param_req, (unsigned long) &param,
1655 			    timeo);
1656 	if (!err)
1657 		err = __hci_request(hdev, le_scan_enable_req, 0, timeo);
1658 
1659 	hci_req_unlock(hdev);
1660 
1661 	if (err < 0)
1662 		return err;
1663 
1664 	schedule_delayed_work(&hdev->le_scan_disable,
1665 			      msecs_to_jiffies(timeout));
1666 
1667 	return 0;
1668 }
1669 
1670 static void le_scan_disable_work(struct work_struct *work)
1671 {
1672 	struct hci_dev *hdev = container_of(work, struct hci_dev,
1673 					    le_scan_disable.work);
1674 	struct hci_cp_le_set_scan_enable cp;
1675 
1676 	BT_DBG("%s", hdev->name);
1677 
1678 	memset(&cp, 0, sizeof(cp));
1679 
1680 	hci_send_cmd(hdev, HCI_OP_LE_SET_SCAN_ENABLE, sizeof(cp), &cp);
1681 }
1682 
1683 static void le_scan_work(struct work_struct *work)
1684 {
1685 	struct hci_dev *hdev = container_of(work, struct hci_dev, le_scan);
1686 	struct le_scan_params *param = &hdev->le_scan_params;
1687 
1688 	BT_DBG("%s", hdev->name);
1689 
1690 	hci_do_le_scan(hdev, param->type, param->interval, param->window,
1691 		       param->timeout);
1692 }
1693 
1694 int hci_le_scan(struct hci_dev *hdev, u8 type, u16 interval, u16 window,
1695 		int timeout)
1696 {
1697 	struct le_scan_params *param = &hdev->le_scan_params;
1698 
1699 	BT_DBG("%s", hdev->name);
1700 
1701 	if (work_busy(&hdev->le_scan))
1702 		return -EINPROGRESS;
1703 
1704 	param->type = type;
1705 	param->interval = interval;
1706 	param->window = window;
1707 	param->timeout = timeout;
1708 
1709 	queue_work(system_long_wq, &hdev->le_scan);
1710 
1711 	return 0;
1712 }
1713 
1714 /* Register HCI device */
1715 int hci_register_dev(struct hci_dev *hdev)
1716 {
1717 	struct list_head *head = &hci_dev_list, *p;
1718 	int i, id, error;
1719 
1720 	BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
1721 
1722 	if (!hdev->open || !hdev->close)
1723 		return -EINVAL;
1724 
1725 	/* Do not allow HCI_AMP devices to register at index 0,
1726 	 * so the index can be used as the AMP controller ID.
1727 	 */
1728 	id = (hdev->dev_type == HCI_BREDR) ? 0 : 1;
1729 
1730 	write_lock(&hci_dev_list_lock);
1731 
1732 	/* Find first available device id */
1733 	list_for_each(p, &hci_dev_list) {
1734 		if (list_entry(p, struct hci_dev, list)->id != id)
1735 			break;
1736 		head = p; id++;
1737 	}
1738 
1739 	sprintf(hdev->name, "hci%d", id);
1740 	hdev->id = id;
1741 	list_add_tail(&hdev->list, head);
1742 
1743 	mutex_init(&hdev->lock);
1744 
1745 	hdev->flags = 0;
1746 	hdev->dev_flags = 0;
1747 	hdev->pkt_type  = (HCI_DM1 | HCI_DH1 | HCI_HV1);
1748 	hdev->esco_type = (ESCO_HV1);
1749 	hdev->link_mode = (HCI_LM_ACCEPT);
1750 	hdev->io_capability = 0x03; /* No Input No Output */
1751 
1752 	hdev->idle_timeout = 0;
1753 	hdev->sniff_max_interval = 800;
1754 	hdev->sniff_min_interval = 80;
1755 
1756 	INIT_WORK(&hdev->rx_work, hci_rx_work);
1757 	INIT_WORK(&hdev->cmd_work, hci_cmd_work);
1758 	INIT_WORK(&hdev->tx_work, hci_tx_work);
1759 
1760 
1761 	skb_queue_head_init(&hdev->rx_q);
1762 	skb_queue_head_init(&hdev->cmd_q);
1763 	skb_queue_head_init(&hdev->raw_q);
1764 
1765 	setup_timer(&hdev->cmd_timer, hci_cmd_timer, (unsigned long) hdev);
1766 
1767 	for (i = 0; i < NUM_REASSEMBLY; i++)
1768 		hdev->reassembly[i] = NULL;
1769 
1770 	init_waitqueue_head(&hdev->req_wait_q);
1771 	mutex_init(&hdev->req_lock);
1772 
1773 	discovery_init(hdev);
1774 
1775 	hci_conn_hash_init(hdev);
1776 
1777 	INIT_LIST_HEAD(&hdev->mgmt_pending);
1778 
1779 	INIT_LIST_HEAD(&hdev->blacklist);
1780 
1781 	INIT_LIST_HEAD(&hdev->uuids);
1782 
1783 	INIT_LIST_HEAD(&hdev->link_keys);
1784 	INIT_LIST_HEAD(&hdev->long_term_keys);
1785 
1786 	INIT_LIST_HEAD(&hdev->remote_oob_data);
1787 
1788 	INIT_LIST_HEAD(&hdev->adv_entries);
1789 
1790 	INIT_DELAYED_WORK(&hdev->adv_work, hci_clear_adv_cache);
1791 	INIT_WORK(&hdev->power_on, hci_power_on);
1792 	INIT_DELAYED_WORK(&hdev->power_off, hci_power_off);
1793 
1794 	INIT_DELAYED_WORK(&hdev->discov_off, hci_discov_off);
1795 
1796 	memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
1797 
1798 	atomic_set(&hdev->promisc, 0);
1799 
1800 	INIT_WORK(&hdev->le_scan, le_scan_work);
1801 
1802 	INIT_DELAYED_WORK(&hdev->le_scan_disable, le_scan_disable_work);
1803 
1804 	write_unlock(&hci_dev_list_lock);
1805 
1806 	hdev->workqueue = alloc_workqueue(hdev->name, WQ_HIGHPRI | WQ_UNBOUND |
1807 							WQ_MEM_RECLAIM, 1);
1808 	if (!hdev->workqueue) {
1809 		error = -ENOMEM;
1810 		goto err;
1811 	}
1812 
1813 	error = hci_add_sysfs(hdev);
1814 	if (error < 0)
1815 		goto err_wqueue;
1816 
1817 	hdev->rfkill = rfkill_alloc(hdev->name, &hdev->dev,
1818 				RFKILL_TYPE_BLUETOOTH, &hci_rfkill_ops, hdev);
1819 	if (hdev->rfkill) {
1820 		if (rfkill_register(hdev->rfkill) < 0) {
1821 			rfkill_destroy(hdev->rfkill);
1822 			hdev->rfkill = NULL;
1823 		}
1824 	}
1825 
1826 	set_bit(HCI_AUTO_OFF, &hdev->dev_flags);
1827 	set_bit(HCI_SETUP, &hdev->dev_flags);
1828 	schedule_work(&hdev->power_on);
1829 
1830 	hci_notify(hdev, HCI_DEV_REG);
1831 	hci_dev_hold(hdev);
1832 
1833 	return id;
1834 
1835 err_wqueue:
1836 	destroy_workqueue(hdev->workqueue);
1837 err:
1838 	write_lock(&hci_dev_list_lock);
1839 	list_del(&hdev->list);
1840 	write_unlock(&hci_dev_list_lock);
1841 
1842 	return error;
1843 }
1844 EXPORT_SYMBOL(hci_register_dev);
1845 
1846 /* Unregister HCI device */
1847 void hci_unregister_dev(struct hci_dev *hdev)
1848 {
1849 	int i;
1850 
1851 	BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
1852 
1853 	write_lock(&hci_dev_list_lock);
1854 	list_del(&hdev->list);
1855 	write_unlock(&hci_dev_list_lock);
1856 
1857 	hci_dev_do_close(hdev);
1858 
1859 	for (i = 0; i < NUM_REASSEMBLY; i++)
1860 		kfree_skb(hdev->reassembly[i]);
1861 
1862 	if (!test_bit(HCI_INIT, &hdev->flags) &&
1863 				!test_bit(HCI_SETUP, &hdev->dev_flags)) {
1864 		hci_dev_lock(hdev);
1865 		mgmt_index_removed(hdev);
1866 		hci_dev_unlock(hdev);
1867 	}
1868 
1869 	/* mgmt_index_removed should take care of emptying the
1870 	 * pending list */
1871 	BUG_ON(!list_empty(&hdev->mgmt_pending));
1872 
1873 	hci_notify(hdev, HCI_DEV_UNREG);
1874 
1875 	if (hdev->rfkill) {
1876 		rfkill_unregister(hdev->rfkill);
1877 		rfkill_destroy(hdev->rfkill);
1878 	}
1879 
1880 	hci_del_sysfs(hdev);
1881 
1882 	cancel_delayed_work_sync(&hdev->adv_work);
1883 
1884 	destroy_workqueue(hdev->workqueue);
1885 
1886 	hci_dev_lock(hdev);
1887 	hci_blacklist_clear(hdev);
1888 	hci_uuids_clear(hdev);
1889 	hci_link_keys_clear(hdev);
1890 	hci_smp_ltks_clear(hdev);
1891 	hci_remote_oob_data_clear(hdev);
1892 	hci_adv_entries_clear(hdev);
1893 	hci_dev_unlock(hdev);
1894 
1895 	hci_dev_put(hdev);
1896 }
1897 EXPORT_SYMBOL(hci_unregister_dev);
1898 
1899 /* Suspend HCI device */
1900 int hci_suspend_dev(struct hci_dev *hdev)
1901 {
1902 	hci_notify(hdev, HCI_DEV_SUSPEND);
1903 	return 0;
1904 }
1905 EXPORT_SYMBOL(hci_suspend_dev);
1906 
1907 /* Resume HCI device */
1908 int hci_resume_dev(struct hci_dev *hdev)
1909 {
1910 	hci_notify(hdev, HCI_DEV_RESUME);
1911 	return 0;
1912 }
1913 EXPORT_SYMBOL(hci_resume_dev);
1914 
1915 /* Receive frame from HCI drivers */
1916 int hci_recv_frame(struct sk_buff *skb)
1917 {
1918 	struct hci_dev *hdev = (struct hci_dev *) skb->dev;
1919 	if (!hdev || (!test_bit(HCI_UP, &hdev->flags)
1920 				&& !test_bit(HCI_INIT, &hdev->flags))) {
1921 		kfree_skb(skb);
1922 		return -ENXIO;
1923 	}
1924 
1925 	/* Incomming skb */
1926 	bt_cb(skb)->incoming = 1;
1927 
1928 	/* Time stamp */
1929 	__net_timestamp(skb);
1930 
1931 	skb_queue_tail(&hdev->rx_q, skb);
1932 	queue_work(hdev->workqueue, &hdev->rx_work);
1933 
1934 	return 0;
1935 }
1936 EXPORT_SYMBOL(hci_recv_frame);
1937 
1938 static int hci_reassembly(struct hci_dev *hdev, int type, void *data,
1939 						  int count, __u8 index)
1940 {
1941 	int len = 0;
1942 	int hlen = 0;
1943 	int remain = count;
1944 	struct sk_buff *skb;
1945 	struct bt_skb_cb *scb;
1946 
1947 	if ((type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT) ||
1948 				index >= NUM_REASSEMBLY)
1949 		return -EILSEQ;
1950 
1951 	skb = hdev->reassembly[index];
1952 
1953 	if (!skb) {
1954 		switch (type) {
1955 		case HCI_ACLDATA_PKT:
1956 			len = HCI_MAX_FRAME_SIZE;
1957 			hlen = HCI_ACL_HDR_SIZE;
1958 			break;
1959 		case HCI_EVENT_PKT:
1960 			len = HCI_MAX_EVENT_SIZE;
1961 			hlen = HCI_EVENT_HDR_SIZE;
1962 			break;
1963 		case HCI_SCODATA_PKT:
1964 			len = HCI_MAX_SCO_SIZE;
1965 			hlen = HCI_SCO_HDR_SIZE;
1966 			break;
1967 		}
1968 
1969 		skb = bt_skb_alloc(len, GFP_ATOMIC);
1970 		if (!skb)
1971 			return -ENOMEM;
1972 
1973 		scb = (void *) skb->cb;
1974 		scb->expect = hlen;
1975 		scb->pkt_type = type;
1976 
1977 		skb->dev = (void *) hdev;
1978 		hdev->reassembly[index] = skb;
1979 	}
1980 
1981 	while (count) {
1982 		scb = (void *) skb->cb;
1983 		len = min_t(uint, scb->expect, count);
1984 
1985 		memcpy(skb_put(skb, len), data, len);
1986 
1987 		count -= len;
1988 		data += len;
1989 		scb->expect -= len;
1990 		remain = count;
1991 
1992 		switch (type) {
1993 		case HCI_EVENT_PKT:
1994 			if (skb->len == HCI_EVENT_HDR_SIZE) {
1995 				struct hci_event_hdr *h = hci_event_hdr(skb);
1996 				scb->expect = h->plen;
1997 
1998 				if (skb_tailroom(skb) < scb->expect) {
1999 					kfree_skb(skb);
2000 					hdev->reassembly[index] = NULL;
2001 					return -ENOMEM;
2002 				}
2003 			}
2004 			break;
2005 
2006 		case HCI_ACLDATA_PKT:
2007 			if (skb->len  == HCI_ACL_HDR_SIZE) {
2008 				struct hci_acl_hdr *h = hci_acl_hdr(skb);
2009 				scb->expect = __le16_to_cpu(h->dlen);
2010 
2011 				if (skb_tailroom(skb) < scb->expect) {
2012 					kfree_skb(skb);
2013 					hdev->reassembly[index] = NULL;
2014 					return -ENOMEM;
2015 				}
2016 			}
2017 			break;
2018 
2019 		case HCI_SCODATA_PKT:
2020 			if (skb->len == HCI_SCO_HDR_SIZE) {
2021 				struct hci_sco_hdr *h = hci_sco_hdr(skb);
2022 				scb->expect = h->dlen;
2023 
2024 				if (skb_tailroom(skb) < scb->expect) {
2025 					kfree_skb(skb);
2026 					hdev->reassembly[index] = NULL;
2027 					return -ENOMEM;
2028 				}
2029 			}
2030 			break;
2031 		}
2032 
2033 		if (scb->expect == 0) {
2034 			/* Complete frame */
2035 
2036 			bt_cb(skb)->pkt_type = type;
2037 			hci_recv_frame(skb);
2038 
2039 			hdev->reassembly[index] = NULL;
2040 			return remain;
2041 		}
2042 	}
2043 
2044 	return remain;
2045 }
2046 
2047 int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count)
2048 {
2049 	int rem = 0;
2050 
2051 	if (type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT)
2052 		return -EILSEQ;
2053 
2054 	while (count) {
2055 		rem = hci_reassembly(hdev, type, data, count, type - 1);
2056 		if (rem < 0)
2057 			return rem;
2058 
2059 		data += (count - rem);
2060 		count = rem;
2061 	}
2062 
2063 	return rem;
2064 }
2065 EXPORT_SYMBOL(hci_recv_fragment);
2066 
2067 #define STREAM_REASSEMBLY 0
2068 
2069 int hci_recv_stream_fragment(struct hci_dev *hdev, void *data, int count)
2070 {
2071 	int type;
2072 	int rem = 0;
2073 
2074 	while (count) {
2075 		struct sk_buff *skb = hdev->reassembly[STREAM_REASSEMBLY];
2076 
2077 		if (!skb) {
2078 			struct { char type; } *pkt;
2079 
2080 			/* Start of the frame */
2081 			pkt = data;
2082 			type = pkt->type;
2083 
2084 			data++;
2085 			count--;
2086 		} else
2087 			type = bt_cb(skb)->pkt_type;
2088 
2089 		rem = hci_reassembly(hdev, type, data, count,
2090 							STREAM_REASSEMBLY);
2091 		if (rem < 0)
2092 			return rem;
2093 
2094 		data += (count - rem);
2095 		count = rem;
2096 	}
2097 
2098 	return rem;
2099 }
2100 EXPORT_SYMBOL(hci_recv_stream_fragment);
2101 
2102 /* ---- Interface to upper protocols ---- */
2103 
2104 int hci_register_cb(struct hci_cb *cb)
2105 {
2106 	BT_DBG("%p name %s", cb, cb->name);
2107 
2108 	write_lock(&hci_cb_list_lock);
2109 	list_add(&cb->list, &hci_cb_list);
2110 	write_unlock(&hci_cb_list_lock);
2111 
2112 	return 0;
2113 }
2114 EXPORT_SYMBOL(hci_register_cb);
2115 
2116 int hci_unregister_cb(struct hci_cb *cb)
2117 {
2118 	BT_DBG("%p name %s", cb, cb->name);
2119 
2120 	write_lock(&hci_cb_list_lock);
2121 	list_del(&cb->list);
2122 	write_unlock(&hci_cb_list_lock);
2123 
2124 	return 0;
2125 }
2126 EXPORT_SYMBOL(hci_unregister_cb);
2127 
2128 static int hci_send_frame(struct sk_buff *skb)
2129 {
2130 	struct hci_dev *hdev = (struct hci_dev *) skb->dev;
2131 
2132 	if (!hdev) {
2133 		kfree_skb(skb);
2134 		return -ENODEV;
2135 	}
2136 
2137 	BT_DBG("%s type %d len %d", hdev->name, bt_cb(skb)->pkt_type, skb->len);
2138 
2139 	/* Time stamp */
2140 	__net_timestamp(skb);
2141 
2142 	/* Send copy to monitor */
2143 	hci_send_to_monitor(hdev, skb);
2144 
2145 	if (atomic_read(&hdev->promisc)) {
2146 		/* Send copy to the sockets */
2147 		hci_send_to_sock(hdev, skb);
2148 	}
2149 
2150 	/* Get rid of skb owner, prior to sending to the driver. */
2151 	skb_orphan(skb);
2152 
2153 	return hdev->send(skb);
2154 }
2155 
2156 /* Send HCI command */
2157 int hci_send_cmd(struct hci_dev *hdev, __u16 opcode, __u32 plen, void *param)
2158 {
2159 	int len = HCI_COMMAND_HDR_SIZE + plen;
2160 	struct hci_command_hdr *hdr;
2161 	struct sk_buff *skb;
2162 
2163 	BT_DBG("%s opcode 0x%x plen %d", hdev->name, opcode, plen);
2164 
2165 	skb = bt_skb_alloc(len, GFP_ATOMIC);
2166 	if (!skb) {
2167 		BT_ERR("%s no memory for command", hdev->name);
2168 		return -ENOMEM;
2169 	}
2170 
2171 	hdr = (struct hci_command_hdr *) skb_put(skb, HCI_COMMAND_HDR_SIZE);
2172 	hdr->opcode = cpu_to_le16(opcode);
2173 	hdr->plen   = plen;
2174 
2175 	if (plen)
2176 		memcpy(skb_put(skb, plen), param, plen);
2177 
2178 	BT_DBG("skb len %d", skb->len);
2179 
2180 	bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
2181 	skb->dev = (void *) hdev;
2182 
2183 	if (test_bit(HCI_INIT, &hdev->flags))
2184 		hdev->init_last_cmd = opcode;
2185 
2186 	skb_queue_tail(&hdev->cmd_q, skb);
2187 	queue_work(hdev->workqueue, &hdev->cmd_work);
2188 
2189 	return 0;
2190 }
2191 
2192 /* Get data from the previously sent command */
2193 void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 opcode)
2194 {
2195 	struct hci_command_hdr *hdr;
2196 
2197 	if (!hdev->sent_cmd)
2198 		return NULL;
2199 
2200 	hdr = (void *) hdev->sent_cmd->data;
2201 
2202 	if (hdr->opcode != cpu_to_le16(opcode))
2203 		return NULL;
2204 
2205 	BT_DBG("%s opcode 0x%x", hdev->name, opcode);
2206 
2207 	return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
2208 }
2209 
2210 /* Send ACL data */
2211 static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags)
2212 {
2213 	struct hci_acl_hdr *hdr;
2214 	int len = skb->len;
2215 
2216 	skb_push(skb, HCI_ACL_HDR_SIZE);
2217 	skb_reset_transport_header(skb);
2218 	hdr = (struct hci_acl_hdr *)skb_transport_header(skb);
2219 	hdr->handle = cpu_to_le16(hci_handle_pack(handle, flags));
2220 	hdr->dlen   = cpu_to_le16(len);
2221 }
2222 
2223 static void hci_queue_acl(struct hci_conn *conn, struct sk_buff_head *queue,
2224 				struct sk_buff *skb, __u16 flags)
2225 {
2226 	struct hci_dev *hdev = conn->hdev;
2227 	struct sk_buff *list;
2228 
2229 	list = skb_shinfo(skb)->frag_list;
2230 	if (!list) {
2231 		/* Non fragmented */
2232 		BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
2233 
2234 		skb_queue_tail(queue, skb);
2235 	} else {
2236 		/* Fragmented */
2237 		BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
2238 
2239 		skb_shinfo(skb)->frag_list = NULL;
2240 
2241 		/* Queue all fragments atomically */
2242 		spin_lock(&queue->lock);
2243 
2244 		__skb_queue_tail(queue, skb);
2245 
2246 		flags &= ~ACL_START;
2247 		flags |= ACL_CONT;
2248 		do {
2249 			skb = list; list = list->next;
2250 
2251 			skb->dev = (void *) hdev;
2252 			bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
2253 			hci_add_acl_hdr(skb, conn->handle, flags);
2254 
2255 			BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
2256 
2257 			__skb_queue_tail(queue, skb);
2258 		} while (list);
2259 
2260 		spin_unlock(&queue->lock);
2261 	}
2262 }
2263 
2264 void hci_send_acl(struct hci_chan *chan, struct sk_buff *skb, __u16 flags)
2265 {
2266 	struct hci_conn *conn = chan->conn;
2267 	struct hci_dev *hdev = conn->hdev;
2268 
2269 	BT_DBG("%s chan %p flags 0x%x", hdev->name, chan, flags);
2270 
2271 	skb->dev = (void *) hdev;
2272 	bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
2273 	hci_add_acl_hdr(skb, conn->handle, flags);
2274 
2275 	hci_queue_acl(conn, &chan->data_q, skb, flags);
2276 
2277 	queue_work(hdev->workqueue, &hdev->tx_work);
2278 }
2279 EXPORT_SYMBOL(hci_send_acl);
2280 
2281 /* Send SCO data */
2282 void hci_send_sco(struct hci_conn *conn, struct sk_buff *skb)
2283 {
2284 	struct hci_dev *hdev = conn->hdev;
2285 	struct hci_sco_hdr hdr;
2286 
2287 	BT_DBG("%s len %d", hdev->name, skb->len);
2288 
2289 	hdr.handle = cpu_to_le16(conn->handle);
2290 	hdr.dlen   = skb->len;
2291 
2292 	skb_push(skb, HCI_SCO_HDR_SIZE);
2293 	skb_reset_transport_header(skb);
2294 	memcpy(skb_transport_header(skb), &hdr, HCI_SCO_HDR_SIZE);
2295 
2296 	skb->dev = (void *) hdev;
2297 	bt_cb(skb)->pkt_type = HCI_SCODATA_PKT;
2298 
2299 	skb_queue_tail(&conn->data_q, skb);
2300 	queue_work(hdev->workqueue, &hdev->tx_work);
2301 }
2302 EXPORT_SYMBOL(hci_send_sco);
2303 
2304 /* ---- HCI TX task (outgoing data) ---- */
2305 
2306 /* HCI Connection scheduler */
2307 static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
2308 {
2309 	struct hci_conn_hash *h = &hdev->conn_hash;
2310 	struct hci_conn *conn = NULL, *c;
2311 	int num = 0, min = ~0;
2312 
2313 	/* We don't have to lock device here. Connections are always
2314 	 * added and removed with TX task disabled. */
2315 
2316 	rcu_read_lock();
2317 
2318 	list_for_each_entry_rcu(c, &h->list, list) {
2319 		if (c->type != type || skb_queue_empty(&c->data_q))
2320 			continue;
2321 
2322 		if (c->state != BT_CONNECTED && c->state != BT_CONFIG)
2323 			continue;
2324 
2325 		num++;
2326 
2327 		if (c->sent < min) {
2328 			min  = c->sent;
2329 			conn = c;
2330 		}
2331 
2332 		if (hci_conn_num(hdev, type) == num)
2333 			break;
2334 	}
2335 
2336 	rcu_read_unlock();
2337 
2338 	if (conn) {
2339 		int cnt, q;
2340 
2341 		switch (conn->type) {
2342 		case ACL_LINK:
2343 			cnt = hdev->acl_cnt;
2344 			break;
2345 		case SCO_LINK:
2346 		case ESCO_LINK:
2347 			cnt = hdev->sco_cnt;
2348 			break;
2349 		case LE_LINK:
2350 			cnt = hdev->le_mtu ? hdev->le_cnt : hdev->acl_cnt;
2351 			break;
2352 		default:
2353 			cnt = 0;
2354 			BT_ERR("Unknown link type");
2355 		}
2356 
2357 		q = cnt / num;
2358 		*quote = q ? q : 1;
2359 	} else
2360 		*quote = 0;
2361 
2362 	BT_DBG("conn %p quote %d", conn, *quote);
2363 	return conn;
2364 }
2365 
2366 static inline void hci_link_tx_to(struct hci_dev *hdev, __u8 type)
2367 {
2368 	struct hci_conn_hash *h = &hdev->conn_hash;
2369 	struct hci_conn *c;
2370 
2371 	BT_ERR("%s link tx timeout", hdev->name);
2372 
2373 	rcu_read_lock();
2374 
2375 	/* Kill stalled connections */
2376 	list_for_each_entry_rcu(c, &h->list, list) {
2377 		if (c->type == type && c->sent) {
2378 			BT_ERR("%s killing stalled connection %s",
2379 				hdev->name, batostr(&c->dst));
2380 			hci_acl_disconn(c, 0x13);
2381 		}
2382 	}
2383 
2384 	rcu_read_unlock();
2385 }
2386 
2387 static inline struct hci_chan *hci_chan_sent(struct hci_dev *hdev, __u8 type,
2388 						int *quote)
2389 {
2390 	struct hci_conn_hash *h = &hdev->conn_hash;
2391 	struct hci_chan *chan = NULL;
2392 	int num = 0, min = ~0, cur_prio = 0;
2393 	struct hci_conn *conn;
2394 	int cnt, q, conn_num = 0;
2395 
2396 	BT_DBG("%s", hdev->name);
2397 
2398 	rcu_read_lock();
2399 
2400 	list_for_each_entry_rcu(conn, &h->list, list) {
2401 		struct hci_chan *tmp;
2402 
2403 		if (conn->type != type)
2404 			continue;
2405 
2406 		if (conn->state != BT_CONNECTED && conn->state != BT_CONFIG)
2407 			continue;
2408 
2409 		conn_num++;
2410 
2411 		list_for_each_entry_rcu(tmp, &conn->chan_list, list) {
2412 			struct sk_buff *skb;
2413 
2414 			if (skb_queue_empty(&tmp->data_q))
2415 				continue;
2416 
2417 			skb = skb_peek(&tmp->data_q);
2418 			if (skb->priority < cur_prio)
2419 				continue;
2420 
2421 			if (skb->priority > cur_prio) {
2422 				num = 0;
2423 				min = ~0;
2424 				cur_prio = skb->priority;
2425 			}
2426 
2427 			num++;
2428 
2429 			if (conn->sent < min) {
2430 				min  = conn->sent;
2431 				chan = tmp;
2432 			}
2433 		}
2434 
2435 		if (hci_conn_num(hdev, type) == conn_num)
2436 			break;
2437 	}
2438 
2439 	rcu_read_unlock();
2440 
2441 	if (!chan)
2442 		return NULL;
2443 
2444 	switch (chan->conn->type) {
2445 	case ACL_LINK:
2446 		cnt = hdev->acl_cnt;
2447 		break;
2448 	case SCO_LINK:
2449 	case ESCO_LINK:
2450 		cnt = hdev->sco_cnt;
2451 		break;
2452 	case LE_LINK:
2453 		cnt = hdev->le_mtu ? hdev->le_cnt : hdev->acl_cnt;
2454 		break;
2455 	default:
2456 		cnt = 0;
2457 		BT_ERR("Unknown link type");
2458 	}
2459 
2460 	q = cnt / num;
2461 	*quote = q ? q : 1;
2462 	BT_DBG("chan %p quote %d", chan, *quote);
2463 	return chan;
2464 }
2465 
2466 static void hci_prio_recalculate(struct hci_dev *hdev, __u8 type)
2467 {
2468 	struct hci_conn_hash *h = &hdev->conn_hash;
2469 	struct hci_conn *conn;
2470 	int num = 0;
2471 
2472 	BT_DBG("%s", hdev->name);
2473 
2474 	rcu_read_lock();
2475 
2476 	list_for_each_entry_rcu(conn, &h->list, list) {
2477 		struct hci_chan *chan;
2478 
2479 		if (conn->type != type)
2480 			continue;
2481 
2482 		if (conn->state != BT_CONNECTED && conn->state != BT_CONFIG)
2483 			continue;
2484 
2485 		num++;
2486 
2487 		list_for_each_entry_rcu(chan, &conn->chan_list, list) {
2488 			struct sk_buff *skb;
2489 
2490 			if (chan->sent) {
2491 				chan->sent = 0;
2492 				continue;
2493 			}
2494 
2495 			if (skb_queue_empty(&chan->data_q))
2496 				continue;
2497 
2498 			skb = skb_peek(&chan->data_q);
2499 			if (skb->priority >= HCI_PRIO_MAX - 1)
2500 				continue;
2501 
2502 			skb->priority = HCI_PRIO_MAX - 1;
2503 
2504 			BT_DBG("chan %p skb %p promoted to %d", chan, skb,
2505 								skb->priority);
2506 		}
2507 
2508 		if (hci_conn_num(hdev, type) == num)
2509 			break;
2510 	}
2511 
2512 	rcu_read_unlock();
2513 
2514 }
2515 
2516 static inline int __get_blocks(struct hci_dev *hdev, struct sk_buff *skb)
2517 {
2518 	/* Calculate count of blocks used by this packet */
2519 	return DIV_ROUND_UP(skb->len - HCI_ACL_HDR_SIZE, hdev->block_len);
2520 }
2521 
2522 static inline void __check_timeout(struct hci_dev *hdev, unsigned int cnt)
2523 {
2524 	if (!test_bit(HCI_RAW, &hdev->flags)) {
2525 		/* ACL tx timeout must be longer than maximum
2526 		 * link supervision timeout (40.9 seconds) */
2527 		if (!cnt && time_after(jiffies, hdev->acl_last_tx +
2528 					msecs_to_jiffies(HCI_ACL_TX_TIMEOUT)))
2529 			hci_link_tx_to(hdev, ACL_LINK);
2530 	}
2531 }
2532 
2533 static inline void hci_sched_acl_pkt(struct hci_dev *hdev)
2534 {
2535 	unsigned int cnt = hdev->acl_cnt;
2536 	struct hci_chan *chan;
2537 	struct sk_buff *skb;
2538 	int quote;
2539 
2540 	__check_timeout(hdev, cnt);
2541 
2542 	while (hdev->acl_cnt &&
2543 			(chan = hci_chan_sent(hdev, ACL_LINK, &quote))) {
2544 		u32 priority = (skb_peek(&chan->data_q))->priority;
2545 		while (quote-- && (skb = skb_peek(&chan->data_q))) {
2546 			BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
2547 					skb->len, skb->priority);
2548 
2549 			/* Stop if priority has changed */
2550 			if (skb->priority < priority)
2551 				break;
2552 
2553 			skb = skb_dequeue(&chan->data_q);
2554 
2555 			hci_conn_enter_active_mode(chan->conn,
2556 						   bt_cb(skb)->force_active);
2557 
2558 			hci_send_frame(skb);
2559 			hdev->acl_last_tx = jiffies;
2560 
2561 			hdev->acl_cnt--;
2562 			chan->sent++;
2563 			chan->conn->sent++;
2564 		}
2565 	}
2566 
2567 	if (cnt != hdev->acl_cnt)
2568 		hci_prio_recalculate(hdev, ACL_LINK);
2569 }
2570 
2571 static inline void hci_sched_acl_blk(struct hci_dev *hdev)
2572 {
2573 	unsigned int cnt = hdev->block_cnt;
2574 	struct hci_chan *chan;
2575 	struct sk_buff *skb;
2576 	int quote;
2577 
2578 	__check_timeout(hdev, cnt);
2579 
2580 	while (hdev->block_cnt > 0 &&
2581 			(chan = hci_chan_sent(hdev, ACL_LINK, &quote))) {
2582 		u32 priority = (skb_peek(&chan->data_q))->priority;
2583 		while (quote > 0 && (skb = skb_peek(&chan->data_q))) {
2584 			int blocks;
2585 
2586 			BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
2587 						skb->len, skb->priority);
2588 
2589 			/* Stop if priority has changed */
2590 			if (skb->priority < priority)
2591 				break;
2592 
2593 			skb = skb_dequeue(&chan->data_q);
2594 
2595 			blocks = __get_blocks(hdev, skb);
2596 			if (blocks > hdev->block_cnt)
2597 				return;
2598 
2599 			hci_conn_enter_active_mode(chan->conn,
2600 						bt_cb(skb)->force_active);
2601 
2602 			hci_send_frame(skb);
2603 			hdev->acl_last_tx = jiffies;
2604 
2605 			hdev->block_cnt -= blocks;
2606 			quote -= blocks;
2607 
2608 			chan->sent += blocks;
2609 			chan->conn->sent += blocks;
2610 		}
2611 	}
2612 
2613 	if (cnt != hdev->block_cnt)
2614 		hci_prio_recalculate(hdev, ACL_LINK);
2615 }
2616 
2617 static inline void hci_sched_acl(struct hci_dev *hdev)
2618 {
2619 	BT_DBG("%s", hdev->name);
2620 
2621 	if (!hci_conn_num(hdev, ACL_LINK))
2622 		return;
2623 
2624 	switch (hdev->flow_ctl_mode) {
2625 	case HCI_FLOW_CTL_MODE_PACKET_BASED:
2626 		hci_sched_acl_pkt(hdev);
2627 		break;
2628 
2629 	case HCI_FLOW_CTL_MODE_BLOCK_BASED:
2630 		hci_sched_acl_blk(hdev);
2631 		break;
2632 	}
2633 }
2634 
2635 /* Schedule SCO */
2636 static inline void hci_sched_sco(struct hci_dev *hdev)
2637 {
2638 	struct hci_conn *conn;
2639 	struct sk_buff *skb;
2640 	int quote;
2641 
2642 	BT_DBG("%s", hdev->name);
2643 
2644 	if (!hci_conn_num(hdev, SCO_LINK))
2645 		return;
2646 
2647 	while (hdev->sco_cnt && (conn = hci_low_sent(hdev, SCO_LINK, &quote))) {
2648 		while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
2649 			BT_DBG("skb %p len %d", skb, skb->len);
2650 			hci_send_frame(skb);
2651 
2652 			conn->sent++;
2653 			if (conn->sent == ~0)
2654 				conn->sent = 0;
2655 		}
2656 	}
2657 }
2658 
2659 static inline void hci_sched_esco(struct hci_dev *hdev)
2660 {
2661 	struct hci_conn *conn;
2662 	struct sk_buff *skb;
2663 	int quote;
2664 
2665 	BT_DBG("%s", hdev->name);
2666 
2667 	if (!hci_conn_num(hdev, ESCO_LINK))
2668 		return;
2669 
2670 	while (hdev->sco_cnt && (conn = hci_low_sent(hdev, ESCO_LINK, &quote))) {
2671 		while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
2672 			BT_DBG("skb %p len %d", skb, skb->len);
2673 			hci_send_frame(skb);
2674 
2675 			conn->sent++;
2676 			if (conn->sent == ~0)
2677 				conn->sent = 0;
2678 		}
2679 	}
2680 }
2681 
2682 static inline void hci_sched_le(struct hci_dev *hdev)
2683 {
2684 	struct hci_chan *chan;
2685 	struct sk_buff *skb;
2686 	int quote, cnt, tmp;
2687 
2688 	BT_DBG("%s", hdev->name);
2689 
2690 	if (!hci_conn_num(hdev, LE_LINK))
2691 		return;
2692 
2693 	if (!test_bit(HCI_RAW, &hdev->flags)) {
2694 		/* LE tx timeout must be longer than maximum
2695 		 * link supervision timeout (40.9 seconds) */
2696 		if (!hdev->le_cnt && hdev->le_pkts &&
2697 				time_after(jiffies, hdev->le_last_tx + HZ * 45))
2698 			hci_link_tx_to(hdev, LE_LINK);
2699 	}
2700 
2701 	cnt = hdev->le_pkts ? hdev->le_cnt : hdev->acl_cnt;
2702 	tmp = cnt;
2703 	while (cnt && (chan = hci_chan_sent(hdev, LE_LINK, &quote))) {
2704 		u32 priority = (skb_peek(&chan->data_q))->priority;
2705 		while (quote-- && (skb = skb_peek(&chan->data_q))) {
2706 			BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
2707 					skb->len, skb->priority);
2708 
2709 			/* Stop if priority has changed */
2710 			if (skb->priority < priority)
2711 				break;
2712 
2713 			skb = skb_dequeue(&chan->data_q);
2714 
2715 			hci_send_frame(skb);
2716 			hdev->le_last_tx = jiffies;
2717 
2718 			cnt--;
2719 			chan->sent++;
2720 			chan->conn->sent++;
2721 		}
2722 	}
2723 
2724 	if (hdev->le_pkts)
2725 		hdev->le_cnt = cnt;
2726 	else
2727 		hdev->acl_cnt = cnt;
2728 
2729 	if (cnt != tmp)
2730 		hci_prio_recalculate(hdev, LE_LINK);
2731 }
2732 
2733 static void hci_tx_work(struct work_struct *work)
2734 {
2735 	struct hci_dev *hdev = container_of(work, struct hci_dev, tx_work);
2736 	struct sk_buff *skb;
2737 
2738 	BT_DBG("%s acl %d sco %d le %d", hdev->name, hdev->acl_cnt,
2739 		hdev->sco_cnt, hdev->le_cnt);
2740 
2741 	/* Schedule queues and send stuff to HCI driver */
2742 
2743 	hci_sched_acl(hdev);
2744 
2745 	hci_sched_sco(hdev);
2746 
2747 	hci_sched_esco(hdev);
2748 
2749 	hci_sched_le(hdev);
2750 
2751 	/* Send next queued raw (unknown type) packet */
2752 	while ((skb = skb_dequeue(&hdev->raw_q)))
2753 		hci_send_frame(skb);
2754 }
2755 
2756 /* ----- HCI RX task (incoming data processing) ----- */
2757 
2758 /* ACL data packet */
2759 static inline void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb)
2760 {
2761 	struct hci_acl_hdr *hdr = (void *) skb->data;
2762 	struct hci_conn *conn;
2763 	__u16 handle, flags;
2764 
2765 	skb_pull(skb, HCI_ACL_HDR_SIZE);
2766 
2767 	handle = __le16_to_cpu(hdr->handle);
2768 	flags  = hci_flags(handle);
2769 	handle = hci_handle(handle);
2770 
2771 	BT_DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
2772 
2773 	hdev->stat.acl_rx++;
2774 
2775 	hci_dev_lock(hdev);
2776 	conn = hci_conn_hash_lookup_handle(hdev, handle);
2777 	hci_dev_unlock(hdev);
2778 
2779 	if (conn) {
2780 		hci_conn_enter_active_mode(conn, BT_POWER_FORCE_ACTIVE_OFF);
2781 
2782 		/* Send to upper protocol */
2783 		l2cap_recv_acldata(conn, skb, flags);
2784 		return;
2785 	} else {
2786 		BT_ERR("%s ACL packet for unknown connection handle %d",
2787 			hdev->name, handle);
2788 	}
2789 
2790 	kfree_skb(skb);
2791 }
2792 
2793 /* SCO data packet */
2794 static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
2795 {
2796 	struct hci_sco_hdr *hdr = (void *) skb->data;
2797 	struct hci_conn *conn;
2798 	__u16 handle;
2799 
2800 	skb_pull(skb, HCI_SCO_HDR_SIZE);
2801 
2802 	handle = __le16_to_cpu(hdr->handle);
2803 
2804 	BT_DBG("%s len %d handle 0x%x", hdev->name, skb->len, handle);
2805 
2806 	hdev->stat.sco_rx++;
2807 
2808 	hci_dev_lock(hdev);
2809 	conn = hci_conn_hash_lookup_handle(hdev, handle);
2810 	hci_dev_unlock(hdev);
2811 
2812 	if (conn) {
2813 		/* Send to upper protocol */
2814 		sco_recv_scodata(conn, skb);
2815 		return;
2816 	} else {
2817 		BT_ERR("%s SCO packet for unknown connection handle %d",
2818 			hdev->name, handle);
2819 	}
2820 
2821 	kfree_skb(skb);
2822 }
2823 
2824 static void hci_rx_work(struct work_struct *work)
2825 {
2826 	struct hci_dev *hdev = container_of(work, struct hci_dev, rx_work);
2827 	struct sk_buff *skb;
2828 
2829 	BT_DBG("%s", hdev->name);
2830 
2831 	while ((skb = skb_dequeue(&hdev->rx_q))) {
2832 		/* Send copy to monitor */
2833 		hci_send_to_monitor(hdev, skb);
2834 
2835 		if (atomic_read(&hdev->promisc)) {
2836 			/* Send copy to the sockets */
2837 			hci_send_to_sock(hdev, skb);
2838 		}
2839 
2840 		if (test_bit(HCI_RAW, &hdev->flags)) {
2841 			kfree_skb(skb);
2842 			continue;
2843 		}
2844 
2845 		if (test_bit(HCI_INIT, &hdev->flags)) {
2846 			/* Don't process data packets in this states. */
2847 			switch (bt_cb(skb)->pkt_type) {
2848 			case HCI_ACLDATA_PKT:
2849 			case HCI_SCODATA_PKT:
2850 				kfree_skb(skb);
2851 				continue;
2852 			}
2853 		}
2854 
2855 		/* Process frame */
2856 		switch (bt_cb(skb)->pkt_type) {
2857 		case HCI_EVENT_PKT:
2858 			BT_DBG("%s Event packet", hdev->name);
2859 			hci_event_packet(hdev, skb);
2860 			break;
2861 
2862 		case HCI_ACLDATA_PKT:
2863 			BT_DBG("%s ACL data packet", hdev->name);
2864 			hci_acldata_packet(hdev, skb);
2865 			break;
2866 
2867 		case HCI_SCODATA_PKT:
2868 			BT_DBG("%s SCO data packet", hdev->name);
2869 			hci_scodata_packet(hdev, skb);
2870 			break;
2871 
2872 		default:
2873 			kfree_skb(skb);
2874 			break;
2875 		}
2876 	}
2877 }
2878 
2879 static void hci_cmd_work(struct work_struct *work)
2880 {
2881 	struct hci_dev *hdev = container_of(work, struct hci_dev, cmd_work);
2882 	struct sk_buff *skb;
2883 
2884 	BT_DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
2885 
2886 	/* Send queued commands */
2887 	if (atomic_read(&hdev->cmd_cnt)) {
2888 		skb = skb_dequeue(&hdev->cmd_q);
2889 		if (!skb)
2890 			return;
2891 
2892 		kfree_skb(hdev->sent_cmd);
2893 
2894 		hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC);
2895 		if (hdev->sent_cmd) {
2896 			atomic_dec(&hdev->cmd_cnt);
2897 			hci_send_frame(skb);
2898 			if (test_bit(HCI_RESET, &hdev->flags))
2899 				del_timer(&hdev->cmd_timer);
2900 			else
2901 				mod_timer(&hdev->cmd_timer,
2902 				  jiffies + msecs_to_jiffies(HCI_CMD_TIMEOUT));
2903 		} else {
2904 			skb_queue_head(&hdev->cmd_q, skb);
2905 			queue_work(hdev->workqueue, &hdev->cmd_work);
2906 		}
2907 	}
2908 }
2909 
2910 int hci_do_inquiry(struct hci_dev *hdev, u8 length)
2911 {
2912 	/* General inquiry access code (GIAC) */
2913 	u8 lap[3] = { 0x33, 0x8b, 0x9e };
2914 	struct hci_cp_inquiry cp;
2915 
2916 	BT_DBG("%s", hdev->name);
2917 
2918 	if (test_bit(HCI_INQUIRY, &hdev->flags))
2919 		return -EINPROGRESS;
2920 
2921 	inquiry_cache_flush(hdev);
2922 
2923 	memset(&cp, 0, sizeof(cp));
2924 	memcpy(&cp.lap, lap, sizeof(cp.lap));
2925 	cp.length  = length;
2926 
2927 	return hci_send_cmd(hdev, HCI_OP_INQUIRY, sizeof(cp), &cp);
2928 }
2929 
2930 int hci_cancel_inquiry(struct hci_dev *hdev)
2931 {
2932 	BT_DBG("%s", hdev->name);
2933 
2934 	if (!test_bit(HCI_INQUIRY, &hdev->flags))
2935 		return -EPERM;
2936 
2937 	return hci_send_cmd(hdev, HCI_OP_INQUIRY_CANCEL, 0, NULL);
2938 }
2939