2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
4 Copyright (C) 2011 ProFUSION Embedded Systems
6 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
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;
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.
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.
26 /* Bluetooth HCI core. */
28 #include <linux/export.h>
29 #include <linux/idr.h>
31 #include <linux/rfkill.h>
33 #include <net/bluetooth/bluetooth.h>
34 #include <net/bluetooth/hci_core.h>
36 static void hci_rx_work(struct work_struct
*work
);
37 static void hci_cmd_work(struct work_struct
*work
);
38 static void hci_tx_work(struct work_struct
*work
);
41 LIST_HEAD(hci_dev_list
);
42 DEFINE_RWLOCK(hci_dev_list_lock
);
44 /* HCI callback list */
45 LIST_HEAD(hci_cb_list
);
46 DEFINE_RWLOCK(hci_cb_list_lock
);
48 /* HCI ID Numbering */
49 static DEFINE_IDA(hci_index_ida
);
51 /* ---- HCI notifications ---- */
53 static void hci_notify(struct hci_dev
*hdev
, int event
)
55 hci_sock_dev_event(hdev
, event
);
58 /* ---- HCI requests ---- */
60 void hci_req_complete(struct hci_dev
*hdev
, __u16 cmd
, int result
)
62 BT_DBG("%s command 0x%4.4x result 0x%2.2x", hdev
->name
, cmd
, result
);
64 /* If this is the init phase check if the completed command matches
65 * the last init command, and if not just return.
67 if (test_bit(HCI_INIT
, &hdev
->flags
) && hdev
->init_last_cmd
!= cmd
) {
68 struct hci_command_hdr
*sent
= (void *) hdev
->sent_cmd
->data
;
69 u16 opcode
= __le16_to_cpu(sent
->opcode
);
72 /* Some CSR based controllers generate a spontaneous
73 * reset complete event during init and any pending
74 * command will never be completed. In such a case we
75 * need to resend whatever was the last sent
79 if (cmd
!= HCI_OP_RESET
|| opcode
== HCI_OP_RESET
)
82 skb
= skb_clone(hdev
->sent_cmd
, GFP_ATOMIC
);
84 skb_queue_head(&hdev
->cmd_q
, skb
);
85 queue_work(hdev
->workqueue
, &hdev
->cmd_work
);
91 if (hdev
->req_status
== HCI_REQ_PEND
) {
92 hdev
->req_result
= result
;
93 hdev
->req_status
= HCI_REQ_DONE
;
94 wake_up_interruptible(&hdev
->req_wait_q
);
98 static void hci_req_cancel(struct hci_dev
*hdev
, int err
)
100 BT_DBG("%s err 0x%2.2x", hdev
->name
, err
);
102 if (hdev
->req_status
== HCI_REQ_PEND
) {
103 hdev
->req_result
= err
;
104 hdev
->req_status
= HCI_REQ_CANCELED
;
105 wake_up_interruptible(&hdev
->req_wait_q
);
109 /* Execute request and wait for completion. */
110 static int __hci_req_sync(struct hci_dev
*hdev
,
111 void (*req
)(struct hci_dev
*hdev
, unsigned long opt
),
112 unsigned long opt
, __u32 timeout
)
114 DECLARE_WAITQUEUE(wait
, current
);
117 BT_DBG("%s start", hdev
->name
);
119 hdev
->req_status
= HCI_REQ_PEND
;
121 add_wait_queue(&hdev
->req_wait_q
, &wait
);
122 set_current_state(TASK_INTERRUPTIBLE
);
125 schedule_timeout(timeout
);
127 remove_wait_queue(&hdev
->req_wait_q
, &wait
);
129 if (signal_pending(current
))
132 switch (hdev
->req_status
) {
134 err
= -bt_to_errno(hdev
->req_result
);
137 case HCI_REQ_CANCELED
:
138 err
= -hdev
->req_result
;
146 hdev
->req_status
= hdev
->req_result
= 0;
148 BT_DBG("%s end: err %d", hdev
->name
, err
);
153 static int hci_req_sync(struct hci_dev
*hdev
,
154 void (*req
)(struct hci_dev
*hdev
, unsigned long opt
),
155 unsigned long opt
, __u32 timeout
)
159 if (!test_bit(HCI_UP
, &hdev
->flags
))
162 /* Serialize all requests */
164 ret
= __hci_req_sync(hdev
, req
, opt
, timeout
);
165 hci_req_unlock(hdev
);
170 static void hci_reset_req(struct hci_dev
*hdev
, unsigned long opt
)
172 BT_DBG("%s %ld", hdev
->name
, opt
);
175 set_bit(HCI_RESET
, &hdev
->flags
);
176 hci_send_cmd(hdev
, HCI_OP_RESET
, 0, NULL
);
179 static void bredr_init(struct hci_dev
*hdev
)
181 hdev
->flow_ctl_mode
= HCI_FLOW_CTL_MODE_PACKET_BASED
;
183 /* Read Local Supported Features */
184 hci_send_cmd(hdev
, HCI_OP_READ_LOCAL_FEATURES
, 0, NULL
);
186 /* Read Local Version */
187 hci_send_cmd(hdev
, HCI_OP_READ_LOCAL_VERSION
, 0, NULL
);
190 static void amp_init(struct hci_dev
*hdev
)
192 hdev
->flow_ctl_mode
= HCI_FLOW_CTL_MODE_BLOCK_BASED
;
194 /* Read Local Version */
195 hci_send_cmd(hdev
, HCI_OP_READ_LOCAL_VERSION
, 0, NULL
);
197 /* Read Local AMP Info */
198 hci_send_cmd(hdev
, HCI_OP_READ_LOCAL_AMP_INFO
, 0, NULL
);
200 /* Read Data Blk size */
201 hci_send_cmd(hdev
, HCI_OP_READ_DATA_BLOCK_SIZE
, 0, NULL
);
204 static void hci_init_req(struct hci_dev
*hdev
, unsigned long opt
)
208 BT_DBG("%s %ld", hdev
->name
, opt
);
210 /* Driver initialization */
212 /* Special commands */
213 while ((skb
= skb_dequeue(&hdev
->driver_init
))) {
214 bt_cb(skb
)->pkt_type
= HCI_COMMAND_PKT
;
215 skb
->dev
= (void *) hdev
;
217 skb_queue_tail(&hdev
->cmd_q
, skb
);
218 queue_work(hdev
->workqueue
, &hdev
->cmd_work
);
220 skb_queue_purge(&hdev
->driver_init
);
223 if (!test_bit(HCI_QUIRK_RESET_ON_CLOSE
, &hdev
->quirks
))
224 hci_reset_req(hdev
, 0);
226 switch (hdev
->dev_type
) {
236 BT_ERR("Unknown device type %d", hdev
->dev_type
);
241 static void hci_scan_req(struct hci_dev
*hdev
, unsigned long opt
)
245 BT_DBG("%s %x", hdev
->name
, scan
);
247 /* Inquiry and Page scans */
248 hci_send_cmd(hdev
, HCI_OP_WRITE_SCAN_ENABLE
, 1, &scan
);
251 static void hci_auth_req(struct hci_dev
*hdev
, unsigned long opt
)
255 BT_DBG("%s %x", hdev
->name
, auth
);
258 hci_send_cmd(hdev
, HCI_OP_WRITE_AUTH_ENABLE
, 1, &auth
);
261 static void hci_encrypt_req(struct hci_dev
*hdev
, unsigned long opt
)
265 BT_DBG("%s %x", hdev
->name
, encrypt
);
268 hci_send_cmd(hdev
, HCI_OP_WRITE_ENCRYPT_MODE
, 1, &encrypt
);
271 static void hci_linkpol_req(struct hci_dev
*hdev
, unsigned long opt
)
273 __le16 policy
= cpu_to_le16(opt
);
275 BT_DBG("%s %x", hdev
->name
, policy
);
277 /* Default link policy */
278 hci_send_cmd(hdev
, HCI_OP_WRITE_DEF_LINK_POLICY
, 2, &policy
);
281 /* Get HCI device by index.
282 * Device is held on return. */
283 struct hci_dev
*hci_dev_get(int index
)
285 struct hci_dev
*hdev
= NULL
, *d
;
292 read_lock(&hci_dev_list_lock
);
293 list_for_each_entry(d
, &hci_dev_list
, list
) {
294 if (d
->id
== index
) {
295 hdev
= hci_dev_hold(d
);
299 read_unlock(&hci_dev_list_lock
);
303 /* ---- Inquiry support ---- */
305 bool hci_discovery_active(struct hci_dev
*hdev
)
307 struct discovery_state
*discov
= &hdev
->discovery
;
309 switch (discov
->state
) {
310 case DISCOVERY_FINDING
:
311 case DISCOVERY_RESOLVING
:
319 void hci_discovery_set_state(struct hci_dev
*hdev
, int state
)
321 BT_DBG("%s state %u -> %u", hdev
->name
, hdev
->discovery
.state
, state
);
323 if (hdev
->discovery
.state
== state
)
327 case DISCOVERY_STOPPED
:
328 if (hdev
->discovery
.state
!= DISCOVERY_STARTING
)
329 mgmt_discovering(hdev
, 0);
331 case DISCOVERY_STARTING
:
333 case DISCOVERY_FINDING
:
334 mgmt_discovering(hdev
, 1);
336 case DISCOVERY_RESOLVING
:
338 case DISCOVERY_STOPPING
:
342 hdev
->discovery
.state
= state
;
345 static void inquiry_cache_flush(struct hci_dev
*hdev
)
347 struct discovery_state
*cache
= &hdev
->discovery
;
348 struct inquiry_entry
*p
, *n
;
350 list_for_each_entry_safe(p
, n
, &cache
->all
, all
) {
355 INIT_LIST_HEAD(&cache
->unknown
);
356 INIT_LIST_HEAD(&cache
->resolve
);
359 struct inquiry_entry
*hci_inquiry_cache_lookup(struct hci_dev
*hdev
,
362 struct discovery_state
*cache
= &hdev
->discovery
;
363 struct inquiry_entry
*e
;
365 BT_DBG("cache %p, %pMR", cache
, bdaddr
);
367 list_for_each_entry(e
, &cache
->all
, all
) {
368 if (!bacmp(&e
->data
.bdaddr
, bdaddr
))
375 struct inquiry_entry
*hci_inquiry_cache_lookup_unknown(struct hci_dev
*hdev
,
378 struct discovery_state
*cache
= &hdev
->discovery
;
379 struct inquiry_entry
*e
;
381 BT_DBG("cache %p, %pMR", cache
, bdaddr
);
383 list_for_each_entry(e
, &cache
->unknown
, list
) {
384 if (!bacmp(&e
->data
.bdaddr
, bdaddr
))
391 struct inquiry_entry
*hci_inquiry_cache_lookup_resolve(struct hci_dev
*hdev
,
395 struct discovery_state
*cache
= &hdev
->discovery
;
396 struct inquiry_entry
*e
;
398 BT_DBG("cache %p bdaddr %pMR state %d", cache
, bdaddr
, state
);
400 list_for_each_entry(e
, &cache
->resolve
, list
) {
401 if (!bacmp(bdaddr
, BDADDR_ANY
) && e
->name_state
== state
)
403 if (!bacmp(&e
->data
.bdaddr
, bdaddr
))
410 void hci_inquiry_cache_update_resolve(struct hci_dev
*hdev
,
411 struct inquiry_entry
*ie
)
413 struct discovery_state
*cache
= &hdev
->discovery
;
414 struct list_head
*pos
= &cache
->resolve
;
415 struct inquiry_entry
*p
;
419 list_for_each_entry(p
, &cache
->resolve
, list
) {
420 if (p
->name_state
!= NAME_PENDING
&&
421 abs(p
->data
.rssi
) >= abs(ie
->data
.rssi
))
426 list_add(&ie
->list
, pos
);
429 bool hci_inquiry_cache_update(struct hci_dev
*hdev
, struct inquiry_data
*data
,
430 bool name_known
, bool *ssp
)
432 struct discovery_state
*cache
= &hdev
->discovery
;
433 struct inquiry_entry
*ie
;
435 BT_DBG("cache %p, %pMR", cache
, &data
->bdaddr
);
437 hci_remove_remote_oob_data(hdev
, &data
->bdaddr
);
440 *ssp
= data
->ssp_mode
;
442 ie
= hci_inquiry_cache_lookup(hdev
, &data
->bdaddr
);
444 if (ie
->data
.ssp_mode
&& ssp
)
447 if (ie
->name_state
== NAME_NEEDED
&&
448 data
->rssi
!= ie
->data
.rssi
) {
449 ie
->data
.rssi
= data
->rssi
;
450 hci_inquiry_cache_update_resolve(hdev
, ie
);
456 /* Entry not in the cache. Add new one. */
457 ie
= kzalloc(sizeof(struct inquiry_entry
), GFP_ATOMIC
);
461 list_add(&ie
->all
, &cache
->all
);
464 ie
->name_state
= NAME_KNOWN
;
466 ie
->name_state
= NAME_NOT_KNOWN
;
467 list_add(&ie
->list
, &cache
->unknown
);
471 if (name_known
&& ie
->name_state
!= NAME_KNOWN
&&
472 ie
->name_state
!= NAME_PENDING
) {
473 ie
->name_state
= NAME_KNOWN
;
477 memcpy(&ie
->data
, data
, sizeof(*data
));
478 ie
->timestamp
= jiffies
;
479 cache
->timestamp
= jiffies
;
481 if (ie
->name_state
== NAME_NOT_KNOWN
)
487 static int inquiry_cache_dump(struct hci_dev
*hdev
, int num
, __u8
*buf
)
489 struct discovery_state
*cache
= &hdev
->discovery
;
490 struct inquiry_info
*info
= (struct inquiry_info
*) buf
;
491 struct inquiry_entry
*e
;
494 list_for_each_entry(e
, &cache
->all
, all
) {
495 struct inquiry_data
*data
= &e
->data
;
500 bacpy(&info
->bdaddr
, &data
->bdaddr
);
501 info
->pscan_rep_mode
= data
->pscan_rep_mode
;
502 info
->pscan_period_mode
= data
->pscan_period_mode
;
503 info
->pscan_mode
= data
->pscan_mode
;
504 memcpy(info
->dev_class
, data
->dev_class
, 3);
505 info
->clock_offset
= data
->clock_offset
;
511 BT_DBG("cache %p, copied %d", cache
, copied
);
515 static void hci_inq_req(struct hci_dev
*hdev
, unsigned long opt
)
517 struct hci_inquiry_req
*ir
= (struct hci_inquiry_req
*) opt
;
518 struct hci_cp_inquiry cp
;
520 BT_DBG("%s", hdev
->name
);
522 if (test_bit(HCI_INQUIRY
, &hdev
->flags
))
526 memcpy(&cp
.lap
, &ir
->lap
, 3);
527 cp
.length
= ir
->length
;
528 cp
.num_rsp
= ir
->num_rsp
;
529 hci_send_cmd(hdev
, HCI_OP_INQUIRY
, sizeof(cp
), &cp
);
532 int hci_inquiry(void __user
*arg
)
534 __u8 __user
*ptr
= arg
;
535 struct hci_inquiry_req ir
;
536 struct hci_dev
*hdev
;
537 int err
= 0, do_inquiry
= 0, max_rsp
;
541 if (copy_from_user(&ir
, ptr
, sizeof(ir
)))
544 hdev
= hci_dev_get(ir
.dev_id
);
549 if (inquiry_cache_age(hdev
) > INQUIRY_CACHE_AGE_MAX
||
550 inquiry_cache_empty(hdev
) || ir
.flags
& IREQ_CACHE_FLUSH
) {
551 inquiry_cache_flush(hdev
);
554 hci_dev_unlock(hdev
);
556 timeo
= ir
.length
* msecs_to_jiffies(2000);
559 err
= hci_req_sync(hdev
, hci_inq_req
, (unsigned long) &ir
,
565 /* for unlimited number of responses we will use buffer with
568 max_rsp
= (ir
.num_rsp
== 0) ? 255 : ir
.num_rsp
;
570 /* cache_dump can't sleep. Therefore we allocate temp buffer and then
571 * copy it to the user space.
573 buf
= kmalloc(sizeof(struct inquiry_info
) * max_rsp
, GFP_KERNEL
);
580 ir
.num_rsp
= inquiry_cache_dump(hdev
, max_rsp
, buf
);
581 hci_dev_unlock(hdev
);
583 BT_DBG("num_rsp %d", ir
.num_rsp
);
585 if (!copy_to_user(ptr
, &ir
, sizeof(ir
))) {
587 if (copy_to_user(ptr
, buf
, sizeof(struct inquiry_info
) *
600 static u8
create_ad(struct hci_dev
*hdev
, u8
*ptr
)
602 u8 ad_len
= 0, flags
= 0;
605 if (test_bit(HCI_LE_PERIPHERAL
, &hdev
->dev_flags
))
606 flags
|= LE_AD_GENERAL
;
608 if (!lmp_bredr_capable(hdev
))
609 flags
|= LE_AD_NO_BREDR
;
611 if (lmp_le_br_capable(hdev
))
612 flags
|= LE_AD_SIM_LE_BREDR_CTRL
;
614 if (lmp_host_le_br_capable(hdev
))
615 flags
|= LE_AD_SIM_LE_BREDR_HOST
;
618 BT_DBG("adv flags 0x%02x", flags
);
628 if (hdev
->adv_tx_power
!= HCI_TX_POWER_INVALID
) {
630 ptr
[1] = EIR_TX_POWER
;
631 ptr
[2] = (u8
) hdev
->adv_tx_power
;
637 name_len
= strlen(hdev
->dev_name
);
639 size_t max_len
= HCI_MAX_AD_LENGTH
- ad_len
- 2;
641 if (name_len
> max_len
) {
643 ptr
[1] = EIR_NAME_SHORT
;
645 ptr
[1] = EIR_NAME_COMPLETE
;
647 ptr
[0] = name_len
+ 1;
649 memcpy(ptr
+ 2, hdev
->dev_name
, name_len
);
651 ad_len
+= (name_len
+ 2);
652 ptr
+= (name_len
+ 2);
658 int hci_update_ad(struct hci_dev
*hdev
)
660 struct hci_cp_le_set_adv_data cp
;
666 if (!lmp_le_capable(hdev
)) {
671 memset(&cp
, 0, sizeof(cp
));
673 len
= create_ad(hdev
, cp
.data
);
675 if (hdev
->adv_data_len
== len
&&
676 memcmp(cp
.data
, hdev
->adv_data
, len
) == 0) {
681 memcpy(hdev
->adv_data
, cp
.data
, sizeof(cp
.data
));
682 hdev
->adv_data_len
= len
;
685 err
= hci_send_cmd(hdev
, HCI_OP_LE_SET_ADV_DATA
, sizeof(cp
), &cp
);
688 hci_dev_unlock(hdev
);
693 /* ---- HCI ioctl helpers ---- */
695 int hci_dev_open(__u16 dev
)
697 struct hci_dev
*hdev
;
700 hdev
= hci_dev_get(dev
);
704 BT_DBG("%s %p", hdev
->name
, hdev
);
708 if (test_bit(HCI_UNREGISTER
, &hdev
->dev_flags
)) {
713 if (hdev
->rfkill
&& rfkill_blocked(hdev
->rfkill
)) {
718 if (test_bit(HCI_UP
, &hdev
->flags
)) {
723 if (test_bit(HCI_QUIRK_RAW_DEVICE
, &hdev
->quirks
))
724 set_bit(HCI_RAW
, &hdev
->flags
);
726 /* Treat all non BR/EDR controllers as raw devices if
727 enable_hs is not set */
728 if (hdev
->dev_type
!= HCI_BREDR
&& !enable_hs
)
729 set_bit(HCI_RAW
, &hdev
->flags
);
731 if (hdev
->open(hdev
)) {
736 if (!test_bit(HCI_RAW
, &hdev
->flags
)) {
737 atomic_set(&hdev
->cmd_cnt
, 1);
738 set_bit(HCI_INIT
, &hdev
->flags
);
739 hdev
->init_last_cmd
= 0;
741 ret
= __hci_req_sync(hdev
, hci_init_req
, 0, HCI_INIT_TIMEOUT
);
743 clear_bit(HCI_INIT
, &hdev
->flags
);
748 set_bit(HCI_UP
, &hdev
->flags
);
749 hci_notify(hdev
, HCI_DEV_UP
);
751 if (!test_bit(HCI_SETUP
, &hdev
->dev_flags
) &&
752 mgmt_valid_hdev(hdev
)) {
754 mgmt_powered(hdev
, 1);
755 hci_dev_unlock(hdev
);
758 /* Init failed, cleanup */
759 flush_work(&hdev
->tx_work
);
760 flush_work(&hdev
->cmd_work
);
761 flush_work(&hdev
->rx_work
);
763 skb_queue_purge(&hdev
->cmd_q
);
764 skb_queue_purge(&hdev
->rx_q
);
769 if (hdev
->sent_cmd
) {
770 kfree_skb(hdev
->sent_cmd
);
771 hdev
->sent_cmd
= NULL
;
779 hci_req_unlock(hdev
);
784 static int hci_dev_do_close(struct hci_dev
*hdev
)
786 BT_DBG("%s %p", hdev
->name
, hdev
);
788 cancel_work_sync(&hdev
->le_scan
);
790 cancel_delayed_work(&hdev
->power_off
);
792 hci_req_cancel(hdev
, ENODEV
);
795 if (!test_and_clear_bit(HCI_UP
, &hdev
->flags
)) {
796 del_timer_sync(&hdev
->cmd_timer
);
797 hci_req_unlock(hdev
);
801 /* Flush RX and TX works */
802 flush_work(&hdev
->tx_work
);
803 flush_work(&hdev
->rx_work
);
805 if (hdev
->discov_timeout
> 0) {
806 cancel_delayed_work(&hdev
->discov_off
);
807 hdev
->discov_timeout
= 0;
808 clear_bit(HCI_DISCOVERABLE
, &hdev
->dev_flags
);
811 if (test_and_clear_bit(HCI_SERVICE_CACHE
, &hdev
->dev_flags
))
812 cancel_delayed_work(&hdev
->service_cache
);
814 cancel_delayed_work_sync(&hdev
->le_scan_disable
);
817 inquiry_cache_flush(hdev
);
818 hci_conn_hash_flush(hdev
);
819 hci_dev_unlock(hdev
);
821 hci_notify(hdev
, HCI_DEV_DOWN
);
827 skb_queue_purge(&hdev
->cmd_q
);
828 atomic_set(&hdev
->cmd_cnt
, 1);
829 if (!test_bit(HCI_RAW
, &hdev
->flags
) &&
830 test_bit(HCI_QUIRK_RESET_ON_CLOSE
, &hdev
->quirks
)) {
831 set_bit(HCI_INIT
, &hdev
->flags
);
832 __hci_req_sync(hdev
, hci_reset_req
, 0, HCI_CMD_TIMEOUT
);
833 clear_bit(HCI_INIT
, &hdev
->flags
);
837 flush_work(&hdev
->cmd_work
);
840 skb_queue_purge(&hdev
->rx_q
);
841 skb_queue_purge(&hdev
->cmd_q
);
842 skb_queue_purge(&hdev
->raw_q
);
844 /* Drop last sent command */
845 if (hdev
->sent_cmd
) {
846 del_timer_sync(&hdev
->cmd_timer
);
847 kfree_skb(hdev
->sent_cmd
);
848 hdev
->sent_cmd
= NULL
;
851 /* After this point our queues are empty
852 * and no tasks are scheduled. */
855 if (!test_and_clear_bit(HCI_AUTO_OFF
, &hdev
->dev_flags
) &&
856 mgmt_valid_hdev(hdev
)) {
858 mgmt_powered(hdev
, 0);
859 hci_dev_unlock(hdev
);
865 /* Controller radio is available but is currently powered down */
866 hdev
->amp_status
= 0;
868 memset(hdev
->eir
, 0, sizeof(hdev
->eir
));
869 memset(hdev
->dev_class
, 0, sizeof(hdev
->dev_class
));
871 hci_req_unlock(hdev
);
877 int hci_dev_close(__u16 dev
)
879 struct hci_dev
*hdev
;
882 hdev
= hci_dev_get(dev
);
886 if (test_and_clear_bit(HCI_AUTO_OFF
, &hdev
->dev_flags
))
887 cancel_delayed_work(&hdev
->power_off
);
889 err
= hci_dev_do_close(hdev
);
895 int hci_dev_reset(__u16 dev
)
897 struct hci_dev
*hdev
;
900 hdev
= hci_dev_get(dev
);
906 if (!test_bit(HCI_UP
, &hdev
->flags
))
910 skb_queue_purge(&hdev
->rx_q
);
911 skb_queue_purge(&hdev
->cmd_q
);
914 inquiry_cache_flush(hdev
);
915 hci_conn_hash_flush(hdev
);
916 hci_dev_unlock(hdev
);
921 atomic_set(&hdev
->cmd_cnt
, 1);
922 hdev
->acl_cnt
= 0; hdev
->sco_cnt
= 0; hdev
->le_cnt
= 0;
924 if (!test_bit(HCI_RAW
, &hdev
->flags
))
925 ret
= __hci_req_sync(hdev
, hci_reset_req
, 0, HCI_INIT_TIMEOUT
);
928 hci_req_unlock(hdev
);
933 int hci_dev_reset_stat(__u16 dev
)
935 struct hci_dev
*hdev
;
938 hdev
= hci_dev_get(dev
);
942 memset(&hdev
->stat
, 0, sizeof(struct hci_dev_stats
));
949 int hci_dev_cmd(unsigned int cmd
, void __user
*arg
)
951 struct hci_dev
*hdev
;
952 struct hci_dev_req dr
;
955 if (copy_from_user(&dr
, arg
, sizeof(dr
)))
958 hdev
= hci_dev_get(dr
.dev_id
);
964 err
= hci_req_sync(hdev
, hci_auth_req
, dr
.dev_opt
,
969 if (!lmp_encrypt_capable(hdev
)) {
974 if (!test_bit(HCI_AUTH
, &hdev
->flags
)) {
975 /* Auth must be enabled first */
976 err
= hci_req_sync(hdev
, hci_auth_req
, dr
.dev_opt
,
982 err
= hci_req_sync(hdev
, hci_encrypt_req
, dr
.dev_opt
,
987 err
= hci_req_sync(hdev
, hci_scan_req
, dr
.dev_opt
,
992 err
= hci_req_sync(hdev
, hci_linkpol_req
, dr
.dev_opt
,
997 hdev
->link_mode
= ((__u16
) dr
.dev_opt
) &
998 (HCI_LM_MASTER
| HCI_LM_ACCEPT
);
1002 hdev
->pkt_type
= (__u16
) dr
.dev_opt
;
1006 hdev
->acl_mtu
= *((__u16
*) &dr
.dev_opt
+ 1);
1007 hdev
->acl_pkts
= *((__u16
*) &dr
.dev_opt
+ 0);
1011 hdev
->sco_mtu
= *((__u16
*) &dr
.dev_opt
+ 1);
1012 hdev
->sco_pkts
= *((__u16
*) &dr
.dev_opt
+ 0);
1024 int hci_get_dev_list(void __user
*arg
)
1026 struct hci_dev
*hdev
;
1027 struct hci_dev_list_req
*dl
;
1028 struct hci_dev_req
*dr
;
1029 int n
= 0, size
, err
;
1032 if (get_user(dev_num
, (__u16 __user
*) arg
))
1035 if (!dev_num
|| dev_num
> (PAGE_SIZE
* 2) / sizeof(*dr
))
1038 size
= sizeof(*dl
) + dev_num
* sizeof(*dr
);
1040 dl
= kzalloc(size
, GFP_KERNEL
);
1046 read_lock(&hci_dev_list_lock
);
1047 list_for_each_entry(hdev
, &hci_dev_list
, list
) {
1048 if (test_and_clear_bit(HCI_AUTO_OFF
, &hdev
->dev_flags
))
1049 cancel_delayed_work(&hdev
->power_off
);
1051 if (!test_bit(HCI_MGMT
, &hdev
->dev_flags
))
1052 set_bit(HCI_PAIRABLE
, &hdev
->dev_flags
);
1054 (dr
+ n
)->dev_id
= hdev
->id
;
1055 (dr
+ n
)->dev_opt
= hdev
->flags
;
1060 read_unlock(&hci_dev_list_lock
);
1063 size
= sizeof(*dl
) + n
* sizeof(*dr
);
1065 err
= copy_to_user(arg
, dl
, size
);
1068 return err
? -EFAULT
: 0;
1071 int hci_get_dev_info(void __user
*arg
)
1073 struct hci_dev
*hdev
;
1074 struct hci_dev_info di
;
1077 if (copy_from_user(&di
, arg
, sizeof(di
)))
1080 hdev
= hci_dev_get(di
.dev_id
);
1084 if (test_and_clear_bit(HCI_AUTO_OFF
, &hdev
->dev_flags
))
1085 cancel_delayed_work_sync(&hdev
->power_off
);
1087 if (!test_bit(HCI_MGMT
, &hdev
->dev_flags
))
1088 set_bit(HCI_PAIRABLE
, &hdev
->dev_flags
);
1090 strcpy(di
.name
, hdev
->name
);
1091 di
.bdaddr
= hdev
->bdaddr
;
1092 di
.type
= (hdev
->bus
& 0x0f) | (hdev
->dev_type
<< 4);
1093 di
.flags
= hdev
->flags
;
1094 di
.pkt_type
= hdev
->pkt_type
;
1095 if (lmp_bredr_capable(hdev
)) {
1096 di
.acl_mtu
= hdev
->acl_mtu
;
1097 di
.acl_pkts
= hdev
->acl_pkts
;
1098 di
.sco_mtu
= hdev
->sco_mtu
;
1099 di
.sco_pkts
= hdev
->sco_pkts
;
1101 di
.acl_mtu
= hdev
->le_mtu
;
1102 di
.acl_pkts
= hdev
->le_pkts
;
1106 di
.link_policy
= hdev
->link_policy
;
1107 di
.link_mode
= hdev
->link_mode
;
1109 memcpy(&di
.stat
, &hdev
->stat
, sizeof(di
.stat
));
1110 memcpy(&di
.features
, &hdev
->features
, sizeof(di
.features
));
1112 if (copy_to_user(arg
, &di
, sizeof(di
)))
1120 /* ---- Interface to HCI drivers ---- */
1122 static int hci_rfkill_set_block(void *data
, bool blocked
)
1124 struct hci_dev
*hdev
= data
;
1126 BT_DBG("%p name %s blocked %d", hdev
, hdev
->name
, blocked
);
1131 hci_dev_do_close(hdev
);
1136 static const struct rfkill_ops hci_rfkill_ops
= {
1137 .set_block
= hci_rfkill_set_block
,
1140 static void hci_power_on(struct work_struct
*work
)
1142 struct hci_dev
*hdev
= container_of(work
, struct hci_dev
, power_on
);
1144 BT_DBG("%s", hdev
->name
);
1146 if (hci_dev_open(hdev
->id
) < 0)
1149 if (test_bit(HCI_AUTO_OFF
, &hdev
->dev_flags
))
1150 queue_delayed_work(hdev
->req_workqueue
, &hdev
->power_off
,
1151 HCI_AUTO_OFF_TIMEOUT
);
1153 if (test_and_clear_bit(HCI_SETUP
, &hdev
->dev_flags
))
1154 mgmt_index_added(hdev
);
1157 static void hci_power_off(struct work_struct
*work
)
1159 struct hci_dev
*hdev
= container_of(work
, struct hci_dev
,
1162 BT_DBG("%s", hdev
->name
);
1164 hci_dev_do_close(hdev
);
1167 static void hci_discov_off(struct work_struct
*work
)
1169 struct hci_dev
*hdev
;
1170 u8 scan
= SCAN_PAGE
;
1172 hdev
= container_of(work
, struct hci_dev
, discov_off
.work
);
1174 BT_DBG("%s", hdev
->name
);
1178 hci_send_cmd(hdev
, HCI_OP_WRITE_SCAN_ENABLE
, sizeof(scan
), &scan
);
1180 hdev
->discov_timeout
= 0;
1182 hci_dev_unlock(hdev
);
1185 int hci_uuids_clear(struct hci_dev
*hdev
)
1187 struct bt_uuid
*uuid
, *tmp
;
1189 list_for_each_entry_safe(uuid
, tmp
, &hdev
->uuids
, list
) {
1190 list_del(&uuid
->list
);
1197 int hci_link_keys_clear(struct hci_dev
*hdev
)
1199 struct list_head
*p
, *n
;
1201 list_for_each_safe(p
, n
, &hdev
->link_keys
) {
1202 struct link_key
*key
;
1204 key
= list_entry(p
, struct link_key
, list
);
1213 int hci_smp_ltks_clear(struct hci_dev
*hdev
)
1215 struct smp_ltk
*k
, *tmp
;
1217 list_for_each_entry_safe(k
, tmp
, &hdev
->long_term_keys
, list
) {
1225 struct link_key
*hci_find_link_key(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
)
1229 list_for_each_entry(k
, &hdev
->link_keys
, list
)
1230 if (bacmp(bdaddr
, &k
->bdaddr
) == 0)
1236 static bool hci_persistent_key(struct hci_dev
*hdev
, struct hci_conn
*conn
,
1237 u8 key_type
, u8 old_key_type
)
1240 if (key_type
< 0x03)
1243 /* Debug keys are insecure so don't store them persistently */
1244 if (key_type
== HCI_LK_DEBUG_COMBINATION
)
1247 /* Changed combination key and there's no previous one */
1248 if (key_type
== HCI_LK_CHANGED_COMBINATION
&& old_key_type
== 0xff)
1251 /* Security mode 3 case */
1255 /* Neither local nor remote side had no-bonding as requirement */
1256 if (conn
->auth_type
> 0x01 && conn
->remote_auth
> 0x01)
1259 /* Local side had dedicated bonding as requirement */
1260 if (conn
->auth_type
== 0x02 || conn
->auth_type
== 0x03)
1263 /* Remote side had dedicated bonding as requirement */
1264 if (conn
->remote_auth
== 0x02 || conn
->remote_auth
== 0x03)
1267 /* If none of the above criteria match, then don't store the key
1272 struct smp_ltk
*hci_find_ltk(struct hci_dev
*hdev
, __le16 ediv
, u8 rand
[8])
1276 list_for_each_entry(k
, &hdev
->long_term_keys
, list
) {
1277 if (k
->ediv
!= ediv
||
1278 memcmp(rand
, k
->rand
, sizeof(k
->rand
)))
1287 struct smp_ltk
*hci_find_ltk_by_addr(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
,
1292 list_for_each_entry(k
, &hdev
->long_term_keys
, list
)
1293 if (addr_type
== k
->bdaddr_type
&&
1294 bacmp(bdaddr
, &k
->bdaddr
) == 0)
1300 int hci_add_link_key(struct hci_dev
*hdev
, struct hci_conn
*conn
, int new_key
,
1301 bdaddr_t
*bdaddr
, u8
*val
, u8 type
, u8 pin_len
)
1303 struct link_key
*key
, *old_key
;
1307 old_key
= hci_find_link_key(hdev
, bdaddr
);
1309 old_key_type
= old_key
->type
;
1312 old_key_type
= conn
? conn
->key_type
: 0xff;
1313 key
= kzalloc(sizeof(*key
), GFP_ATOMIC
);
1316 list_add(&key
->list
, &hdev
->link_keys
);
1319 BT_DBG("%s key for %pMR type %u", hdev
->name
, bdaddr
, type
);
1321 /* Some buggy controller combinations generate a changed
1322 * combination key for legacy pairing even when there's no
1324 if (type
== HCI_LK_CHANGED_COMBINATION
&&
1325 (!conn
|| conn
->remote_auth
== 0xff) && old_key_type
== 0xff) {
1326 type
= HCI_LK_COMBINATION
;
1328 conn
->key_type
= type
;
1331 bacpy(&key
->bdaddr
, bdaddr
);
1332 memcpy(key
->val
, val
, HCI_LINK_KEY_SIZE
);
1333 key
->pin_len
= pin_len
;
1335 if (type
== HCI_LK_CHANGED_COMBINATION
)
1336 key
->type
= old_key_type
;
1343 persistent
= hci_persistent_key(hdev
, conn
, type
, old_key_type
);
1345 mgmt_new_link_key(hdev
, key
, persistent
);
1348 conn
->flush_key
= !persistent
;
1353 int hci_add_ltk(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
, u8 addr_type
, u8 type
,
1354 int new_key
, u8 authenticated
, u8 tk
[16], u8 enc_size
, __le16
1357 struct smp_ltk
*key
, *old_key
;
1359 if (!(type
& HCI_SMP_STK
) && !(type
& HCI_SMP_LTK
))
1362 old_key
= hci_find_ltk_by_addr(hdev
, bdaddr
, addr_type
);
1366 key
= kzalloc(sizeof(*key
), GFP_ATOMIC
);
1369 list_add(&key
->list
, &hdev
->long_term_keys
);
1372 bacpy(&key
->bdaddr
, bdaddr
);
1373 key
->bdaddr_type
= addr_type
;
1374 memcpy(key
->val
, tk
, sizeof(key
->val
));
1375 key
->authenticated
= authenticated
;
1377 key
->enc_size
= enc_size
;
1379 memcpy(key
->rand
, rand
, sizeof(key
->rand
));
1384 if (type
& HCI_SMP_LTK
)
1385 mgmt_new_ltk(hdev
, key
, 1);
1390 int hci_remove_link_key(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
)
1392 struct link_key
*key
;
1394 key
= hci_find_link_key(hdev
, bdaddr
);
1398 BT_DBG("%s removing %pMR", hdev
->name
, bdaddr
);
1400 list_del(&key
->list
);
1406 int hci_remove_ltk(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
)
1408 struct smp_ltk
*k
, *tmp
;
1410 list_for_each_entry_safe(k
, tmp
, &hdev
->long_term_keys
, list
) {
1411 if (bacmp(bdaddr
, &k
->bdaddr
))
1414 BT_DBG("%s removing %pMR", hdev
->name
, bdaddr
);
1423 /* HCI command timer function */
1424 static void hci_cmd_timeout(unsigned long arg
)
1426 struct hci_dev
*hdev
= (void *) arg
;
1428 if (hdev
->sent_cmd
) {
1429 struct hci_command_hdr
*sent
= (void *) hdev
->sent_cmd
->data
;
1430 u16 opcode
= __le16_to_cpu(sent
->opcode
);
1432 BT_ERR("%s command 0x%4.4x tx timeout", hdev
->name
, opcode
);
1434 BT_ERR("%s command tx timeout", hdev
->name
);
1437 atomic_set(&hdev
->cmd_cnt
, 1);
1438 queue_work(hdev
->workqueue
, &hdev
->cmd_work
);
1441 struct oob_data
*hci_find_remote_oob_data(struct hci_dev
*hdev
,
1444 struct oob_data
*data
;
1446 list_for_each_entry(data
, &hdev
->remote_oob_data
, list
)
1447 if (bacmp(bdaddr
, &data
->bdaddr
) == 0)
1453 int hci_remove_remote_oob_data(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
)
1455 struct oob_data
*data
;
1457 data
= hci_find_remote_oob_data(hdev
, bdaddr
);
1461 BT_DBG("%s removing %pMR", hdev
->name
, bdaddr
);
1463 list_del(&data
->list
);
1469 int hci_remote_oob_data_clear(struct hci_dev
*hdev
)
1471 struct oob_data
*data
, *n
;
1473 list_for_each_entry_safe(data
, n
, &hdev
->remote_oob_data
, list
) {
1474 list_del(&data
->list
);
1481 int hci_add_remote_oob_data(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
, u8
*hash
,
1484 struct oob_data
*data
;
1486 data
= hci_find_remote_oob_data(hdev
, bdaddr
);
1489 data
= kmalloc(sizeof(*data
), GFP_ATOMIC
);
1493 bacpy(&data
->bdaddr
, bdaddr
);
1494 list_add(&data
->list
, &hdev
->remote_oob_data
);
1497 memcpy(data
->hash
, hash
, sizeof(data
->hash
));
1498 memcpy(data
->randomizer
, randomizer
, sizeof(data
->randomizer
));
1500 BT_DBG("%s for %pMR", hdev
->name
, bdaddr
);
1505 struct bdaddr_list
*hci_blacklist_lookup(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
)
1507 struct bdaddr_list
*b
;
1509 list_for_each_entry(b
, &hdev
->blacklist
, list
)
1510 if (bacmp(bdaddr
, &b
->bdaddr
) == 0)
1516 int hci_blacklist_clear(struct hci_dev
*hdev
)
1518 struct list_head
*p
, *n
;
1520 list_for_each_safe(p
, n
, &hdev
->blacklist
) {
1521 struct bdaddr_list
*b
;
1523 b
= list_entry(p
, struct bdaddr_list
, list
);
1532 int hci_blacklist_add(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
, u8 type
)
1534 struct bdaddr_list
*entry
;
1536 if (bacmp(bdaddr
, BDADDR_ANY
) == 0)
1539 if (hci_blacklist_lookup(hdev
, bdaddr
))
1542 entry
= kzalloc(sizeof(struct bdaddr_list
), GFP_KERNEL
);
1546 bacpy(&entry
->bdaddr
, bdaddr
);
1548 list_add(&entry
->list
, &hdev
->blacklist
);
1550 return mgmt_device_blocked(hdev
, bdaddr
, type
);
1553 int hci_blacklist_del(struct hci_dev
*hdev
, bdaddr_t
*bdaddr
, u8 type
)
1555 struct bdaddr_list
*entry
;
1557 if (bacmp(bdaddr
, BDADDR_ANY
) == 0)
1558 return hci_blacklist_clear(hdev
);
1560 entry
= hci_blacklist_lookup(hdev
, bdaddr
);
1564 list_del(&entry
->list
);
1567 return mgmt_device_unblocked(hdev
, bdaddr
, type
);
1570 static void le_scan_param_req(struct hci_dev
*hdev
, unsigned long opt
)
1572 struct le_scan_params
*param
= (struct le_scan_params
*) opt
;
1573 struct hci_cp_le_set_scan_param cp
;
1575 memset(&cp
, 0, sizeof(cp
));
1576 cp
.type
= param
->type
;
1577 cp
.interval
= cpu_to_le16(param
->interval
);
1578 cp
.window
= cpu_to_le16(param
->window
);
1580 hci_send_cmd(hdev
, HCI_OP_LE_SET_SCAN_PARAM
, sizeof(cp
), &cp
);
1583 static void le_scan_enable_req(struct hci_dev
*hdev
, unsigned long opt
)
1585 struct hci_cp_le_set_scan_enable cp
;
1587 memset(&cp
, 0, sizeof(cp
));
1591 hci_send_cmd(hdev
, HCI_OP_LE_SET_SCAN_ENABLE
, sizeof(cp
), &cp
);
1594 static int hci_do_le_scan(struct hci_dev
*hdev
, u8 type
, u16 interval
,
1595 u16 window
, int timeout
)
1597 long timeo
= msecs_to_jiffies(3000);
1598 struct le_scan_params param
;
1601 BT_DBG("%s", hdev
->name
);
1603 if (test_bit(HCI_LE_SCAN
, &hdev
->dev_flags
))
1604 return -EINPROGRESS
;
1607 param
.interval
= interval
;
1608 param
.window
= window
;
1612 err
= __hci_req_sync(hdev
, le_scan_param_req
, (unsigned long) ¶m
,
1615 err
= __hci_req_sync(hdev
, le_scan_enable_req
, 0, timeo
);
1617 hci_req_unlock(hdev
);
1622 queue_delayed_work(hdev
->workqueue
, &hdev
->le_scan_disable
,
1623 msecs_to_jiffies(timeout
));
1628 int hci_cancel_le_scan(struct hci_dev
*hdev
)
1630 BT_DBG("%s", hdev
->name
);
1632 if (!test_bit(HCI_LE_SCAN
, &hdev
->dev_flags
))
1635 if (cancel_delayed_work(&hdev
->le_scan_disable
)) {
1636 struct hci_cp_le_set_scan_enable cp
;
1638 /* Send HCI command to disable LE Scan */
1639 memset(&cp
, 0, sizeof(cp
));
1640 hci_send_cmd(hdev
, HCI_OP_LE_SET_SCAN_ENABLE
, sizeof(cp
), &cp
);
1646 static void le_scan_disable_work(struct work_struct
*work
)
1648 struct hci_dev
*hdev
= container_of(work
, struct hci_dev
,
1649 le_scan_disable
.work
);
1650 struct hci_cp_le_set_scan_enable cp
;
1652 BT_DBG("%s", hdev
->name
);
1654 memset(&cp
, 0, sizeof(cp
));
1656 hci_send_cmd(hdev
, HCI_OP_LE_SET_SCAN_ENABLE
, sizeof(cp
), &cp
);
1659 static void le_scan_work(struct work_struct
*work
)
1661 struct hci_dev
*hdev
= container_of(work
, struct hci_dev
, le_scan
);
1662 struct le_scan_params
*param
= &hdev
->le_scan_params
;
1664 BT_DBG("%s", hdev
->name
);
1666 hci_do_le_scan(hdev
, param
->type
, param
->interval
, param
->window
,
1670 int hci_le_scan(struct hci_dev
*hdev
, u8 type
, u16 interval
, u16 window
,
1673 struct le_scan_params
*param
= &hdev
->le_scan_params
;
1675 BT_DBG("%s", hdev
->name
);
1677 if (test_bit(HCI_LE_PERIPHERAL
, &hdev
->dev_flags
))
1680 if (work_busy(&hdev
->le_scan
))
1681 return -EINPROGRESS
;
1684 param
->interval
= interval
;
1685 param
->window
= window
;
1686 param
->timeout
= timeout
;
1688 queue_work(system_long_wq
, &hdev
->le_scan
);
1693 /* Alloc HCI device */
1694 struct hci_dev
*hci_alloc_dev(void)
1696 struct hci_dev
*hdev
;
1698 hdev
= kzalloc(sizeof(struct hci_dev
), GFP_KERNEL
);
1702 hdev
->pkt_type
= (HCI_DM1
| HCI_DH1
| HCI_HV1
);
1703 hdev
->esco_type
= (ESCO_HV1
);
1704 hdev
->link_mode
= (HCI_LM_ACCEPT
);
1705 hdev
->io_capability
= 0x03; /* No Input No Output */
1706 hdev
->inq_tx_power
= HCI_TX_POWER_INVALID
;
1707 hdev
->adv_tx_power
= HCI_TX_POWER_INVALID
;
1709 hdev
->sniff_max_interval
= 800;
1710 hdev
->sniff_min_interval
= 80;
1712 mutex_init(&hdev
->lock
);
1713 mutex_init(&hdev
->req_lock
);
1715 INIT_LIST_HEAD(&hdev
->mgmt_pending
);
1716 INIT_LIST_HEAD(&hdev
->blacklist
);
1717 INIT_LIST_HEAD(&hdev
->uuids
);
1718 INIT_LIST_HEAD(&hdev
->link_keys
);
1719 INIT_LIST_HEAD(&hdev
->long_term_keys
);
1720 INIT_LIST_HEAD(&hdev
->remote_oob_data
);
1721 INIT_LIST_HEAD(&hdev
->conn_hash
.list
);
1723 INIT_WORK(&hdev
->rx_work
, hci_rx_work
);
1724 INIT_WORK(&hdev
->cmd_work
, hci_cmd_work
);
1725 INIT_WORK(&hdev
->tx_work
, hci_tx_work
);
1726 INIT_WORK(&hdev
->power_on
, hci_power_on
);
1727 INIT_WORK(&hdev
->le_scan
, le_scan_work
);
1729 INIT_DELAYED_WORK(&hdev
->power_off
, hci_power_off
);
1730 INIT_DELAYED_WORK(&hdev
->discov_off
, hci_discov_off
);
1731 INIT_DELAYED_WORK(&hdev
->le_scan_disable
, le_scan_disable_work
);
1733 skb_queue_head_init(&hdev
->driver_init
);
1734 skb_queue_head_init(&hdev
->rx_q
);
1735 skb_queue_head_init(&hdev
->cmd_q
);
1736 skb_queue_head_init(&hdev
->raw_q
);
1738 init_waitqueue_head(&hdev
->req_wait_q
);
1740 setup_timer(&hdev
->cmd_timer
, hci_cmd_timeout
, (unsigned long) hdev
);
1742 hci_init_sysfs(hdev
);
1743 discovery_init(hdev
);
1747 EXPORT_SYMBOL(hci_alloc_dev
);
1749 /* Free HCI device */
1750 void hci_free_dev(struct hci_dev
*hdev
)
1752 skb_queue_purge(&hdev
->driver_init
);
1754 /* will free via device release */
1755 put_device(&hdev
->dev
);
1757 EXPORT_SYMBOL(hci_free_dev
);
1759 /* Register HCI device */
1760 int hci_register_dev(struct hci_dev
*hdev
)
1764 if (!hdev
->open
|| !hdev
->close
)
1767 /* Do not allow HCI_AMP devices to register at index 0,
1768 * so the index can be used as the AMP controller ID.
1770 switch (hdev
->dev_type
) {
1772 id
= ida_simple_get(&hci_index_ida
, 0, 0, GFP_KERNEL
);
1775 id
= ida_simple_get(&hci_index_ida
, 1, 0, GFP_KERNEL
);
1784 sprintf(hdev
->name
, "hci%d", id
);
1787 BT_DBG("%p name %s bus %d", hdev
, hdev
->name
, hdev
->bus
);
1789 write_lock(&hci_dev_list_lock
);
1790 list_add(&hdev
->list
, &hci_dev_list
);
1791 write_unlock(&hci_dev_list_lock
);
1793 hdev
->workqueue
= alloc_workqueue(hdev
->name
, WQ_HIGHPRI
| WQ_UNBOUND
|
1795 if (!hdev
->workqueue
) {
1800 hdev
->req_workqueue
= alloc_workqueue(hdev
->name
,
1801 WQ_HIGHPRI
| WQ_UNBOUND
|
1803 if (!hdev
->req_workqueue
) {
1804 destroy_workqueue(hdev
->workqueue
);
1809 error
= hci_add_sysfs(hdev
);
1813 hdev
->rfkill
= rfkill_alloc(hdev
->name
, &hdev
->dev
,
1814 RFKILL_TYPE_BLUETOOTH
, &hci_rfkill_ops
,
1817 if (rfkill_register(hdev
->rfkill
) < 0) {
1818 rfkill_destroy(hdev
->rfkill
);
1819 hdev
->rfkill
= NULL
;
1823 set_bit(HCI_SETUP
, &hdev
->dev_flags
);
1825 if (hdev
->dev_type
!= HCI_AMP
)
1826 set_bit(HCI_AUTO_OFF
, &hdev
->dev_flags
);
1828 hci_notify(hdev
, HCI_DEV_REG
);
1831 queue_work(hdev
->req_workqueue
, &hdev
->power_on
);
1836 destroy_workqueue(hdev
->workqueue
);
1837 destroy_workqueue(hdev
->req_workqueue
);
1839 ida_simple_remove(&hci_index_ida
, hdev
->id
);
1840 write_lock(&hci_dev_list_lock
);
1841 list_del(&hdev
->list
);
1842 write_unlock(&hci_dev_list_lock
);
1846 EXPORT_SYMBOL(hci_register_dev
);
1848 /* Unregister HCI device */
1849 void hci_unregister_dev(struct hci_dev
*hdev
)
1853 BT_DBG("%p name %s bus %d", hdev
, hdev
->name
, hdev
->bus
);
1855 set_bit(HCI_UNREGISTER
, &hdev
->dev_flags
);
1859 write_lock(&hci_dev_list_lock
);
1860 list_del(&hdev
->list
);
1861 write_unlock(&hci_dev_list_lock
);
1863 hci_dev_do_close(hdev
);
1865 for (i
= 0; i
< NUM_REASSEMBLY
; i
++)
1866 kfree_skb(hdev
->reassembly
[i
]);
1868 cancel_work_sync(&hdev
->power_on
);
1870 if (!test_bit(HCI_INIT
, &hdev
->flags
) &&
1871 !test_bit(HCI_SETUP
, &hdev
->dev_flags
)) {
1873 mgmt_index_removed(hdev
);
1874 hci_dev_unlock(hdev
);
1877 /* mgmt_index_removed should take care of emptying the
1879 BUG_ON(!list_empty(&hdev
->mgmt_pending
));
1881 hci_notify(hdev
, HCI_DEV_UNREG
);
1884 rfkill_unregister(hdev
->rfkill
);
1885 rfkill_destroy(hdev
->rfkill
);
1888 hci_del_sysfs(hdev
);
1890 destroy_workqueue(hdev
->workqueue
);
1891 destroy_workqueue(hdev
->req_workqueue
);
1894 hci_blacklist_clear(hdev
);
1895 hci_uuids_clear(hdev
);
1896 hci_link_keys_clear(hdev
);
1897 hci_smp_ltks_clear(hdev
);
1898 hci_remote_oob_data_clear(hdev
);
1899 hci_dev_unlock(hdev
);
1903 ida_simple_remove(&hci_index_ida
, id
);
1905 EXPORT_SYMBOL(hci_unregister_dev
);
1907 /* Suspend HCI device */
1908 int hci_suspend_dev(struct hci_dev
*hdev
)
1910 hci_notify(hdev
, HCI_DEV_SUSPEND
);
1913 EXPORT_SYMBOL(hci_suspend_dev
);
1915 /* Resume HCI device */
1916 int hci_resume_dev(struct hci_dev
*hdev
)
1918 hci_notify(hdev
, HCI_DEV_RESUME
);
1921 EXPORT_SYMBOL(hci_resume_dev
);
1923 /* Receive frame from HCI drivers */
1924 int hci_recv_frame(struct sk_buff
*skb
)
1926 struct hci_dev
*hdev
= (struct hci_dev
*) skb
->dev
;
1927 if (!hdev
|| (!test_bit(HCI_UP
, &hdev
->flags
)
1928 && !test_bit(HCI_INIT
, &hdev
->flags
))) {
1934 bt_cb(skb
)->incoming
= 1;
1937 __net_timestamp(skb
);
1939 skb_queue_tail(&hdev
->rx_q
, skb
);
1940 queue_work(hdev
->workqueue
, &hdev
->rx_work
);
1944 EXPORT_SYMBOL(hci_recv_frame
);
1946 static int hci_reassembly(struct hci_dev
*hdev
, int type
, void *data
,
1947 int count
, __u8 index
)
1952 struct sk_buff
*skb
;
1953 struct bt_skb_cb
*scb
;
1955 if ((type
< HCI_ACLDATA_PKT
|| type
> HCI_EVENT_PKT
) ||
1956 index
>= NUM_REASSEMBLY
)
1959 skb
= hdev
->reassembly
[index
];
1963 case HCI_ACLDATA_PKT
:
1964 len
= HCI_MAX_FRAME_SIZE
;
1965 hlen
= HCI_ACL_HDR_SIZE
;
1968 len
= HCI_MAX_EVENT_SIZE
;
1969 hlen
= HCI_EVENT_HDR_SIZE
;
1971 case HCI_SCODATA_PKT
:
1972 len
= HCI_MAX_SCO_SIZE
;
1973 hlen
= HCI_SCO_HDR_SIZE
;
1977 skb
= bt_skb_alloc(len
, GFP_ATOMIC
);
1981 scb
= (void *) skb
->cb
;
1983 scb
->pkt_type
= type
;
1985 skb
->dev
= (void *) hdev
;
1986 hdev
->reassembly
[index
] = skb
;
1990 scb
= (void *) skb
->cb
;
1991 len
= min_t(uint
, scb
->expect
, count
);
1993 memcpy(skb_put(skb
, len
), data
, len
);
2002 if (skb
->len
== HCI_EVENT_HDR_SIZE
) {
2003 struct hci_event_hdr
*h
= hci_event_hdr(skb
);
2004 scb
->expect
= h
->plen
;
2006 if (skb_tailroom(skb
) < scb
->expect
) {
2008 hdev
->reassembly
[index
] = NULL
;
2014 case HCI_ACLDATA_PKT
:
2015 if (skb
->len
== HCI_ACL_HDR_SIZE
) {
2016 struct hci_acl_hdr
*h
= hci_acl_hdr(skb
);
2017 scb
->expect
= __le16_to_cpu(h
->dlen
);
2019 if (skb_tailroom(skb
) < scb
->expect
) {
2021 hdev
->reassembly
[index
] = NULL
;
2027 case HCI_SCODATA_PKT
:
2028 if (skb
->len
== HCI_SCO_HDR_SIZE
) {
2029 struct hci_sco_hdr
*h
= hci_sco_hdr(skb
);
2030 scb
->expect
= h
->dlen
;
2032 if (skb_tailroom(skb
) < scb
->expect
) {
2034 hdev
->reassembly
[index
] = NULL
;
2041 if (scb
->expect
== 0) {
2042 /* Complete frame */
2044 bt_cb(skb
)->pkt_type
= type
;
2045 hci_recv_frame(skb
);
2047 hdev
->reassembly
[index
] = NULL
;
2055 int hci_recv_fragment(struct hci_dev
*hdev
, int type
, void *data
, int count
)
2059 if (type
< HCI_ACLDATA_PKT
|| type
> HCI_EVENT_PKT
)
2063 rem
= hci_reassembly(hdev
, type
, data
, count
, type
- 1);
2067 data
+= (count
- rem
);
2073 EXPORT_SYMBOL(hci_recv_fragment
);
2075 #define STREAM_REASSEMBLY 0
2077 int hci_recv_stream_fragment(struct hci_dev
*hdev
, void *data
, int count
)
2083 struct sk_buff
*skb
= hdev
->reassembly
[STREAM_REASSEMBLY
];
2086 struct { char type
; } *pkt
;
2088 /* Start of the frame */
2095 type
= bt_cb(skb
)->pkt_type
;
2097 rem
= hci_reassembly(hdev
, type
, data
, count
,
2102 data
+= (count
- rem
);
2108 EXPORT_SYMBOL(hci_recv_stream_fragment
);
2110 /* ---- Interface to upper protocols ---- */
2112 int hci_register_cb(struct hci_cb
*cb
)
2114 BT_DBG("%p name %s", cb
, cb
->name
);
2116 write_lock(&hci_cb_list_lock
);
2117 list_add(&cb
->list
, &hci_cb_list
);
2118 write_unlock(&hci_cb_list_lock
);
2122 EXPORT_SYMBOL(hci_register_cb
);
2124 int hci_unregister_cb(struct hci_cb
*cb
)
2126 BT_DBG("%p name %s", cb
, cb
->name
);
2128 write_lock(&hci_cb_list_lock
);
2129 list_del(&cb
->list
);
2130 write_unlock(&hci_cb_list_lock
);
2134 EXPORT_SYMBOL(hci_unregister_cb
);
2136 static int hci_send_frame(struct sk_buff
*skb
)
2138 struct hci_dev
*hdev
= (struct hci_dev
*) skb
->dev
;
2145 BT_DBG("%s type %d len %d", hdev
->name
, bt_cb(skb
)->pkt_type
, skb
->len
);
2148 __net_timestamp(skb
);
2150 /* Send copy to monitor */
2151 hci_send_to_monitor(hdev
, skb
);
2153 if (atomic_read(&hdev
->promisc
)) {
2154 /* Send copy to the sockets */
2155 hci_send_to_sock(hdev
, skb
);
2158 /* Get rid of skb owner, prior to sending to the driver. */
2161 return hdev
->send(skb
);
2164 /* Send HCI command */
2165 int hci_send_cmd(struct hci_dev
*hdev
, __u16 opcode
, __u32 plen
, void *param
)
2167 int len
= HCI_COMMAND_HDR_SIZE
+ plen
;
2168 struct hci_command_hdr
*hdr
;
2169 struct sk_buff
*skb
;
2171 BT_DBG("%s opcode 0x%4.4x plen %d", hdev
->name
, opcode
, plen
);
2173 skb
= bt_skb_alloc(len
, GFP_ATOMIC
);
2175 BT_ERR("%s no memory for command", hdev
->name
);
2179 hdr
= (struct hci_command_hdr
*) skb_put(skb
, HCI_COMMAND_HDR_SIZE
);
2180 hdr
->opcode
= cpu_to_le16(opcode
);
2184 memcpy(skb_put(skb
, plen
), param
, plen
);
2186 BT_DBG("skb len %d", skb
->len
);
2188 bt_cb(skb
)->pkt_type
= HCI_COMMAND_PKT
;
2189 skb
->dev
= (void *) hdev
;
2191 if (test_bit(HCI_INIT
, &hdev
->flags
))
2192 hdev
->init_last_cmd
= opcode
;
2194 skb_queue_tail(&hdev
->cmd_q
, skb
);
2195 queue_work(hdev
->workqueue
, &hdev
->cmd_work
);
2200 /* Get data from the previously sent command */
2201 void *hci_sent_cmd_data(struct hci_dev
*hdev
, __u16 opcode
)
2203 struct hci_command_hdr
*hdr
;
2205 if (!hdev
->sent_cmd
)
2208 hdr
= (void *) hdev
->sent_cmd
->data
;
2210 if (hdr
->opcode
!= cpu_to_le16(opcode
))
2213 BT_DBG("%s opcode 0x%4.4x", hdev
->name
, opcode
);
2215 return hdev
->sent_cmd
->data
+ HCI_COMMAND_HDR_SIZE
;
2219 static void hci_add_acl_hdr(struct sk_buff
*skb
, __u16 handle
, __u16 flags
)
2221 struct hci_acl_hdr
*hdr
;
2224 skb_push(skb
, HCI_ACL_HDR_SIZE
);
2225 skb_reset_transport_header(skb
);
2226 hdr
= (struct hci_acl_hdr
*)skb_transport_header(skb
);
2227 hdr
->handle
= cpu_to_le16(hci_handle_pack(handle
, flags
));
2228 hdr
->dlen
= cpu_to_le16(len
);
2231 static void hci_queue_acl(struct hci_chan
*chan
, struct sk_buff_head
*queue
,
2232 struct sk_buff
*skb
, __u16 flags
)
2234 struct hci_conn
*conn
= chan
->conn
;
2235 struct hci_dev
*hdev
= conn
->hdev
;
2236 struct sk_buff
*list
;
2238 skb
->len
= skb_headlen(skb
);
2241 bt_cb(skb
)->pkt_type
= HCI_ACLDATA_PKT
;
2243 switch (hdev
->dev_type
) {
2245 hci_add_acl_hdr(skb
, conn
->handle
, flags
);
2248 hci_add_acl_hdr(skb
, chan
->handle
, flags
);
2251 BT_ERR("%s unknown dev_type %d", hdev
->name
, hdev
->dev_type
);
2255 list
= skb_shinfo(skb
)->frag_list
;
2257 /* Non fragmented */
2258 BT_DBG("%s nonfrag skb %p len %d", hdev
->name
, skb
, skb
->len
);
2260 skb_queue_tail(queue
, skb
);
2263 BT_DBG("%s frag %p len %d", hdev
->name
, skb
, skb
->len
);
2265 skb_shinfo(skb
)->frag_list
= NULL
;
2267 /* Queue all fragments atomically */
2268 spin_lock(&queue
->lock
);
2270 __skb_queue_tail(queue
, skb
);
2272 flags
&= ~ACL_START
;
2275 skb
= list
; list
= list
->next
;
2277 skb
->dev
= (void *) hdev
;
2278 bt_cb(skb
)->pkt_type
= HCI_ACLDATA_PKT
;
2279 hci_add_acl_hdr(skb
, conn
->handle
, flags
);
2281 BT_DBG("%s frag %p len %d", hdev
->name
, skb
, skb
->len
);
2283 __skb_queue_tail(queue
, skb
);
2286 spin_unlock(&queue
->lock
);
2290 void hci_send_acl(struct hci_chan
*chan
, struct sk_buff
*skb
, __u16 flags
)
2292 struct hci_dev
*hdev
= chan
->conn
->hdev
;
2294 BT_DBG("%s chan %p flags 0x%4.4x", hdev
->name
, chan
, flags
);
2296 skb
->dev
= (void *) hdev
;
2298 hci_queue_acl(chan
, &chan
->data_q
, skb
, flags
);
2300 queue_work(hdev
->workqueue
, &hdev
->tx_work
);
2304 void hci_send_sco(struct hci_conn
*conn
, struct sk_buff
*skb
)
2306 struct hci_dev
*hdev
= conn
->hdev
;
2307 struct hci_sco_hdr hdr
;
2309 BT_DBG("%s len %d", hdev
->name
, skb
->len
);
2311 hdr
.handle
= cpu_to_le16(conn
->handle
);
2312 hdr
.dlen
= skb
->len
;
2314 skb_push(skb
, HCI_SCO_HDR_SIZE
);
2315 skb_reset_transport_header(skb
);
2316 memcpy(skb_transport_header(skb
), &hdr
, HCI_SCO_HDR_SIZE
);
2318 skb
->dev
= (void *) hdev
;
2319 bt_cb(skb
)->pkt_type
= HCI_SCODATA_PKT
;
2321 skb_queue_tail(&conn
->data_q
, skb
);
2322 queue_work(hdev
->workqueue
, &hdev
->tx_work
);
2325 /* ---- HCI TX task (outgoing data) ---- */
2327 /* HCI Connection scheduler */
2328 static struct hci_conn
*hci_low_sent(struct hci_dev
*hdev
, __u8 type
,
2331 struct hci_conn_hash
*h
= &hdev
->conn_hash
;
2332 struct hci_conn
*conn
= NULL
, *c
;
2333 unsigned int num
= 0, min
= ~0;
2335 /* We don't have to lock device here. Connections are always
2336 * added and removed with TX task disabled. */
2340 list_for_each_entry_rcu(c
, &h
->list
, list
) {
2341 if (c
->type
!= type
|| skb_queue_empty(&c
->data_q
))
2344 if (c
->state
!= BT_CONNECTED
&& c
->state
!= BT_CONFIG
)
2349 if (c
->sent
< min
) {
2354 if (hci_conn_num(hdev
, type
) == num
)
2363 switch (conn
->type
) {
2365 cnt
= hdev
->acl_cnt
;
2369 cnt
= hdev
->sco_cnt
;
2372 cnt
= hdev
->le_mtu
? hdev
->le_cnt
: hdev
->acl_cnt
;
2376 BT_ERR("Unknown link type");
2384 BT_DBG("conn %p quote %d", conn
, *quote
);
2388 static void hci_link_tx_to(struct hci_dev
*hdev
, __u8 type
)
2390 struct hci_conn_hash
*h
= &hdev
->conn_hash
;
2393 BT_ERR("%s link tx timeout", hdev
->name
);
2397 /* Kill stalled connections */
2398 list_for_each_entry_rcu(c
, &h
->list
, list
) {
2399 if (c
->type
== type
&& c
->sent
) {
2400 BT_ERR("%s killing stalled connection %pMR",
2401 hdev
->name
, &c
->dst
);
2402 hci_disconnect(c
, HCI_ERROR_REMOTE_USER_TERM
);
2409 static struct hci_chan
*hci_chan_sent(struct hci_dev
*hdev
, __u8 type
,
2412 struct hci_conn_hash
*h
= &hdev
->conn_hash
;
2413 struct hci_chan
*chan
= NULL
;
2414 unsigned int num
= 0, min
= ~0, cur_prio
= 0;
2415 struct hci_conn
*conn
;
2416 int cnt
, q
, conn_num
= 0;
2418 BT_DBG("%s", hdev
->name
);
2422 list_for_each_entry_rcu(conn
, &h
->list
, list
) {
2423 struct hci_chan
*tmp
;
2425 if (conn
->type
!= type
)
2428 if (conn
->state
!= BT_CONNECTED
&& conn
->state
!= BT_CONFIG
)
2433 list_for_each_entry_rcu(tmp
, &conn
->chan_list
, list
) {
2434 struct sk_buff
*skb
;
2436 if (skb_queue_empty(&tmp
->data_q
))
2439 skb
= skb_peek(&tmp
->data_q
);
2440 if (skb
->priority
< cur_prio
)
2443 if (skb
->priority
> cur_prio
) {
2446 cur_prio
= skb
->priority
;
2451 if (conn
->sent
< min
) {
2457 if (hci_conn_num(hdev
, type
) == conn_num
)
2466 switch (chan
->conn
->type
) {
2468 cnt
= hdev
->acl_cnt
;
2471 cnt
= hdev
->block_cnt
;
2475 cnt
= hdev
->sco_cnt
;
2478 cnt
= hdev
->le_mtu
? hdev
->le_cnt
: hdev
->acl_cnt
;
2482 BT_ERR("Unknown link type");
2487 BT_DBG("chan %p quote %d", chan
, *quote
);
2491 static void hci_prio_recalculate(struct hci_dev
*hdev
, __u8 type
)
2493 struct hci_conn_hash
*h
= &hdev
->conn_hash
;
2494 struct hci_conn
*conn
;
2497 BT_DBG("%s", hdev
->name
);
2501 list_for_each_entry_rcu(conn
, &h
->list
, list
) {
2502 struct hci_chan
*chan
;
2504 if (conn
->type
!= type
)
2507 if (conn
->state
!= BT_CONNECTED
&& conn
->state
!= BT_CONFIG
)
2512 list_for_each_entry_rcu(chan
, &conn
->chan_list
, list
) {
2513 struct sk_buff
*skb
;
2520 if (skb_queue_empty(&chan
->data_q
))
2523 skb
= skb_peek(&chan
->data_q
);
2524 if (skb
->priority
>= HCI_PRIO_MAX
- 1)
2527 skb
->priority
= HCI_PRIO_MAX
- 1;
2529 BT_DBG("chan %p skb %p promoted to %d", chan
, skb
,
2533 if (hci_conn_num(hdev
, type
) == num
)
2541 static inline int __get_blocks(struct hci_dev
*hdev
, struct sk_buff
*skb
)
2543 /* Calculate count of blocks used by this packet */
2544 return DIV_ROUND_UP(skb
->len
- HCI_ACL_HDR_SIZE
, hdev
->block_len
);
2547 static void __check_timeout(struct hci_dev
*hdev
, unsigned int cnt
)
2549 if (!test_bit(HCI_RAW
, &hdev
->flags
)) {
2550 /* ACL tx timeout must be longer than maximum
2551 * link supervision timeout (40.9 seconds) */
2552 if (!cnt
&& time_after(jiffies
, hdev
->acl_last_tx
+
2553 HCI_ACL_TX_TIMEOUT
))
2554 hci_link_tx_to(hdev
, ACL_LINK
);
2558 static void hci_sched_acl_pkt(struct hci_dev
*hdev
)
2560 unsigned int cnt
= hdev
->acl_cnt
;
2561 struct hci_chan
*chan
;
2562 struct sk_buff
*skb
;
2565 __check_timeout(hdev
, cnt
);
2567 while (hdev
->acl_cnt
&&
2568 (chan
= hci_chan_sent(hdev
, ACL_LINK
, "e
))) {
2569 u32 priority
= (skb_peek(&chan
->data_q
))->priority
;
2570 while (quote
-- && (skb
= skb_peek(&chan
->data_q
))) {
2571 BT_DBG("chan %p skb %p len %d priority %u", chan
, skb
,
2572 skb
->len
, skb
->priority
);
2574 /* Stop if priority has changed */
2575 if (skb
->priority
< priority
)
2578 skb
= skb_dequeue(&chan
->data_q
);
2580 hci_conn_enter_active_mode(chan
->conn
,
2581 bt_cb(skb
)->force_active
);
2583 hci_send_frame(skb
);
2584 hdev
->acl_last_tx
= jiffies
;
2592 if (cnt
!= hdev
->acl_cnt
)
2593 hci_prio_recalculate(hdev
, ACL_LINK
);
2596 static void hci_sched_acl_blk(struct hci_dev
*hdev
)
2598 unsigned int cnt
= hdev
->block_cnt
;
2599 struct hci_chan
*chan
;
2600 struct sk_buff
*skb
;
2604 __check_timeout(hdev
, cnt
);
2606 BT_DBG("%s", hdev
->name
);
2608 if (hdev
->dev_type
== HCI_AMP
)
2613 while (hdev
->block_cnt
> 0 &&
2614 (chan
= hci_chan_sent(hdev
, type
, "e
))) {
2615 u32 priority
= (skb_peek(&chan
->data_q
))->priority
;
2616 while (quote
> 0 && (skb
= skb_peek(&chan
->data_q
))) {
2619 BT_DBG("chan %p skb %p len %d priority %u", chan
, skb
,
2620 skb
->len
, skb
->priority
);
2622 /* Stop if priority has changed */
2623 if (skb
->priority
< priority
)
2626 skb
= skb_dequeue(&chan
->data_q
);
2628 blocks
= __get_blocks(hdev
, skb
);
2629 if (blocks
> hdev
->block_cnt
)
2632 hci_conn_enter_active_mode(chan
->conn
,
2633 bt_cb(skb
)->force_active
);
2635 hci_send_frame(skb
);
2636 hdev
->acl_last_tx
= jiffies
;
2638 hdev
->block_cnt
-= blocks
;
2641 chan
->sent
+= blocks
;
2642 chan
->conn
->sent
+= blocks
;
2646 if (cnt
!= hdev
->block_cnt
)
2647 hci_prio_recalculate(hdev
, type
);
2650 static void hci_sched_acl(struct hci_dev
*hdev
)
2652 BT_DBG("%s", hdev
->name
);
2654 /* No ACL link over BR/EDR controller */
2655 if (!hci_conn_num(hdev
, ACL_LINK
) && hdev
->dev_type
== HCI_BREDR
)
2658 /* No AMP link over AMP controller */
2659 if (!hci_conn_num(hdev
, AMP_LINK
) && hdev
->dev_type
== HCI_AMP
)
2662 switch (hdev
->flow_ctl_mode
) {
2663 case HCI_FLOW_CTL_MODE_PACKET_BASED
:
2664 hci_sched_acl_pkt(hdev
);
2667 case HCI_FLOW_CTL_MODE_BLOCK_BASED
:
2668 hci_sched_acl_blk(hdev
);
2674 static void hci_sched_sco(struct hci_dev
*hdev
)
2676 struct hci_conn
*conn
;
2677 struct sk_buff
*skb
;
2680 BT_DBG("%s", hdev
->name
);
2682 if (!hci_conn_num(hdev
, SCO_LINK
))
2685 while (hdev
->sco_cnt
&& (conn
= hci_low_sent(hdev
, SCO_LINK
, "e
))) {
2686 while (quote
-- && (skb
= skb_dequeue(&conn
->data_q
))) {
2687 BT_DBG("skb %p len %d", skb
, skb
->len
);
2688 hci_send_frame(skb
);
2691 if (conn
->sent
== ~0)
2697 static void hci_sched_esco(struct hci_dev
*hdev
)
2699 struct hci_conn
*conn
;
2700 struct sk_buff
*skb
;
2703 BT_DBG("%s", hdev
->name
);
2705 if (!hci_conn_num(hdev
, ESCO_LINK
))
2708 while (hdev
->sco_cnt
&& (conn
= hci_low_sent(hdev
, ESCO_LINK
,
2710 while (quote
-- && (skb
= skb_dequeue(&conn
->data_q
))) {
2711 BT_DBG("skb %p len %d", skb
, skb
->len
);
2712 hci_send_frame(skb
);
2715 if (conn
->sent
== ~0)
2721 static void hci_sched_le(struct hci_dev
*hdev
)
2723 struct hci_chan
*chan
;
2724 struct sk_buff
*skb
;
2725 int quote
, cnt
, tmp
;
2727 BT_DBG("%s", hdev
->name
);
2729 if (!hci_conn_num(hdev
, LE_LINK
))
2732 if (!test_bit(HCI_RAW
, &hdev
->flags
)) {
2733 /* LE tx timeout must be longer than maximum
2734 * link supervision timeout (40.9 seconds) */
2735 if (!hdev
->le_cnt
&& hdev
->le_pkts
&&
2736 time_after(jiffies
, hdev
->le_last_tx
+ HZ
* 45))
2737 hci_link_tx_to(hdev
, LE_LINK
);
2740 cnt
= hdev
->le_pkts
? hdev
->le_cnt
: hdev
->acl_cnt
;
2742 while (cnt
&& (chan
= hci_chan_sent(hdev
, LE_LINK
, "e
))) {
2743 u32 priority
= (skb_peek(&chan
->data_q
))->priority
;
2744 while (quote
-- && (skb
= skb_peek(&chan
->data_q
))) {
2745 BT_DBG("chan %p skb %p len %d priority %u", chan
, skb
,
2746 skb
->len
, skb
->priority
);
2748 /* Stop if priority has changed */
2749 if (skb
->priority
< priority
)
2752 skb
= skb_dequeue(&chan
->data_q
);
2754 hci_send_frame(skb
);
2755 hdev
->le_last_tx
= jiffies
;
2766 hdev
->acl_cnt
= cnt
;
2769 hci_prio_recalculate(hdev
, LE_LINK
);
2772 static void hci_tx_work(struct work_struct
*work
)
2774 struct hci_dev
*hdev
= container_of(work
, struct hci_dev
, tx_work
);
2775 struct sk_buff
*skb
;
2777 BT_DBG("%s acl %d sco %d le %d", hdev
->name
, hdev
->acl_cnt
,
2778 hdev
->sco_cnt
, hdev
->le_cnt
);
2780 /* Schedule queues and send stuff to HCI driver */
2782 hci_sched_acl(hdev
);
2784 hci_sched_sco(hdev
);
2786 hci_sched_esco(hdev
);
2790 /* Send next queued raw (unknown type) packet */
2791 while ((skb
= skb_dequeue(&hdev
->raw_q
)))
2792 hci_send_frame(skb
);
2795 /* ----- HCI RX task (incoming data processing) ----- */
2797 /* ACL data packet */
2798 static void hci_acldata_packet(struct hci_dev
*hdev
, struct sk_buff
*skb
)
2800 struct hci_acl_hdr
*hdr
= (void *) skb
->data
;
2801 struct hci_conn
*conn
;
2802 __u16 handle
, flags
;
2804 skb_pull(skb
, HCI_ACL_HDR_SIZE
);
2806 handle
= __le16_to_cpu(hdr
->handle
);
2807 flags
= hci_flags(handle
);
2808 handle
= hci_handle(handle
);
2810 BT_DBG("%s len %d handle 0x%4.4x flags 0x%4.4x", hdev
->name
, skb
->len
,
2813 hdev
->stat
.acl_rx
++;
2816 conn
= hci_conn_hash_lookup_handle(hdev
, handle
);
2817 hci_dev_unlock(hdev
);
2820 hci_conn_enter_active_mode(conn
, BT_POWER_FORCE_ACTIVE_OFF
);
2822 /* Send to upper protocol */
2823 l2cap_recv_acldata(conn
, skb
, flags
);
2826 BT_ERR("%s ACL packet for unknown connection handle %d",
2827 hdev
->name
, handle
);
2833 /* SCO data packet */
2834 static void hci_scodata_packet(struct hci_dev
*hdev
, struct sk_buff
*skb
)
2836 struct hci_sco_hdr
*hdr
= (void *) skb
->data
;
2837 struct hci_conn
*conn
;
2840 skb_pull(skb
, HCI_SCO_HDR_SIZE
);
2842 handle
= __le16_to_cpu(hdr
->handle
);
2844 BT_DBG("%s len %d handle 0x%4.4x", hdev
->name
, skb
->len
, handle
);
2846 hdev
->stat
.sco_rx
++;
2849 conn
= hci_conn_hash_lookup_handle(hdev
, handle
);
2850 hci_dev_unlock(hdev
);
2853 /* Send to upper protocol */
2854 sco_recv_scodata(conn
, skb
);
2857 BT_ERR("%s SCO packet for unknown connection handle %d",
2858 hdev
->name
, handle
);
2864 static void hci_rx_work(struct work_struct
*work
)
2866 struct hci_dev
*hdev
= container_of(work
, struct hci_dev
, rx_work
);
2867 struct sk_buff
*skb
;
2869 BT_DBG("%s", hdev
->name
);
2871 while ((skb
= skb_dequeue(&hdev
->rx_q
))) {
2872 /* Send copy to monitor */
2873 hci_send_to_monitor(hdev
, skb
);
2875 if (atomic_read(&hdev
->promisc
)) {
2876 /* Send copy to the sockets */
2877 hci_send_to_sock(hdev
, skb
);
2880 if (test_bit(HCI_RAW
, &hdev
->flags
)) {
2885 if (test_bit(HCI_INIT
, &hdev
->flags
)) {
2886 /* Don't process data packets in this states. */
2887 switch (bt_cb(skb
)->pkt_type
) {
2888 case HCI_ACLDATA_PKT
:
2889 case HCI_SCODATA_PKT
:
2896 switch (bt_cb(skb
)->pkt_type
) {
2898 BT_DBG("%s Event packet", hdev
->name
);
2899 hci_event_packet(hdev
, skb
);
2902 case HCI_ACLDATA_PKT
:
2903 BT_DBG("%s ACL data packet", hdev
->name
);
2904 hci_acldata_packet(hdev
, skb
);
2907 case HCI_SCODATA_PKT
:
2908 BT_DBG("%s SCO data packet", hdev
->name
);
2909 hci_scodata_packet(hdev
, skb
);
2919 static void hci_cmd_work(struct work_struct
*work
)
2921 struct hci_dev
*hdev
= container_of(work
, struct hci_dev
, cmd_work
);
2922 struct sk_buff
*skb
;
2924 BT_DBG("%s cmd_cnt %d cmd queued %d", hdev
->name
,
2925 atomic_read(&hdev
->cmd_cnt
), skb_queue_len(&hdev
->cmd_q
));
2927 /* Send queued commands */
2928 if (atomic_read(&hdev
->cmd_cnt
)) {
2929 skb
= skb_dequeue(&hdev
->cmd_q
);
2933 kfree_skb(hdev
->sent_cmd
);
2935 hdev
->sent_cmd
= skb_clone(skb
, GFP_ATOMIC
);
2936 if (hdev
->sent_cmd
) {
2937 atomic_dec(&hdev
->cmd_cnt
);
2938 hci_send_frame(skb
);
2939 if (test_bit(HCI_RESET
, &hdev
->flags
))
2940 del_timer(&hdev
->cmd_timer
);
2942 mod_timer(&hdev
->cmd_timer
,
2943 jiffies
+ HCI_CMD_TIMEOUT
);
2945 skb_queue_head(&hdev
->cmd_q
, skb
);
2946 queue_work(hdev
->workqueue
, &hdev
->cmd_work
);
2951 int hci_do_inquiry(struct hci_dev
*hdev
, u8 length
)
2953 /* General inquiry access code (GIAC) */
2954 u8 lap
[3] = { 0x33, 0x8b, 0x9e };
2955 struct hci_cp_inquiry cp
;
2957 BT_DBG("%s", hdev
->name
);
2959 if (test_bit(HCI_INQUIRY
, &hdev
->flags
))
2960 return -EINPROGRESS
;
2962 inquiry_cache_flush(hdev
);
2964 memset(&cp
, 0, sizeof(cp
));
2965 memcpy(&cp
.lap
, lap
, sizeof(cp
.lap
));
2968 return hci_send_cmd(hdev
, HCI_OP_INQUIRY
, sizeof(cp
), &cp
);
2971 int hci_cancel_inquiry(struct hci_dev
*hdev
)
2973 BT_DBG("%s", hdev
->name
);
2975 if (!test_bit(HCI_INQUIRY
, &hdev
->flags
))
2978 return hci_send_cmd(hdev
, HCI_OP_INQUIRY_CANCEL
, 0, NULL
);
2981 u8
bdaddr_to_le(u8 bdaddr_type
)
2983 switch (bdaddr_type
) {
2984 case BDADDR_LE_PUBLIC
:
2985 return ADDR_LE_DEV_PUBLIC
;
2988 /* Fallback to LE Random address type */
2989 return ADDR_LE_DEV_RANDOM
;