xref: /openbmc/linux/net/bluetooth/hci_core.c (revision df2634f43f5106947f3735a0b61a6527a4b278cd)
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4 
5    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
6 
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License version 2 as
9    published by the Free Software Foundation;
10 
11    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
14    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
15    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
16    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 
20    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
21    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
22    SOFTWARE IS DISCLAIMED.
23 */
24 
25 /* Bluetooth HCI core. */
26 
27 #include <linux/jiffies.h>
28 #include <linux/module.h>
29 #include <linux/kmod.h>
30 
31 #include <linux/types.h>
32 #include <linux/errno.h>
33 #include <linux/kernel.h>
34 #include <linux/sched.h>
35 #include <linux/slab.h>
36 #include <linux/poll.h>
37 #include <linux/fcntl.h>
38 #include <linux/init.h>
39 #include <linux/skbuff.h>
40 #include <linux/workqueue.h>
41 #include <linux/interrupt.h>
42 #include <linux/notifier.h>
43 #include <linux/rfkill.h>
44 #include <net/sock.h>
45 
46 #include <asm/system.h>
47 #include <linux/uaccess.h>
48 #include <asm/unaligned.h>
49 
50 #include <net/bluetooth/bluetooth.h>
51 #include <net/bluetooth/hci_core.h>
52 
53 static void hci_cmd_task(unsigned long arg);
54 static void hci_rx_task(unsigned long arg);
55 static void hci_tx_task(unsigned long arg);
56 static void hci_notify(struct hci_dev *hdev, int event);
57 
58 static DEFINE_RWLOCK(hci_task_lock);
59 
60 /* HCI device list */
61 LIST_HEAD(hci_dev_list);
62 DEFINE_RWLOCK(hci_dev_list_lock);
63 
64 /* HCI callback list */
65 LIST_HEAD(hci_cb_list);
66 DEFINE_RWLOCK(hci_cb_list_lock);
67 
68 /* HCI protocols */
69 #define HCI_MAX_PROTO	2
70 struct hci_proto *hci_proto[HCI_MAX_PROTO];
71 
72 /* HCI notifiers list */
73 static ATOMIC_NOTIFIER_HEAD(hci_notifier);
74 
75 /* ---- HCI notifications ---- */
76 
77 int hci_register_notifier(struct notifier_block *nb)
78 {
79 	return atomic_notifier_chain_register(&hci_notifier, nb);
80 }
81 
82 int hci_unregister_notifier(struct notifier_block *nb)
83 {
84 	return atomic_notifier_chain_unregister(&hci_notifier, nb);
85 }
86 
87 static void hci_notify(struct hci_dev *hdev, int event)
88 {
89 	atomic_notifier_call_chain(&hci_notifier, event, hdev);
90 }
91 
92 /* ---- HCI requests ---- */
93 
94 void hci_req_complete(struct hci_dev *hdev, __u16 cmd, int result)
95 {
96 	BT_DBG("%s command 0x%04x result 0x%2.2x", hdev->name, cmd, result);
97 
98 	/* If the request has set req_last_cmd (typical for multi-HCI
99 	 * command requests) check if the completed command matches
100 	 * this, and if not just return. Single HCI command requests
101 	 * typically leave req_last_cmd as 0 */
102 	if (hdev->req_last_cmd && cmd != hdev->req_last_cmd)
103 		return;
104 
105 	if (hdev->req_status == HCI_REQ_PEND) {
106 		hdev->req_result = result;
107 		hdev->req_status = HCI_REQ_DONE;
108 		wake_up_interruptible(&hdev->req_wait_q);
109 	}
110 }
111 
112 static void hci_req_cancel(struct hci_dev *hdev, int err)
113 {
114 	BT_DBG("%s err 0x%2.2x", hdev->name, err);
115 
116 	if (hdev->req_status == HCI_REQ_PEND) {
117 		hdev->req_result = err;
118 		hdev->req_status = HCI_REQ_CANCELED;
119 		wake_up_interruptible(&hdev->req_wait_q);
120 	}
121 }
122 
123 /* Execute request and wait for completion. */
124 static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt),
125 				unsigned long opt, __u32 timeout)
126 {
127 	DECLARE_WAITQUEUE(wait, current);
128 	int err = 0;
129 
130 	BT_DBG("%s start", hdev->name);
131 
132 	hdev->req_status = HCI_REQ_PEND;
133 
134 	add_wait_queue(&hdev->req_wait_q, &wait);
135 	set_current_state(TASK_INTERRUPTIBLE);
136 
137 	req(hdev, opt);
138 	schedule_timeout(timeout);
139 
140 	remove_wait_queue(&hdev->req_wait_q, &wait);
141 
142 	if (signal_pending(current))
143 		return -EINTR;
144 
145 	switch (hdev->req_status) {
146 	case HCI_REQ_DONE:
147 		err = -bt_err(hdev->req_result);
148 		break;
149 
150 	case HCI_REQ_CANCELED:
151 		err = -hdev->req_result;
152 		break;
153 
154 	default:
155 		err = -ETIMEDOUT;
156 		break;
157 	}
158 
159 	hdev->req_last_cmd = hdev->req_status = hdev->req_result = 0;
160 
161 	BT_DBG("%s end: err %d", hdev->name, err);
162 
163 	return err;
164 }
165 
166 static inline int hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt),
167 				unsigned long opt, __u32 timeout)
168 {
169 	int ret;
170 
171 	if (!test_bit(HCI_UP, &hdev->flags))
172 		return -ENETDOWN;
173 
174 	/* Serialize all requests */
175 	hci_req_lock(hdev);
176 	ret = __hci_request(hdev, req, opt, timeout);
177 	hci_req_unlock(hdev);
178 
179 	return ret;
180 }
181 
182 static void hci_reset_req(struct hci_dev *hdev, unsigned long opt)
183 {
184 	BT_DBG("%s %ld", hdev->name, opt);
185 
186 	/* Reset device */
187 	hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
188 }
189 
190 static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
191 {
192 	struct sk_buff *skb;
193 	__le16 param;
194 	__u8 flt_type;
195 
196 	BT_DBG("%s %ld", hdev->name, opt);
197 
198 	/* Driver initialization */
199 
200 	/* Special commands */
201 	while ((skb = skb_dequeue(&hdev->driver_init))) {
202 		bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
203 		skb->dev = (void *) hdev;
204 
205 		skb_queue_tail(&hdev->cmd_q, skb);
206 		tasklet_schedule(&hdev->cmd_task);
207 	}
208 	skb_queue_purge(&hdev->driver_init);
209 
210 	/* Mandatory initialization */
211 
212 	/* Reset */
213 	if (!test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks))
214 			hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
215 
216 	/* Read Local Supported Features */
217 	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_FEATURES, 0, NULL);
218 
219 	/* Read Local Version */
220 	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL);
221 
222 	/* Read Buffer Size (ACL mtu, max pkt, etc.) */
223 	hci_send_cmd(hdev, HCI_OP_READ_BUFFER_SIZE, 0, NULL);
224 
225 #if 0
226 	/* Host buffer size */
227 	{
228 		struct hci_cp_host_buffer_size cp;
229 		cp.acl_mtu = cpu_to_le16(HCI_MAX_ACL_SIZE);
230 		cp.sco_mtu = HCI_MAX_SCO_SIZE;
231 		cp.acl_max_pkt = cpu_to_le16(0xffff);
232 		cp.sco_max_pkt = cpu_to_le16(0xffff);
233 		hci_send_cmd(hdev, HCI_OP_HOST_BUFFER_SIZE, sizeof(cp), &cp);
234 	}
235 #endif
236 
237 	/* Read BD Address */
238 	hci_send_cmd(hdev, HCI_OP_READ_BD_ADDR, 0, NULL);
239 
240 	/* Read Class of Device */
241 	hci_send_cmd(hdev, HCI_OP_READ_CLASS_OF_DEV, 0, NULL);
242 
243 	/* Read Local Name */
244 	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_NAME, 0, NULL);
245 
246 	/* Read Voice Setting */
247 	hci_send_cmd(hdev, HCI_OP_READ_VOICE_SETTING, 0, NULL);
248 
249 	/* Optional initialization */
250 
251 	/* Clear Event Filters */
252 	flt_type = HCI_FLT_CLEAR_ALL;
253 	hci_send_cmd(hdev, HCI_OP_SET_EVENT_FLT, 1, &flt_type);
254 
255 	/* Page timeout ~20 secs */
256 	param = cpu_to_le16(0x8000);
257 	hci_send_cmd(hdev, HCI_OP_WRITE_PG_TIMEOUT, 2, &param);
258 
259 	/* Connection accept timeout ~20 secs */
260 	param = cpu_to_le16(0x7d00);
261 	hci_send_cmd(hdev, HCI_OP_WRITE_CA_TIMEOUT, 2, &param);
262 
263 	hdev->req_last_cmd = HCI_OP_WRITE_CA_TIMEOUT;
264 }
265 
266 static void hci_scan_req(struct hci_dev *hdev, unsigned long opt)
267 {
268 	__u8 scan = opt;
269 
270 	BT_DBG("%s %x", hdev->name, scan);
271 
272 	/* Inquiry and Page scans */
273 	hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan);
274 }
275 
276 static void hci_auth_req(struct hci_dev *hdev, unsigned long opt)
277 {
278 	__u8 auth = opt;
279 
280 	BT_DBG("%s %x", hdev->name, auth);
281 
282 	/* Authentication */
283 	hci_send_cmd(hdev, HCI_OP_WRITE_AUTH_ENABLE, 1, &auth);
284 }
285 
286 static void hci_encrypt_req(struct hci_dev *hdev, unsigned long opt)
287 {
288 	__u8 encrypt = opt;
289 
290 	BT_DBG("%s %x", hdev->name, encrypt);
291 
292 	/* Encryption */
293 	hci_send_cmd(hdev, HCI_OP_WRITE_ENCRYPT_MODE, 1, &encrypt);
294 }
295 
296 static void hci_linkpol_req(struct hci_dev *hdev, unsigned long opt)
297 {
298 	__le16 policy = cpu_to_le16(opt);
299 
300 	BT_DBG("%s %x", hdev->name, policy);
301 
302 	/* Default link policy */
303 	hci_send_cmd(hdev, HCI_OP_WRITE_DEF_LINK_POLICY, 2, &policy);
304 }
305 
306 /* Get HCI device by index.
307  * Device is held on return. */
308 struct hci_dev *hci_dev_get(int index)
309 {
310 	struct hci_dev *hdev = NULL;
311 	struct list_head *p;
312 
313 	BT_DBG("%d", index);
314 
315 	if (index < 0)
316 		return NULL;
317 
318 	read_lock(&hci_dev_list_lock);
319 	list_for_each(p, &hci_dev_list) {
320 		struct hci_dev *d = list_entry(p, struct hci_dev, list);
321 		if (d->id == index) {
322 			hdev = hci_dev_hold(d);
323 			break;
324 		}
325 	}
326 	read_unlock(&hci_dev_list_lock);
327 	return hdev;
328 }
329 
330 /* ---- Inquiry support ---- */
331 static void inquiry_cache_flush(struct hci_dev *hdev)
332 {
333 	struct inquiry_cache *cache = &hdev->inq_cache;
334 	struct inquiry_entry *next  = cache->list, *e;
335 
336 	BT_DBG("cache %p", cache);
337 
338 	cache->list = NULL;
339 	while ((e = next)) {
340 		next = e->next;
341 		kfree(e);
342 	}
343 }
344 
345 struct inquiry_entry *hci_inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
346 {
347 	struct inquiry_cache *cache = &hdev->inq_cache;
348 	struct inquiry_entry *e;
349 
350 	BT_DBG("cache %p, %s", cache, batostr(bdaddr));
351 
352 	for (e = cache->list; e; e = e->next)
353 		if (!bacmp(&e->data.bdaddr, bdaddr))
354 			break;
355 	return e;
356 }
357 
358 void hci_inquiry_cache_update(struct hci_dev *hdev, struct inquiry_data *data)
359 {
360 	struct inquiry_cache *cache = &hdev->inq_cache;
361 	struct inquiry_entry *ie;
362 
363 	BT_DBG("cache %p, %s", cache, batostr(&data->bdaddr));
364 
365 	ie = hci_inquiry_cache_lookup(hdev, &data->bdaddr);
366 	if (!ie) {
367 		/* Entry not in the cache. Add new one. */
368 		ie = kzalloc(sizeof(struct inquiry_entry), GFP_ATOMIC);
369 		if (!ie)
370 			return;
371 
372 		ie->next = cache->list;
373 		cache->list = ie;
374 	}
375 
376 	memcpy(&ie->data, data, sizeof(*data));
377 	ie->timestamp = jiffies;
378 	cache->timestamp = jiffies;
379 }
380 
381 static int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf)
382 {
383 	struct inquiry_cache *cache = &hdev->inq_cache;
384 	struct inquiry_info *info = (struct inquiry_info *) buf;
385 	struct inquiry_entry *e;
386 	int copied = 0;
387 
388 	for (e = cache->list; e && copied < num; e = e->next, copied++) {
389 		struct inquiry_data *data = &e->data;
390 		bacpy(&info->bdaddr, &data->bdaddr);
391 		info->pscan_rep_mode	= data->pscan_rep_mode;
392 		info->pscan_period_mode	= data->pscan_period_mode;
393 		info->pscan_mode	= data->pscan_mode;
394 		memcpy(info->dev_class, data->dev_class, 3);
395 		info->clock_offset	= data->clock_offset;
396 		info++;
397 	}
398 
399 	BT_DBG("cache %p, copied %d", cache, copied);
400 	return copied;
401 }
402 
403 static void hci_inq_req(struct hci_dev *hdev, unsigned long opt)
404 {
405 	struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
406 	struct hci_cp_inquiry cp;
407 
408 	BT_DBG("%s", hdev->name);
409 
410 	if (test_bit(HCI_INQUIRY, &hdev->flags))
411 		return;
412 
413 	/* Start Inquiry */
414 	memcpy(&cp.lap, &ir->lap, 3);
415 	cp.length  = ir->length;
416 	cp.num_rsp = ir->num_rsp;
417 	hci_send_cmd(hdev, HCI_OP_INQUIRY, sizeof(cp), &cp);
418 }
419 
420 int hci_inquiry(void __user *arg)
421 {
422 	__u8 __user *ptr = arg;
423 	struct hci_inquiry_req ir;
424 	struct hci_dev *hdev;
425 	int err = 0, do_inquiry = 0, max_rsp;
426 	long timeo;
427 	__u8 *buf;
428 
429 	if (copy_from_user(&ir, ptr, sizeof(ir)))
430 		return -EFAULT;
431 
432 	if (!(hdev = hci_dev_get(ir.dev_id)))
433 		return -ENODEV;
434 
435 	hci_dev_lock_bh(hdev);
436 	if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX ||
437 				inquiry_cache_empty(hdev) ||
438 				ir.flags & IREQ_CACHE_FLUSH) {
439 		inquiry_cache_flush(hdev);
440 		do_inquiry = 1;
441 	}
442 	hci_dev_unlock_bh(hdev);
443 
444 	timeo = ir.length * msecs_to_jiffies(2000);
445 
446 	if (do_inquiry) {
447 		err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo);
448 		if (err < 0)
449 			goto done;
450 	}
451 
452 	/* for unlimited number of responses we will use buffer with 255 entries */
453 	max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp;
454 
455 	/* cache_dump can't sleep. Therefore we allocate temp buffer and then
456 	 * copy it to the user space.
457 	 */
458 	buf = kmalloc(sizeof(struct inquiry_info) *max_rsp, GFP_KERNEL);
459 	if (!buf) {
460 		err = -ENOMEM;
461 		goto done;
462 	}
463 
464 	hci_dev_lock_bh(hdev);
465 	ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf);
466 	hci_dev_unlock_bh(hdev);
467 
468 	BT_DBG("num_rsp %d", ir.num_rsp);
469 
470 	if (!copy_to_user(ptr, &ir, sizeof(ir))) {
471 		ptr += sizeof(ir);
472 		if (copy_to_user(ptr, buf, sizeof(struct inquiry_info) *
473 					ir.num_rsp))
474 			err = -EFAULT;
475 	} else
476 		err = -EFAULT;
477 
478 	kfree(buf);
479 
480 done:
481 	hci_dev_put(hdev);
482 	return err;
483 }
484 
485 /* ---- HCI ioctl helpers ---- */
486 
487 int hci_dev_open(__u16 dev)
488 {
489 	struct hci_dev *hdev;
490 	int ret = 0;
491 
492 	if (!(hdev = hci_dev_get(dev)))
493 		return -ENODEV;
494 
495 	BT_DBG("%s %p", hdev->name, hdev);
496 
497 	hci_req_lock(hdev);
498 
499 	if (hdev->rfkill && rfkill_blocked(hdev->rfkill)) {
500 		ret = -ERFKILL;
501 		goto done;
502 	}
503 
504 	if (test_bit(HCI_UP, &hdev->flags)) {
505 		ret = -EALREADY;
506 		goto done;
507 	}
508 
509 	if (test_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks))
510 		set_bit(HCI_RAW, &hdev->flags);
511 
512 	/* Treat all non BR/EDR controllers as raw devices for now */
513 	if (hdev->dev_type != HCI_BREDR)
514 		set_bit(HCI_RAW, &hdev->flags);
515 
516 	if (hdev->open(hdev)) {
517 		ret = -EIO;
518 		goto done;
519 	}
520 
521 	if (!test_bit(HCI_RAW, &hdev->flags)) {
522 		atomic_set(&hdev->cmd_cnt, 1);
523 		set_bit(HCI_INIT, &hdev->flags);
524 
525 		//__hci_request(hdev, hci_reset_req, 0, HZ);
526 		ret = __hci_request(hdev, hci_init_req, 0,
527 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
528 
529 		clear_bit(HCI_INIT, &hdev->flags);
530 	}
531 
532 	if (!ret) {
533 		hci_dev_hold(hdev);
534 		set_bit(HCI_UP, &hdev->flags);
535 		hci_notify(hdev, HCI_DEV_UP);
536 	} else {
537 		/* Init failed, cleanup */
538 		tasklet_kill(&hdev->rx_task);
539 		tasklet_kill(&hdev->tx_task);
540 		tasklet_kill(&hdev->cmd_task);
541 
542 		skb_queue_purge(&hdev->cmd_q);
543 		skb_queue_purge(&hdev->rx_q);
544 
545 		if (hdev->flush)
546 			hdev->flush(hdev);
547 
548 		if (hdev->sent_cmd) {
549 			kfree_skb(hdev->sent_cmd);
550 			hdev->sent_cmd = NULL;
551 		}
552 
553 		hdev->close(hdev);
554 		hdev->flags = 0;
555 	}
556 
557 done:
558 	hci_req_unlock(hdev);
559 	hci_dev_put(hdev);
560 	return ret;
561 }
562 
563 static int hci_dev_do_close(struct hci_dev *hdev)
564 {
565 	BT_DBG("%s %p", hdev->name, hdev);
566 
567 	hci_req_cancel(hdev, ENODEV);
568 	hci_req_lock(hdev);
569 
570 	if (!test_and_clear_bit(HCI_UP, &hdev->flags)) {
571 		hci_req_unlock(hdev);
572 		return 0;
573 	}
574 
575 	/* Kill RX and TX tasks */
576 	tasklet_kill(&hdev->rx_task);
577 	tasklet_kill(&hdev->tx_task);
578 
579 	hci_dev_lock_bh(hdev);
580 	inquiry_cache_flush(hdev);
581 	hci_conn_hash_flush(hdev);
582 	hci_dev_unlock_bh(hdev);
583 
584 	hci_notify(hdev, HCI_DEV_DOWN);
585 
586 	if (hdev->flush)
587 		hdev->flush(hdev);
588 
589 	/* Reset device */
590 	skb_queue_purge(&hdev->cmd_q);
591 	atomic_set(&hdev->cmd_cnt, 1);
592 	if (!test_bit(HCI_RAW, &hdev->flags)) {
593 		set_bit(HCI_INIT, &hdev->flags);
594 		__hci_request(hdev, hci_reset_req, 0,
595 					msecs_to_jiffies(250));
596 		clear_bit(HCI_INIT, &hdev->flags);
597 	}
598 
599 	/* Kill cmd task */
600 	tasklet_kill(&hdev->cmd_task);
601 
602 	/* Drop queues */
603 	skb_queue_purge(&hdev->rx_q);
604 	skb_queue_purge(&hdev->cmd_q);
605 	skb_queue_purge(&hdev->raw_q);
606 
607 	/* Drop last sent command */
608 	if (hdev->sent_cmd) {
609 		kfree_skb(hdev->sent_cmd);
610 		hdev->sent_cmd = NULL;
611 	}
612 
613 	/* After this point our queues are empty
614 	 * and no tasks are scheduled. */
615 	hdev->close(hdev);
616 
617 	/* Clear flags */
618 	hdev->flags = 0;
619 
620 	hci_req_unlock(hdev);
621 
622 	hci_dev_put(hdev);
623 	return 0;
624 }
625 
626 int hci_dev_close(__u16 dev)
627 {
628 	struct hci_dev *hdev;
629 	int err;
630 
631 	hdev = hci_dev_get(dev);
632 	if (!hdev)
633 		return -ENODEV;
634 	err = hci_dev_do_close(hdev);
635 	hci_dev_put(hdev);
636 	return err;
637 }
638 
639 int hci_dev_reset(__u16 dev)
640 {
641 	struct hci_dev *hdev;
642 	int ret = 0;
643 
644 	hdev = hci_dev_get(dev);
645 	if (!hdev)
646 		return -ENODEV;
647 
648 	hci_req_lock(hdev);
649 	tasklet_disable(&hdev->tx_task);
650 
651 	if (!test_bit(HCI_UP, &hdev->flags))
652 		goto done;
653 
654 	/* Drop queues */
655 	skb_queue_purge(&hdev->rx_q);
656 	skb_queue_purge(&hdev->cmd_q);
657 
658 	hci_dev_lock_bh(hdev);
659 	inquiry_cache_flush(hdev);
660 	hci_conn_hash_flush(hdev);
661 	hci_dev_unlock_bh(hdev);
662 
663 	if (hdev->flush)
664 		hdev->flush(hdev);
665 
666 	atomic_set(&hdev->cmd_cnt, 1);
667 	hdev->acl_cnt = 0; hdev->sco_cnt = 0;
668 
669 	if (!test_bit(HCI_RAW, &hdev->flags))
670 		ret = __hci_request(hdev, hci_reset_req, 0,
671 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
672 
673 done:
674 	tasklet_enable(&hdev->tx_task);
675 	hci_req_unlock(hdev);
676 	hci_dev_put(hdev);
677 	return ret;
678 }
679 
680 int hci_dev_reset_stat(__u16 dev)
681 {
682 	struct hci_dev *hdev;
683 	int ret = 0;
684 
685 	hdev = hci_dev_get(dev);
686 	if (!hdev)
687 		return -ENODEV;
688 
689 	memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
690 
691 	hci_dev_put(hdev);
692 
693 	return ret;
694 }
695 
696 int hci_dev_cmd(unsigned int cmd, void __user *arg)
697 {
698 	struct hci_dev *hdev;
699 	struct hci_dev_req dr;
700 	int err = 0;
701 
702 	if (copy_from_user(&dr, arg, sizeof(dr)))
703 		return -EFAULT;
704 
705 	hdev = hci_dev_get(dr.dev_id);
706 	if (!hdev)
707 		return -ENODEV;
708 
709 	switch (cmd) {
710 	case HCISETAUTH:
711 		err = hci_request(hdev, hci_auth_req, dr.dev_opt,
712 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
713 		break;
714 
715 	case HCISETENCRYPT:
716 		if (!lmp_encrypt_capable(hdev)) {
717 			err = -EOPNOTSUPP;
718 			break;
719 		}
720 
721 		if (!test_bit(HCI_AUTH, &hdev->flags)) {
722 			/* Auth must be enabled first */
723 			err = hci_request(hdev, hci_auth_req, dr.dev_opt,
724 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
725 			if (err)
726 				break;
727 		}
728 
729 		err = hci_request(hdev, hci_encrypt_req, dr.dev_opt,
730 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
731 		break;
732 
733 	case HCISETSCAN:
734 		err = hci_request(hdev, hci_scan_req, dr.dev_opt,
735 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
736 		break;
737 
738 	case HCISETLINKPOL:
739 		err = hci_request(hdev, hci_linkpol_req, dr.dev_opt,
740 					msecs_to_jiffies(HCI_INIT_TIMEOUT));
741 		break;
742 
743 	case HCISETLINKMODE:
744 		hdev->link_mode = ((__u16) dr.dev_opt) &
745 					(HCI_LM_MASTER | HCI_LM_ACCEPT);
746 		break;
747 
748 	case HCISETPTYPE:
749 		hdev->pkt_type = (__u16) dr.dev_opt;
750 		break;
751 
752 	case HCISETACLMTU:
753 		hdev->acl_mtu  = *((__u16 *) &dr.dev_opt + 1);
754 		hdev->acl_pkts = *((__u16 *) &dr.dev_opt + 0);
755 		break;
756 
757 	case HCISETSCOMTU:
758 		hdev->sco_mtu  = *((__u16 *) &dr.dev_opt + 1);
759 		hdev->sco_pkts = *((__u16 *) &dr.dev_opt + 0);
760 		break;
761 
762 	default:
763 		err = -EINVAL;
764 		break;
765 	}
766 
767 	hci_dev_put(hdev);
768 	return err;
769 }
770 
771 int hci_get_dev_list(void __user *arg)
772 {
773 	struct hci_dev_list_req *dl;
774 	struct hci_dev_req *dr;
775 	struct list_head *p;
776 	int n = 0, size, err;
777 	__u16 dev_num;
778 
779 	if (get_user(dev_num, (__u16 __user *) arg))
780 		return -EFAULT;
781 
782 	if (!dev_num || dev_num > (PAGE_SIZE * 2) / sizeof(*dr))
783 		return -EINVAL;
784 
785 	size = sizeof(*dl) + dev_num * sizeof(*dr);
786 
787 	dl = kzalloc(size, GFP_KERNEL);
788 	if (!dl)
789 		return -ENOMEM;
790 
791 	dr = dl->dev_req;
792 
793 	read_lock_bh(&hci_dev_list_lock);
794 	list_for_each(p, &hci_dev_list) {
795 		struct hci_dev *hdev;
796 		hdev = list_entry(p, struct hci_dev, list);
797 		(dr + n)->dev_id  = hdev->id;
798 		(dr + n)->dev_opt = hdev->flags;
799 		if (++n >= dev_num)
800 			break;
801 	}
802 	read_unlock_bh(&hci_dev_list_lock);
803 
804 	dl->dev_num = n;
805 	size = sizeof(*dl) + n * sizeof(*dr);
806 
807 	err = copy_to_user(arg, dl, size);
808 	kfree(dl);
809 
810 	return err ? -EFAULT : 0;
811 }
812 
813 int hci_get_dev_info(void __user *arg)
814 {
815 	struct hci_dev *hdev;
816 	struct hci_dev_info di;
817 	int err = 0;
818 
819 	if (copy_from_user(&di, arg, sizeof(di)))
820 		return -EFAULT;
821 
822 	hdev = hci_dev_get(di.dev_id);
823 	if (!hdev)
824 		return -ENODEV;
825 
826 	strcpy(di.name, hdev->name);
827 	di.bdaddr   = hdev->bdaddr;
828 	di.type     = (hdev->bus & 0x0f) | (hdev->dev_type << 4);
829 	di.flags    = hdev->flags;
830 	di.pkt_type = hdev->pkt_type;
831 	di.acl_mtu  = hdev->acl_mtu;
832 	di.acl_pkts = hdev->acl_pkts;
833 	di.sco_mtu  = hdev->sco_mtu;
834 	di.sco_pkts = hdev->sco_pkts;
835 	di.link_policy = hdev->link_policy;
836 	di.link_mode   = hdev->link_mode;
837 
838 	memcpy(&di.stat, &hdev->stat, sizeof(di.stat));
839 	memcpy(&di.features, &hdev->features, sizeof(di.features));
840 
841 	if (copy_to_user(arg, &di, sizeof(di)))
842 		err = -EFAULT;
843 
844 	hci_dev_put(hdev);
845 
846 	return err;
847 }
848 
849 /* ---- Interface to HCI drivers ---- */
850 
851 static int hci_rfkill_set_block(void *data, bool blocked)
852 {
853 	struct hci_dev *hdev = data;
854 
855 	BT_DBG("%p name %s blocked %d", hdev, hdev->name, blocked);
856 
857 	if (!blocked)
858 		return 0;
859 
860 	hci_dev_do_close(hdev);
861 
862 	return 0;
863 }
864 
865 static const struct rfkill_ops hci_rfkill_ops = {
866 	.set_block = hci_rfkill_set_block,
867 };
868 
869 /* Alloc HCI device */
870 struct hci_dev *hci_alloc_dev(void)
871 {
872 	struct hci_dev *hdev;
873 
874 	hdev = kzalloc(sizeof(struct hci_dev), GFP_KERNEL);
875 	if (!hdev)
876 		return NULL;
877 
878 	skb_queue_head_init(&hdev->driver_init);
879 
880 	return hdev;
881 }
882 EXPORT_SYMBOL(hci_alloc_dev);
883 
884 /* Free HCI device */
885 void hci_free_dev(struct hci_dev *hdev)
886 {
887 	skb_queue_purge(&hdev->driver_init);
888 
889 	/* will free via device release */
890 	put_device(&hdev->dev);
891 }
892 EXPORT_SYMBOL(hci_free_dev);
893 
894 /* Register HCI device */
895 int hci_register_dev(struct hci_dev *hdev)
896 {
897 	struct list_head *head = &hci_dev_list, *p;
898 	int i, id = 0;
899 
900 	BT_DBG("%p name %s bus %d owner %p", hdev, hdev->name,
901 						hdev->bus, hdev->owner);
902 
903 	if (!hdev->open || !hdev->close || !hdev->destruct)
904 		return -EINVAL;
905 
906 	write_lock_bh(&hci_dev_list_lock);
907 
908 	/* Find first available device id */
909 	list_for_each(p, &hci_dev_list) {
910 		if (list_entry(p, struct hci_dev, list)->id != id)
911 			break;
912 		head = p; id++;
913 	}
914 
915 	sprintf(hdev->name, "hci%d", id);
916 	hdev->id = id;
917 	list_add(&hdev->list, head);
918 
919 	atomic_set(&hdev->refcnt, 1);
920 	spin_lock_init(&hdev->lock);
921 
922 	hdev->flags = 0;
923 	hdev->pkt_type  = (HCI_DM1 | HCI_DH1 | HCI_HV1);
924 	hdev->esco_type = (ESCO_HV1);
925 	hdev->link_mode = (HCI_LM_ACCEPT);
926 
927 	hdev->idle_timeout = 0;
928 	hdev->sniff_max_interval = 800;
929 	hdev->sniff_min_interval = 80;
930 
931 	tasklet_init(&hdev->cmd_task, hci_cmd_task, (unsigned long) hdev);
932 	tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev);
933 	tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev);
934 
935 	skb_queue_head_init(&hdev->rx_q);
936 	skb_queue_head_init(&hdev->cmd_q);
937 	skb_queue_head_init(&hdev->raw_q);
938 
939 	for (i = 0; i < NUM_REASSEMBLY; i++)
940 		hdev->reassembly[i] = NULL;
941 
942 	init_waitqueue_head(&hdev->req_wait_q);
943 	mutex_init(&hdev->req_lock);
944 
945 	inquiry_cache_init(hdev);
946 
947 	hci_conn_hash_init(hdev);
948 
949 	INIT_LIST_HEAD(&hdev->blacklist);
950 
951 	memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
952 
953 	atomic_set(&hdev->promisc, 0);
954 
955 	write_unlock_bh(&hci_dev_list_lock);
956 
957 	hdev->workqueue = create_singlethread_workqueue(hdev->name);
958 	if (!hdev->workqueue)
959 		goto nomem;
960 
961 	hci_register_sysfs(hdev);
962 
963 	hdev->rfkill = rfkill_alloc(hdev->name, &hdev->dev,
964 				RFKILL_TYPE_BLUETOOTH, &hci_rfkill_ops, hdev);
965 	if (hdev->rfkill) {
966 		if (rfkill_register(hdev->rfkill) < 0) {
967 			rfkill_destroy(hdev->rfkill);
968 			hdev->rfkill = NULL;
969 		}
970 	}
971 
972 	mgmt_index_added(hdev->id);
973 	hci_notify(hdev, HCI_DEV_REG);
974 
975 	return id;
976 
977 nomem:
978 	write_lock_bh(&hci_dev_list_lock);
979 	list_del(&hdev->list);
980 	write_unlock_bh(&hci_dev_list_lock);
981 
982 	return -ENOMEM;
983 }
984 EXPORT_SYMBOL(hci_register_dev);
985 
986 /* Unregister HCI device */
987 int hci_unregister_dev(struct hci_dev *hdev)
988 {
989 	int i;
990 
991 	BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
992 
993 	write_lock_bh(&hci_dev_list_lock);
994 	list_del(&hdev->list);
995 	write_unlock_bh(&hci_dev_list_lock);
996 
997 	hci_dev_do_close(hdev);
998 
999 	for (i = 0; i < NUM_REASSEMBLY; i++)
1000 		kfree_skb(hdev->reassembly[i]);
1001 
1002 	mgmt_index_removed(hdev->id);
1003 	hci_notify(hdev, HCI_DEV_UNREG);
1004 
1005 	if (hdev->rfkill) {
1006 		rfkill_unregister(hdev->rfkill);
1007 		rfkill_destroy(hdev->rfkill);
1008 	}
1009 
1010 	hci_unregister_sysfs(hdev);
1011 
1012 	destroy_workqueue(hdev->workqueue);
1013 
1014 	hci_dev_lock_bh(hdev);
1015 	hci_blacklist_clear(hdev);
1016 	hci_dev_unlock_bh(hdev);
1017 
1018 	__hci_dev_put(hdev);
1019 
1020 	return 0;
1021 }
1022 EXPORT_SYMBOL(hci_unregister_dev);
1023 
1024 /* Suspend HCI device */
1025 int hci_suspend_dev(struct hci_dev *hdev)
1026 {
1027 	hci_notify(hdev, HCI_DEV_SUSPEND);
1028 	return 0;
1029 }
1030 EXPORT_SYMBOL(hci_suspend_dev);
1031 
1032 /* Resume HCI device */
1033 int hci_resume_dev(struct hci_dev *hdev)
1034 {
1035 	hci_notify(hdev, HCI_DEV_RESUME);
1036 	return 0;
1037 }
1038 EXPORT_SYMBOL(hci_resume_dev);
1039 
1040 /* Receive frame from HCI drivers */
1041 int hci_recv_frame(struct sk_buff *skb)
1042 {
1043 	struct hci_dev *hdev = (struct hci_dev *) skb->dev;
1044 	if (!hdev || (!test_bit(HCI_UP, &hdev->flags)
1045 				&& !test_bit(HCI_INIT, &hdev->flags))) {
1046 		kfree_skb(skb);
1047 		return -ENXIO;
1048 	}
1049 
1050 	/* Incomming skb */
1051 	bt_cb(skb)->incoming = 1;
1052 
1053 	/* Time stamp */
1054 	__net_timestamp(skb);
1055 
1056 	/* Queue frame for rx task */
1057 	skb_queue_tail(&hdev->rx_q, skb);
1058 	tasklet_schedule(&hdev->rx_task);
1059 
1060 	return 0;
1061 }
1062 EXPORT_SYMBOL(hci_recv_frame);
1063 
1064 static int hci_reassembly(struct hci_dev *hdev, int type, void *data,
1065 			  int count, __u8 index, gfp_t gfp_mask)
1066 {
1067 	int len = 0;
1068 	int hlen = 0;
1069 	int remain = count;
1070 	struct sk_buff *skb;
1071 	struct bt_skb_cb *scb;
1072 
1073 	if ((type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT) ||
1074 				index >= NUM_REASSEMBLY)
1075 		return -EILSEQ;
1076 
1077 	skb = hdev->reassembly[index];
1078 
1079 	if (!skb) {
1080 		switch (type) {
1081 		case HCI_ACLDATA_PKT:
1082 			len = HCI_MAX_FRAME_SIZE;
1083 			hlen = HCI_ACL_HDR_SIZE;
1084 			break;
1085 		case HCI_EVENT_PKT:
1086 			len = HCI_MAX_EVENT_SIZE;
1087 			hlen = HCI_EVENT_HDR_SIZE;
1088 			break;
1089 		case HCI_SCODATA_PKT:
1090 			len = HCI_MAX_SCO_SIZE;
1091 			hlen = HCI_SCO_HDR_SIZE;
1092 			break;
1093 		}
1094 
1095 		skb = bt_skb_alloc(len, gfp_mask);
1096 		if (!skb)
1097 			return -ENOMEM;
1098 
1099 		scb = (void *) skb->cb;
1100 		scb->expect = hlen;
1101 		scb->pkt_type = type;
1102 
1103 		skb->dev = (void *) hdev;
1104 		hdev->reassembly[index] = skb;
1105 	}
1106 
1107 	while (count) {
1108 		scb = (void *) skb->cb;
1109 		len = min(scb->expect, (__u16)count);
1110 
1111 		memcpy(skb_put(skb, len), data, len);
1112 
1113 		count -= len;
1114 		data += len;
1115 		scb->expect -= len;
1116 		remain = count;
1117 
1118 		switch (type) {
1119 		case HCI_EVENT_PKT:
1120 			if (skb->len == HCI_EVENT_HDR_SIZE) {
1121 				struct hci_event_hdr *h = hci_event_hdr(skb);
1122 				scb->expect = h->plen;
1123 
1124 				if (skb_tailroom(skb) < scb->expect) {
1125 					kfree_skb(skb);
1126 					hdev->reassembly[index] = NULL;
1127 					return -ENOMEM;
1128 				}
1129 			}
1130 			break;
1131 
1132 		case HCI_ACLDATA_PKT:
1133 			if (skb->len  == HCI_ACL_HDR_SIZE) {
1134 				struct hci_acl_hdr *h = hci_acl_hdr(skb);
1135 				scb->expect = __le16_to_cpu(h->dlen);
1136 
1137 				if (skb_tailroom(skb) < scb->expect) {
1138 					kfree_skb(skb);
1139 					hdev->reassembly[index] = NULL;
1140 					return -ENOMEM;
1141 				}
1142 			}
1143 			break;
1144 
1145 		case HCI_SCODATA_PKT:
1146 			if (skb->len == HCI_SCO_HDR_SIZE) {
1147 				struct hci_sco_hdr *h = hci_sco_hdr(skb);
1148 				scb->expect = h->dlen;
1149 
1150 				if (skb_tailroom(skb) < scb->expect) {
1151 					kfree_skb(skb);
1152 					hdev->reassembly[index] = NULL;
1153 					return -ENOMEM;
1154 				}
1155 			}
1156 			break;
1157 		}
1158 
1159 		if (scb->expect == 0) {
1160 			/* Complete frame */
1161 
1162 			bt_cb(skb)->pkt_type = type;
1163 			hci_recv_frame(skb);
1164 
1165 			hdev->reassembly[index] = NULL;
1166 			return remain;
1167 		}
1168 	}
1169 
1170 	return remain;
1171 }
1172 
1173 int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count)
1174 {
1175 	int rem = 0;
1176 
1177 	if (type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT)
1178 		return -EILSEQ;
1179 
1180 	while (count) {
1181 		rem = hci_reassembly(hdev, type, data, count,
1182 						type - 1, GFP_ATOMIC);
1183 		if (rem < 0)
1184 			return rem;
1185 
1186 		data += (count - rem);
1187 		count = rem;
1188 	};
1189 
1190 	return rem;
1191 }
1192 EXPORT_SYMBOL(hci_recv_fragment);
1193 
1194 #define STREAM_REASSEMBLY 0
1195 
1196 int hci_recv_stream_fragment(struct hci_dev *hdev, void *data, int count)
1197 {
1198 	int type;
1199 	int rem = 0;
1200 
1201 	while (count) {
1202 		struct sk_buff *skb = hdev->reassembly[STREAM_REASSEMBLY];
1203 
1204 		if (!skb) {
1205 			struct { char type; } *pkt;
1206 
1207 			/* Start of the frame */
1208 			pkt = data;
1209 			type = pkt->type;
1210 
1211 			data++;
1212 			count--;
1213 		} else
1214 			type = bt_cb(skb)->pkt_type;
1215 
1216 		rem = hci_reassembly(hdev, type, data,
1217 					count, STREAM_REASSEMBLY, GFP_ATOMIC);
1218 		if (rem < 0)
1219 			return rem;
1220 
1221 		data += (count - rem);
1222 		count = rem;
1223 	};
1224 
1225 	return rem;
1226 }
1227 EXPORT_SYMBOL(hci_recv_stream_fragment);
1228 
1229 /* ---- Interface to upper protocols ---- */
1230 
1231 /* Register/Unregister protocols.
1232  * hci_task_lock is used to ensure that no tasks are running. */
1233 int hci_register_proto(struct hci_proto *hp)
1234 {
1235 	int err = 0;
1236 
1237 	BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
1238 
1239 	if (hp->id >= HCI_MAX_PROTO)
1240 		return -EINVAL;
1241 
1242 	write_lock_bh(&hci_task_lock);
1243 
1244 	if (!hci_proto[hp->id])
1245 		hci_proto[hp->id] = hp;
1246 	else
1247 		err = -EEXIST;
1248 
1249 	write_unlock_bh(&hci_task_lock);
1250 
1251 	return err;
1252 }
1253 EXPORT_SYMBOL(hci_register_proto);
1254 
1255 int hci_unregister_proto(struct hci_proto *hp)
1256 {
1257 	int err = 0;
1258 
1259 	BT_DBG("%p name %s id %d", hp, hp->name, hp->id);
1260 
1261 	if (hp->id >= HCI_MAX_PROTO)
1262 		return -EINVAL;
1263 
1264 	write_lock_bh(&hci_task_lock);
1265 
1266 	if (hci_proto[hp->id])
1267 		hci_proto[hp->id] = NULL;
1268 	else
1269 		err = -ENOENT;
1270 
1271 	write_unlock_bh(&hci_task_lock);
1272 
1273 	return err;
1274 }
1275 EXPORT_SYMBOL(hci_unregister_proto);
1276 
1277 int hci_register_cb(struct hci_cb *cb)
1278 {
1279 	BT_DBG("%p name %s", cb, cb->name);
1280 
1281 	write_lock_bh(&hci_cb_list_lock);
1282 	list_add(&cb->list, &hci_cb_list);
1283 	write_unlock_bh(&hci_cb_list_lock);
1284 
1285 	return 0;
1286 }
1287 EXPORT_SYMBOL(hci_register_cb);
1288 
1289 int hci_unregister_cb(struct hci_cb *cb)
1290 {
1291 	BT_DBG("%p name %s", cb, cb->name);
1292 
1293 	write_lock_bh(&hci_cb_list_lock);
1294 	list_del(&cb->list);
1295 	write_unlock_bh(&hci_cb_list_lock);
1296 
1297 	return 0;
1298 }
1299 EXPORT_SYMBOL(hci_unregister_cb);
1300 
1301 static int hci_send_frame(struct sk_buff *skb)
1302 {
1303 	struct hci_dev *hdev = (struct hci_dev *) skb->dev;
1304 
1305 	if (!hdev) {
1306 		kfree_skb(skb);
1307 		return -ENODEV;
1308 	}
1309 
1310 	BT_DBG("%s type %d len %d", hdev->name, bt_cb(skb)->pkt_type, skb->len);
1311 
1312 	if (atomic_read(&hdev->promisc)) {
1313 		/* Time stamp */
1314 		__net_timestamp(skb);
1315 
1316 		hci_send_to_sock(hdev, skb);
1317 	}
1318 
1319 	/* Get rid of skb owner, prior to sending to the driver. */
1320 	skb_orphan(skb);
1321 
1322 	return hdev->send(skb);
1323 }
1324 
1325 /* Send HCI command */
1326 int hci_send_cmd(struct hci_dev *hdev, __u16 opcode, __u32 plen, void *param)
1327 {
1328 	int len = HCI_COMMAND_HDR_SIZE + plen;
1329 	struct hci_command_hdr *hdr;
1330 	struct sk_buff *skb;
1331 
1332 	BT_DBG("%s opcode 0x%x plen %d", hdev->name, opcode, plen);
1333 
1334 	skb = bt_skb_alloc(len, GFP_ATOMIC);
1335 	if (!skb) {
1336 		BT_ERR("%s no memory for command", hdev->name);
1337 		return -ENOMEM;
1338 	}
1339 
1340 	hdr = (struct hci_command_hdr *) skb_put(skb, HCI_COMMAND_HDR_SIZE);
1341 	hdr->opcode = cpu_to_le16(opcode);
1342 	hdr->plen   = plen;
1343 
1344 	if (plen)
1345 		memcpy(skb_put(skb, plen), param, plen);
1346 
1347 	BT_DBG("skb len %d", skb->len);
1348 
1349 	bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
1350 	skb->dev = (void *) hdev;
1351 
1352 	skb_queue_tail(&hdev->cmd_q, skb);
1353 	tasklet_schedule(&hdev->cmd_task);
1354 
1355 	return 0;
1356 }
1357 
1358 /* Get data from the previously sent command */
1359 void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 opcode)
1360 {
1361 	struct hci_command_hdr *hdr;
1362 
1363 	if (!hdev->sent_cmd)
1364 		return NULL;
1365 
1366 	hdr = (void *) hdev->sent_cmd->data;
1367 
1368 	if (hdr->opcode != cpu_to_le16(opcode))
1369 		return NULL;
1370 
1371 	BT_DBG("%s opcode 0x%x", hdev->name, opcode);
1372 
1373 	return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
1374 }
1375 
1376 /* Send ACL data */
1377 static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags)
1378 {
1379 	struct hci_acl_hdr *hdr;
1380 	int len = skb->len;
1381 
1382 	skb_push(skb, HCI_ACL_HDR_SIZE);
1383 	skb_reset_transport_header(skb);
1384 	hdr = (struct hci_acl_hdr *)skb_transport_header(skb);
1385 	hdr->handle = cpu_to_le16(hci_handle_pack(handle, flags));
1386 	hdr->dlen   = cpu_to_le16(len);
1387 }
1388 
1389 void hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags)
1390 {
1391 	struct hci_dev *hdev = conn->hdev;
1392 	struct sk_buff *list;
1393 
1394 	BT_DBG("%s conn %p flags 0x%x", hdev->name, conn, flags);
1395 
1396 	skb->dev = (void *) hdev;
1397 	bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
1398 	hci_add_acl_hdr(skb, conn->handle, flags | ACL_START);
1399 
1400 	list = skb_shinfo(skb)->frag_list;
1401 	if (!list) {
1402 		/* Non fragmented */
1403 		BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
1404 
1405 		skb_queue_tail(&conn->data_q, skb);
1406 	} else {
1407 		/* Fragmented */
1408 		BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
1409 
1410 		skb_shinfo(skb)->frag_list = NULL;
1411 
1412 		/* Queue all fragments atomically */
1413 		spin_lock_bh(&conn->data_q.lock);
1414 
1415 		__skb_queue_tail(&conn->data_q, skb);
1416 		do {
1417 			skb = list; list = list->next;
1418 
1419 			skb->dev = (void *) hdev;
1420 			bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
1421 			hci_add_acl_hdr(skb, conn->handle, flags | ACL_CONT);
1422 
1423 			BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
1424 
1425 			__skb_queue_tail(&conn->data_q, skb);
1426 		} while (list);
1427 
1428 		spin_unlock_bh(&conn->data_q.lock);
1429 	}
1430 
1431 	tasklet_schedule(&hdev->tx_task);
1432 }
1433 EXPORT_SYMBOL(hci_send_acl);
1434 
1435 /* Send SCO data */
1436 void hci_send_sco(struct hci_conn *conn, struct sk_buff *skb)
1437 {
1438 	struct hci_dev *hdev = conn->hdev;
1439 	struct hci_sco_hdr hdr;
1440 
1441 	BT_DBG("%s len %d", hdev->name, skb->len);
1442 
1443 	hdr.handle = cpu_to_le16(conn->handle);
1444 	hdr.dlen   = skb->len;
1445 
1446 	skb_push(skb, HCI_SCO_HDR_SIZE);
1447 	skb_reset_transport_header(skb);
1448 	memcpy(skb_transport_header(skb), &hdr, HCI_SCO_HDR_SIZE);
1449 
1450 	skb->dev = (void *) hdev;
1451 	bt_cb(skb)->pkt_type = HCI_SCODATA_PKT;
1452 
1453 	skb_queue_tail(&conn->data_q, skb);
1454 	tasklet_schedule(&hdev->tx_task);
1455 }
1456 EXPORT_SYMBOL(hci_send_sco);
1457 
1458 /* ---- HCI TX task (outgoing data) ---- */
1459 
1460 /* HCI Connection scheduler */
1461 static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote)
1462 {
1463 	struct hci_conn_hash *h = &hdev->conn_hash;
1464 	struct hci_conn *conn = NULL;
1465 	int num = 0, min = ~0;
1466 	struct list_head *p;
1467 
1468 	/* We don't have to lock device here. Connections are always
1469 	 * added and removed with TX task disabled. */
1470 	list_for_each(p, &h->list) {
1471 		struct hci_conn *c;
1472 		c = list_entry(p, struct hci_conn, list);
1473 
1474 		if (c->type != type || skb_queue_empty(&c->data_q))
1475 			continue;
1476 
1477 		if (c->state != BT_CONNECTED && c->state != BT_CONFIG)
1478 			continue;
1479 
1480 		num++;
1481 
1482 		if (c->sent < min) {
1483 			min  = c->sent;
1484 			conn = c;
1485 		}
1486 	}
1487 
1488 	if (conn) {
1489 		int cnt = (type == ACL_LINK ? hdev->acl_cnt : hdev->sco_cnt);
1490 		int q = cnt / num;
1491 		*quote = q ? q : 1;
1492 	} else
1493 		*quote = 0;
1494 
1495 	BT_DBG("conn %p quote %d", conn, *quote);
1496 	return conn;
1497 }
1498 
1499 static inline void hci_acl_tx_to(struct hci_dev *hdev)
1500 {
1501 	struct hci_conn_hash *h = &hdev->conn_hash;
1502 	struct list_head *p;
1503 	struct hci_conn  *c;
1504 
1505 	BT_ERR("%s ACL tx timeout", hdev->name);
1506 
1507 	/* Kill stalled connections */
1508 	list_for_each(p, &h->list) {
1509 		c = list_entry(p, struct hci_conn, list);
1510 		if (c->type == ACL_LINK && c->sent) {
1511 			BT_ERR("%s killing stalled ACL connection %s",
1512 				hdev->name, batostr(&c->dst));
1513 			hci_acl_disconn(c, 0x13);
1514 		}
1515 	}
1516 }
1517 
1518 static inline void hci_sched_acl(struct hci_dev *hdev)
1519 {
1520 	struct hci_conn *conn;
1521 	struct sk_buff *skb;
1522 	int quote;
1523 
1524 	BT_DBG("%s", hdev->name);
1525 
1526 	if (!test_bit(HCI_RAW, &hdev->flags)) {
1527 		/* ACL tx timeout must be longer than maximum
1528 		 * link supervision timeout (40.9 seconds) */
1529 		if (!hdev->acl_cnt && time_after(jiffies, hdev->acl_last_tx + HZ * 45))
1530 			hci_acl_tx_to(hdev);
1531 	}
1532 
1533 	while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, &quote))) {
1534 		while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
1535 			BT_DBG("skb %p len %d", skb, skb->len);
1536 
1537 			hci_conn_enter_active_mode(conn);
1538 
1539 			hci_send_frame(skb);
1540 			hdev->acl_last_tx = jiffies;
1541 
1542 			hdev->acl_cnt--;
1543 			conn->sent++;
1544 		}
1545 	}
1546 }
1547 
1548 /* Schedule SCO */
1549 static inline void hci_sched_sco(struct hci_dev *hdev)
1550 {
1551 	struct hci_conn *conn;
1552 	struct sk_buff *skb;
1553 	int quote;
1554 
1555 	BT_DBG("%s", hdev->name);
1556 
1557 	while (hdev->sco_cnt && (conn = hci_low_sent(hdev, SCO_LINK, &quote))) {
1558 		while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
1559 			BT_DBG("skb %p len %d", skb, skb->len);
1560 			hci_send_frame(skb);
1561 
1562 			conn->sent++;
1563 			if (conn->sent == ~0)
1564 				conn->sent = 0;
1565 		}
1566 	}
1567 }
1568 
1569 static inline void hci_sched_esco(struct hci_dev *hdev)
1570 {
1571 	struct hci_conn *conn;
1572 	struct sk_buff *skb;
1573 	int quote;
1574 
1575 	BT_DBG("%s", hdev->name);
1576 
1577 	while (hdev->sco_cnt && (conn = hci_low_sent(hdev, ESCO_LINK, &quote))) {
1578 		while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
1579 			BT_DBG("skb %p len %d", skb, skb->len);
1580 			hci_send_frame(skb);
1581 
1582 			conn->sent++;
1583 			if (conn->sent == ~0)
1584 				conn->sent = 0;
1585 		}
1586 	}
1587 }
1588 
1589 static void hci_tx_task(unsigned long arg)
1590 {
1591 	struct hci_dev *hdev = (struct hci_dev *) arg;
1592 	struct sk_buff *skb;
1593 
1594 	read_lock(&hci_task_lock);
1595 
1596 	BT_DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt);
1597 
1598 	/* Schedule queues and send stuff to HCI driver */
1599 
1600 	hci_sched_acl(hdev);
1601 
1602 	hci_sched_sco(hdev);
1603 
1604 	hci_sched_esco(hdev);
1605 
1606 	/* Send next queued raw (unknown type) packet */
1607 	while ((skb = skb_dequeue(&hdev->raw_q)))
1608 		hci_send_frame(skb);
1609 
1610 	read_unlock(&hci_task_lock);
1611 }
1612 
1613 /* ----- HCI RX task (incoming data proccessing) ----- */
1614 
1615 /* ACL data packet */
1616 static inline void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb)
1617 {
1618 	struct hci_acl_hdr *hdr = (void *) skb->data;
1619 	struct hci_conn *conn;
1620 	__u16 handle, flags;
1621 
1622 	skb_pull(skb, HCI_ACL_HDR_SIZE);
1623 
1624 	handle = __le16_to_cpu(hdr->handle);
1625 	flags  = hci_flags(handle);
1626 	handle = hci_handle(handle);
1627 
1628 	BT_DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags);
1629 
1630 	hdev->stat.acl_rx++;
1631 
1632 	hci_dev_lock(hdev);
1633 	conn = hci_conn_hash_lookup_handle(hdev, handle);
1634 	hci_dev_unlock(hdev);
1635 
1636 	if (conn) {
1637 		register struct hci_proto *hp;
1638 
1639 		hci_conn_enter_active_mode(conn);
1640 
1641 		/* Send to upper protocol */
1642 		hp = hci_proto[HCI_PROTO_L2CAP];
1643 		if (hp && hp->recv_acldata) {
1644 			hp->recv_acldata(conn, skb, flags);
1645 			return;
1646 		}
1647 	} else {
1648 		BT_ERR("%s ACL packet for unknown connection handle %d",
1649 			hdev->name, handle);
1650 	}
1651 
1652 	kfree_skb(skb);
1653 }
1654 
1655 /* SCO data packet */
1656 static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
1657 {
1658 	struct hci_sco_hdr *hdr = (void *) skb->data;
1659 	struct hci_conn *conn;
1660 	__u16 handle;
1661 
1662 	skb_pull(skb, HCI_SCO_HDR_SIZE);
1663 
1664 	handle = __le16_to_cpu(hdr->handle);
1665 
1666 	BT_DBG("%s len %d handle 0x%x", hdev->name, skb->len, handle);
1667 
1668 	hdev->stat.sco_rx++;
1669 
1670 	hci_dev_lock(hdev);
1671 	conn = hci_conn_hash_lookup_handle(hdev, handle);
1672 	hci_dev_unlock(hdev);
1673 
1674 	if (conn) {
1675 		register struct hci_proto *hp;
1676 
1677 		/* Send to upper protocol */
1678 		hp = hci_proto[HCI_PROTO_SCO];
1679 		if (hp && hp->recv_scodata) {
1680 			hp->recv_scodata(conn, skb);
1681 			return;
1682 		}
1683 	} else {
1684 		BT_ERR("%s SCO packet for unknown connection handle %d",
1685 			hdev->name, handle);
1686 	}
1687 
1688 	kfree_skb(skb);
1689 }
1690 
1691 static void hci_rx_task(unsigned long arg)
1692 {
1693 	struct hci_dev *hdev = (struct hci_dev *) arg;
1694 	struct sk_buff *skb;
1695 
1696 	BT_DBG("%s", hdev->name);
1697 
1698 	read_lock(&hci_task_lock);
1699 
1700 	while ((skb = skb_dequeue(&hdev->rx_q))) {
1701 		if (atomic_read(&hdev->promisc)) {
1702 			/* Send copy to the sockets */
1703 			hci_send_to_sock(hdev, skb);
1704 		}
1705 
1706 		if (test_bit(HCI_RAW, &hdev->flags)) {
1707 			kfree_skb(skb);
1708 			continue;
1709 		}
1710 
1711 		if (test_bit(HCI_INIT, &hdev->flags)) {
1712 			/* Don't process data packets in this states. */
1713 			switch (bt_cb(skb)->pkt_type) {
1714 			case HCI_ACLDATA_PKT:
1715 			case HCI_SCODATA_PKT:
1716 				kfree_skb(skb);
1717 				continue;
1718 			}
1719 		}
1720 
1721 		/* Process frame */
1722 		switch (bt_cb(skb)->pkt_type) {
1723 		case HCI_EVENT_PKT:
1724 			hci_event_packet(hdev, skb);
1725 			break;
1726 
1727 		case HCI_ACLDATA_PKT:
1728 			BT_DBG("%s ACL data packet", hdev->name);
1729 			hci_acldata_packet(hdev, skb);
1730 			break;
1731 
1732 		case HCI_SCODATA_PKT:
1733 			BT_DBG("%s SCO data packet", hdev->name);
1734 			hci_scodata_packet(hdev, skb);
1735 			break;
1736 
1737 		default:
1738 			kfree_skb(skb);
1739 			break;
1740 		}
1741 	}
1742 
1743 	read_unlock(&hci_task_lock);
1744 }
1745 
1746 static void hci_cmd_task(unsigned long arg)
1747 {
1748 	struct hci_dev *hdev = (struct hci_dev *) arg;
1749 	struct sk_buff *skb;
1750 
1751 	BT_DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt));
1752 
1753 	if (!atomic_read(&hdev->cmd_cnt) && time_after(jiffies, hdev->cmd_last_tx + HZ)) {
1754 		BT_ERR("%s command tx timeout", hdev->name);
1755 		atomic_set(&hdev->cmd_cnt, 1);
1756 	}
1757 
1758 	/* Send queued commands */
1759 	if (atomic_read(&hdev->cmd_cnt) && (skb = skb_dequeue(&hdev->cmd_q))) {
1760 		kfree_skb(hdev->sent_cmd);
1761 
1762 		hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC);
1763 		if (hdev->sent_cmd) {
1764 			atomic_dec(&hdev->cmd_cnt);
1765 			hci_send_frame(skb);
1766 			hdev->cmd_last_tx = jiffies;
1767 		} else {
1768 			skb_queue_head(&hdev->cmd_q, skb);
1769 			tasklet_schedule(&hdev->cmd_task);
1770 		}
1771 	}
1772 }
1773