Merge tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
[cascardo/linux.git] / net / bluetooth / hci_core.c
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4    Copyright (C) 2011 ProFUSION Embedded Systems
5
6    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License version 2 as
10    published by the Free Software Foundation;
11
12    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
15    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
16    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
17    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
19    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20
21    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
22    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
23    SOFTWARE IS DISCLAIMED.
24 */
25
26 /* Bluetooth HCI core. */
27
28 #include <linux/export.h>
29 #include <linux/idr.h>
30 #include <linux/rfkill.h>
31 #include <linux/debugfs.h>
32 #include <linux/crypto.h>
33 #include <asm/unaligned.h>
34
35 #include <net/bluetooth/bluetooth.h>
36 #include <net/bluetooth/hci_core.h>
37
38 #include "smp.h"
39
40 static void hci_rx_work(struct work_struct *work);
41 static void hci_cmd_work(struct work_struct *work);
42 static void hci_tx_work(struct work_struct *work);
43
44 /* HCI device list */
45 LIST_HEAD(hci_dev_list);
46 DEFINE_RWLOCK(hci_dev_list_lock);
47
48 /* HCI callback list */
49 LIST_HEAD(hci_cb_list);
50 DEFINE_RWLOCK(hci_cb_list_lock);
51
52 /* HCI ID Numbering */
53 static DEFINE_IDA(hci_index_ida);
54
55 /* ---- HCI notifications ---- */
56
57 static void hci_notify(struct hci_dev *hdev, int event)
58 {
59         hci_sock_dev_event(hdev, event);
60 }
61
62 /* ---- HCI debugfs entries ---- */
63
64 static ssize_t dut_mode_read(struct file *file, char __user *user_buf,
65                              size_t count, loff_t *ppos)
66 {
67         struct hci_dev *hdev = file->private_data;
68         char buf[3];
69
70         buf[0] = test_bit(HCI_DUT_MODE, &hdev->dev_flags) ? 'Y': 'N';
71         buf[1] = '\n';
72         buf[2] = '\0';
73         return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
74 }
75
76 static ssize_t dut_mode_write(struct file *file, const char __user *user_buf,
77                               size_t count, loff_t *ppos)
78 {
79         struct hci_dev *hdev = file->private_data;
80         struct sk_buff *skb;
81         char buf[32];
82         size_t buf_size = min(count, (sizeof(buf)-1));
83         bool enable;
84         int err;
85
86         if (!test_bit(HCI_UP, &hdev->flags))
87                 return -ENETDOWN;
88
89         if (copy_from_user(buf, user_buf, buf_size))
90                 return -EFAULT;
91
92         buf[buf_size] = '\0';
93         if (strtobool(buf, &enable))
94                 return -EINVAL;
95
96         if (enable == test_bit(HCI_DUT_MODE, &hdev->dev_flags))
97                 return -EALREADY;
98
99         hci_req_lock(hdev);
100         if (enable)
101                 skb = __hci_cmd_sync(hdev, HCI_OP_ENABLE_DUT_MODE, 0, NULL,
102                                      HCI_CMD_TIMEOUT);
103         else
104                 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL,
105                                      HCI_CMD_TIMEOUT);
106         hci_req_unlock(hdev);
107
108         if (IS_ERR(skb))
109                 return PTR_ERR(skb);
110
111         err = -bt_to_errno(skb->data[0]);
112         kfree_skb(skb);
113
114         if (err < 0)
115                 return err;
116
117         change_bit(HCI_DUT_MODE, &hdev->dev_flags);
118
119         return count;
120 }
121
122 static const struct file_operations dut_mode_fops = {
123         .open           = simple_open,
124         .read           = dut_mode_read,
125         .write          = dut_mode_write,
126         .llseek         = default_llseek,
127 };
128
129 static int features_show(struct seq_file *f, void *ptr)
130 {
131         struct hci_dev *hdev = f->private;
132         u8 p;
133
134         hci_dev_lock(hdev);
135         for (p = 0; p < HCI_MAX_PAGES && p <= hdev->max_page; p++) {
136                 seq_printf(f, "%2u: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "
137                            "0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n", p,
138                            hdev->features[p][0], hdev->features[p][1],
139                            hdev->features[p][2], hdev->features[p][3],
140                            hdev->features[p][4], hdev->features[p][5],
141                            hdev->features[p][6], hdev->features[p][7]);
142         }
143         if (lmp_le_capable(hdev))
144                 seq_printf(f, "LE: 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x "
145                            "0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x\n",
146                            hdev->le_features[0], hdev->le_features[1],
147                            hdev->le_features[2], hdev->le_features[3],
148                            hdev->le_features[4], hdev->le_features[5],
149                            hdev->le_features[6], hdev->le_features[7]);
150         hci_dev_unlock(hdev);
151
152         return 0;
153 }
154
155 static int features_open(struct inode *inode, struct file *file)
156 {
157         return single_open(file, features_show, inode->i_private);
158 }
159
160 static const struct file_operations features_fops = {
161         .open           = features_open,
162         .read           = seq_read,
163         .llseek         = seq_lseek,
164         .release        = single_release,
165 };
166
167 static int blacklist_show(struct seq_file *f, void *p)
168 {
169         struct hci_dev *hdev = f->private;
170         struct bdaddr_list *b;
171
172         hci_dev_lock(hdev);
173         list_for_each_entry(b, &hdev->blacklist, list)
174                 seq_printf(f, "%pMR (type %u)\n", &b->bdaddr, b->bdaddr_type);
175         hci_dev_unlock(hdev);
176
177         return 0;
178 }
179
180 static int blacklist_open(struct inode *inode, struct file *file)
181 {
182         return single_open(file, blacklist_show, inode->i_private);
183 }
184
185 static const struct file_operations blacklist_fops = {
186         .open           = blacklist_open,
187         .read           = seq_read,
188         .llseek         = seq_lseek,
189         .release        = single_release,
190 };
191
192 static int uuids_show(struct seq_file *f, void *p)
193 {
194         struct hci_dev *hdev = f->private;
195         struct bt_uuid *uuid;
196
197         hci_dev_lock(hdev);
198         list_for_each_entry(uuid, &hdev->uuids, list) {
199                 u8 i, val[16];
200
201                 /* The Bluetooth UUID values are stored in big endian,
202                  * but with reversed byte order. So convert them into
203                  * the right order for the %pUb modifier.
204                  */
205                 for (i = 0; i < 16; i++)
206                         val[i] = uuid->uuid[15 - i];
207
208                 seq_printf(f, "%pUb\n", val);
209         }
210         hci_dev_unlock(hdev);
211
212         return 0;
213 }
214
215 static int uuids_open(struct inode *inode, struct file *file)
216 {
217         return single_open(file, uuids_show, inode->i_private);
218 }
219
220 static const struct file_operations uuids_fops = {
221         .open           = uuids_open,
222         .read           = seq_read,
223         .llseek         = seq_lseek,
224         .release        = single_release,
225 };
226
227 static int inquiry_cache_show(struct seq_file *f, void *p)
228 {
229         struct hci_dev *hdev = f->private;
230         struct discovery_state *cache = &hdev->discovery;
231         struct inquiry_entry *e;
232
233         hci_dev_lock(hdev);
234
235         list_for_each_entry(e, &cache->all, all) {
236                 struct inquiry_data *data = &e->data;
237                 seq_printf(f, "%pMR %d %d %d 0x%.2x%.2x%.2x 0x%.4x %d %d %u\n",
238                            &data->bdaddr,
239                            data->pscan_rep_mode, data->pscan_period_mode,
240                            data->pscan_mode, data->dev_class[2],
241                            data->dev_class[1], data->dev_class[0],
242                            __le16_to_cpu(data->clock_offset),
243                            data->rssi, data->ssp_mode, e->timestamp);
244         }
245
246         hci_dev_unlock(hdev);
247
248         return 0;
249 }
250
251 static int inquiry_cache_open(struct inode *inode, struct file *file)
252 {
253         return single_open(file, inquiry_cache_show, inode->i_private);
254 }
255
256 static const struct file_operations inquiry_cache_fops = {
257         .open           = inquiry_cache_open,
258         .read           = seq_read,
259         .llseek         = seq_lseek,
260         .release        = single_release,
261 };
262
263 static int link_keys_show(struct seq_file *f, void *ptr)
264 {
265         struct hci_dev *hdev = f->private;
266         struct list_head *p, *n;
267
268         hci_dev_lock(hdev);
269         list_for_each_safe(p, n, &hdev->link_keys) {
270                 struct link_key *key = list_entry(p, struct link_key, list);
271                 seq_printf(f, "%pMR %u %*phN %u\n", &key->bdaddr, key->type,
272                            HCI_LINK_KEY_SIZE, key->val, key->pin_len);
273         }
274         hci_dev_unlock(hdev);
275
276         return 0;
277 }
278
279 static int link_keys_open(struct inode *inode, struct file *file)
280 {
281         return single_open(file, link_keys_show, inode->i_private);
282 }
283
284 static const struct file_operations link_keys_fops = {
285         .open           = link_keys_open,
286         .read           = seq_read,
287         .llseek         = seq_lseek,
288         .release        = single_release,
289 };
290
291 static int dev_class_show(struct seq_file *f, void *ptr)
292 {
293         struct hci_dev *hdev = f->private;
294
295         hci_dev_lock(hdev);
296         seq_printf(f, "0x%.2x%.2x%.2x\n", hdev->dev_class[2],
297                    hdev->dev_class[1], hdev->dev_class[0]);
298         hci_dev_unlock(hdev);
299
300         return 0;
301 }
302
303 static int dev_class_open(struct inode *inode, struct file *file)
304 {
305         return single_open(file, dev_class_show, inode->i_private);
306 }
307
308 static const struct file_operations dev_class_fops = {
309         .open           = dev_class_open,
310         .read           = seq_read,
311         .llseek         = seq_lseek,
312         .release        = single_release,
313 };
314
315 static int voice_setting_get(void *data, u64 *val)
316 {
317         struct hci_dev *hdev = data;
318
319         hci_dev_lock(hdev);
320         *val = hdev->voice_setting;
321         hci_dev_unlock(hdev);
322
323         return 0;
324 }
325
326 DEFINE_SIMPLE_ATTRIBUTE(voice_setting_fops, voice_setting_get,
327                         NULL, "0x%4.4llx\n");
328
329 static int auto_accept_delay_set(void *data, u64 val)
330 {
331         struct hci_dev *hdev = data;
332
333         hci_dev_lock(hdev);
334         hdev->auto_accept_delay = val;
335         hci_dev_unlock(hdev);
336
337         return 0;
338 }
339
340 static int auto_accept_delay_get(void *data, u64 *val)
341 {
342         struct hci_dev *hdev = data;
343
344         hci_dev_lock(hdev);
345         *val = hdev->auto_accept_delay;
346         hci_dev_unlock(hdev);
347
348         return 0;
349 }
350
351 DEFINE_SIMPLE_ATTRIBUTE(auto_accept_delay_fops, auto_accept_delay_get,
352                         auto_accept_delay_set, "%llu\n");
353
354 static int ssp_debug_mode_set(void *data, u64 val)
355 {
356         struct hci_dev *hdev = data;
357         struct sk_buff *skb;
358         __u8 mode;
359         int err;
360
361         if (val != 0 && val != 1)
362                 return -EINVAL;
363
364         if (!test_bit(HCI_UP, &hdev->flags))
365                 return -ENETDOWN;
366
367         hci_req_lock(hdev);
368         mode = val;
369         skb = __hci_cmd_sync(hdev, HCI_OP_WRITE_SSP_DEBUG_MODE, sizeof(mode),
370                              &mode, HCI_CMD_TIMEOUT);
371         hci_req_unlock(hdev);
372
373         if (IS_ERR(skb))
374                 return PTR_ERR(skb);
375
376         err = -bt_to_errno(skb->data[0]);
377         kfree_skb(skb);
378
379         if (err < 0)
380                 return err;
381
382         hci_dev_lock(hdev);
383         hdev->ssp_debug_mode = val;
384         hci_dev_unlock(hdev);
385
386         return 0;
387 }
388
389 static int ssp_debug_mode_get(void *data, u64 *val)
390 {
391         struct hci_dev *hdev = data;
392
393         hci_dev_lock(hdev);
394         *val = hdev->ssp_debug_mode;
395         hci_dev_unlock(hdev);
396
397         return 0;
398 }
399
400 DEFINE_SIMPLE_ATTRIBUTE(ssp_debug_mode_fops, ssp_debug_mode_get,
401                         ssp_debug_mode_set, "%llu\n");
402
403 static ssize_t force_sc_support_read(struct file *file, char __user *user_buf,
404                                      size_t count, loff_t *ppos)
405 {
406         struct hci_dev *hdev = file->private_data;
407         char buf[3];
408
409         buf[0] = test_bit(HCI_FORCE_SC, &hdev->dev_flags) ? 'Y': 'N';
410         buf[1] = '\n';
411         buf[2] = '\0';
412         return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
413 }
414
415 static ssize_t force_sc_support_write(struct file *file,
416                                       const char __user *user_buf,
417                                       size_t count, loff_t *ppos)
418 {
419         struct hci_dev *hdev = file->private_data;
420         char buf[32];
421         size_t buf_size = min(count, (sizeof(buf)-1));
422         bool enable;
423
424         if (test_bit(HCI_UP, &hdev->flags))
425                 return -EBUSY;
426
427         if (copy_from_user(buf, user_buf, buf_size))
428                 return -EFAULT;
429
430         buf[buf_size] = '\0';
431         if (strtobool(buf, &enable))
432                 return -EINVAL;
433
434         if (enable == test_bit(HCI_FORCE_SC, &hdev->dev_flags))
435                 return -EALREADY;
436
437         change_bit(HCI_FORCE_SC, &hdev->dev_flags);
438
439         return count;
440 }
441
442 static const struct file_operations force_sc_support_fops = {
443         .open           = simple_open,
444         .read           = force_sc_support_read,
445         .write          = force_sc_support_write,
446         .llseek         = default_llseek,
447 };
448
449 static ssize_t sc_only_mode_read(struct file *file, char __user *user_buf,
450                                  size_t count, loff_t *ppos)
451 {
452         struct hci_dev *hdev = file->private_data;
453         char buf[3];
454
455         buf[0] = test_bit(HCI_SC_ONLY, &hdev->dev_flags) ? 'Y': 'N';
456         buf[1] = '\n';
457         buf[2] = '\0';
458         return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
459 }
460
461 static const struct file_operations sc_only_mode_fops = {
462         .open           = simple_open,
463         .read           = sc_only_mode_read,
464         .llseek         = default_llseek,
465 };
466
467 static int idle_timeout_set(void *data, u64 val)
468 {
469         struct hci_dev *hdev = data;
470
471         if (val != 0 && (val < 500 || val > 3600000))
472                 return -EINVAL;
473
474         hci_dev_lock(hdev);
475         hdev->idle_timeout = val;
476         hci_dev_unlock(hdev);
477
478         return 0;
479 }
480
481 static int idle_timeout_get(void *data, u64 *val)
482 {
483         struct hci_dev *hdev = data;
484
485         hci_dev_lock(hdev);
486         *val = hdev->idle_timeout;
487         hci_dev_unlock(hdev);
488
489         return 0;
490 }
491
492 DEFINE_SIMPLE_ATTRIBUTE(idle_timeout_fops, idle_timeout_get,
493                         idle_timeout_set, "%llu\n");
494
495 static int rpa_timeout_set(void *data, u64 val)
496 {
497         struct hci_dev *hdev = data;
498
499         /* Require the RPA timeout to be at least 30 seconds and at most
500          * 24 hours.
501          */
502         if (val < 30 || val > (60 * 60 * 24))
503                 return -EINVAL;
504
505         hci_dev_lock(hdev);
506         hdev->rpa_timeout = val;
507         hci_dev_unlock(hdev);
508
509         return 0;
510 }
511
512 static int rpa_timeout_get(void *data, u64 *val)
513 {
514         struct hci_dev *hdev = data;
515
516         hci_dev_lock(hdev);
517         *val = hdev->rpa_timeout;
518         hci_dev_unlock(hdev);
519
520         return 0;
521 }
522
523 DEFINE_SIMPLE_ATTRIBUTE(rpa_timeout_fops, rpa_timeout_get,
524                         rpa_timeout_set, "%llu\n");
525
526 static int sniff_min_interval_set(void *data, u64 val)
527 {
528         struct hci_dev *hdev = data;
529
530         if (val == 0 || val % 2 || val > hdev->sniff_max_interval)
531                 return -EINVAL;
532
533         hci_dev_lock(hdev);
534         hdev->sniff_min_interval = val;
535         hci_dev_unlock(hdev);
536
537         return 0;
538 }
539
540 static int sniff_min_interval_get(void *data, u64 *val)
541 {
542         struct hci_dev *hdev = data;
543
544         hci_dev_lock(hdev);
545         *val = hdev->sniff_min_interval;
546         hci_dev_unlock(hdev);
547
548         return 0;
549 }
550
551 DEFINE_SIMPLE_ATTRIBUTE(sniff_min_interval_fops, sniff_min_interval_get,
552                         sniff_min_interval_set, "%llu\n");
553
554 static int sniff_max_interval_set(void *data, u64 val)
555 {
556         struct hci_dev *hdev = data;
557
558         if (val == 0 || val % 2 || val < hdev->sniff_min_interval)
559                 return -EINVAL;
560
561         hci_dev_lock(hdev);
562         hdev->sniff_max_interval = val;
563         hci_dev_unlock(hdev);
564
565         return 0;
566 }
567
568 static int sniff_max_interval_get(void *data, u64 *val)
569 {
570         struct hci_dev *hdev = data;
571
572         hci_dev_lock(hdev);
573         *val = hdev->sniff_max_interval;
574         hci_dev_unlock(hdev);
575
576         return 0;
577 }
578
579 DEFINE_SIMPLE_ATTRIBUTE(sniff_max_interval_fops, sniff_max_interval_get,
580                         sniff_max_interval_set, "%llu\n");
581
582 static int identity_show(struct seq_file *f, void *p)
583 {
584         struct hci_dev *hdev = f->private;
585         bdaddr_t addr;
586         u8 addr_type;
587
588         hci_dev_lock(hdev);
589
590         hci_copy_identity_address(hdev, &addr, &addr_type);
591
592         seq_printf(f, "%pMR (type %u) %*phN %pMR\n", &addr, addr_type,
593                    16, hdev->irk, &hdev->rpa);
594
595         hci_dev_unlock(hdev);
596
597         return 0;
598 }
599
600 static int identity_open(struct inode *inode, struct file *file)
601 {
602         return single_open(file, identity_show, inode->i_private);
603 }
604
605 static const struct file_operations identity_fops = {
606         .open           = identity_open,
607         .read           = seq_read,
608         .llseek         = seq_lseek,
609         .release        = single_release,
610 };
611
612 static int random_address_show(struct seq_file *f, void *p)
613 {
614         struct hci_dev *hdev = f->private;
615
616         hci_dev_lock(hdev);
617         seq_printf(f, "%pMR\n", &hdev->random_addr);
618         hci_dev_unlock(hdev);
619
620         return 0;
621 }
622
623 static int random_address_open(struct inode *inode, struct file *file)
624 {
625         return single_open(file, random_address_show, inode->i_private);
626 }
627
628 static const struct file_operations random_address_fops = {
629         .open           = random_address_open,
630         .read           = seq_read,
631         .llseek         = seq_lseek,
632         .release        = single_release,
633 };
634
635 static int static_address_show(struct seq_file *f, void *p)
636 {
637         struct hci_dev *hdev = f->private;
638
639         hci_dev_lock(hdev);
640         seq_printf(f, "%pMR\n", &hdev->static_addr);
641         hci_dev_unlock(hdev);
642
643         return 0;
644 }
645
646 static int static_address_open(struct inode *inode, struct file *file)
647 {
648         return single_open(file, static_address_show, inode->i_private);
649 }
650
651 static const struct file_operations static_address_fops = {
652         .open           = static_address_open,
653         .read           = seq_read,
654         .llseek         = seq_lseek,
655         .release        = single_release,
656 };
657
658 static ssize_t force_static_address_read(struct file *file,
659                                          char __user *user_buf,
660                                          size_t count, loff_t *ppos)
661 {
662         struct hci_dev *hdev = file->private_data;
663         char buf[3];
664
665         buf[0] = test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dev_flags) ? 'Y': 'N';
666         buf[1] = '\n';
667         buf[2] = '\0';
668         return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
669 }
670
671 static ssize_t force_static_address_write(struct file *file,
672                                           const char __user *user_buf,
673                                           size_t count, loff_t *ppos)
674 {
675         struct hci_dev *hdev = file->private_data;
676         char buf[32];
677         size_t buf_size = min(count, (sizeof(buf)-1));
678         bool enable;
679
680         if (test_bit(HCI_UP, &hdev->flags))
681                 return -EBUSY;
682
683         if (copy_from_user(buf, user_buf, buf_size))
684                 return -EFAULT;
685
686         buf[buf_size] = '\0';
687         if (strtobool(buf, &enable))
688                 return -EINVAL;
689
690         if (enable == test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dev_flags))
691                 return -EALREADY;
692
693         change_bit(HCI_FORCE_STATIC_ADDR, &hdev->dev_flags);
694
695         return count;
696 }
697
698 static const struct file_operations force_static_address_fops = {
699         .open           = simple_open,
700         .read           = force_static_address_read,
701         .write          = force_static_address_write,
702         .llseek         = default_llseek,
703 };
704
705 static int white_list_show(struct seq_file *f, void *ptr)
706 {
707         struct hci_dev *hdev = f->private;
708         struct bdaddr_list *b;
709
710         hci_dev_lock(hdev);
711         list_for_each_entry(b, &hdev->le_white_list, list)
712                 seq_printf(f, "%pMR (type %u)\n", &b->bdaddr, b->bdaddr_type);
713         hci_dev_unlock(hdev);
714
715         return 0;
716 }
717
718 static int white_list_open(struct inode *inode, struct file *file)
719 {
720         return single_open(file, white_list_show, inode->i_private);
721 }
722
723 static const struct file_operations white_list_fops = {
724         .open           = white_list_open,
725         .read           = seq_read,
726         .llseek         = seq_lseek,
727         .release        = single_release,
728 };
729
730 static int identity_resolving_keys_show(struct seq_file *f, void *ptr)
731 {
732         struct hci_dev *hdev = f->private;
733         struct list_head *p, *n;
734
735         hci_dev_lock(hdev);
736         list_for_each_safe(p, n, &hdev->identity_resolving_keys) {
737                 struct smp_irk *irk = list_entry(p, struct smp_irk, list);
738                 seq_printf(f, "%pMR (type %u) %*phN %pMR\n",
739                            &irk->bdaddr, irk->addr_type,
740                            16, irk->val, &irk->rpa);
741         }
742         hci_dev_unlock(hdev);
743
744         return 0;
745 }
746
747 static int identity_resolving_keys_open(struct inode *inode, struct file *file)
748 {
749         return single_open(file, identity_resolving_keys_show,
750                            inode->i_private);
751 }
752
753 static const struct file_operations identity_resolving_keys_fops = {
754         .open           = identity_resolving_keys_open,
755         .read           = seq_read,
756         .llseek         = seq_lseek,
757         .release        = single_release,
758 };
759
760 static int long_term_keys_show(struct seq_file *f, void *ptr)
761 {
762         struct hci_dev *hdev = f->private;
763         struct list_head *p, *n;
764
765         hci_dev_lock(hdev);
766         list_for_each_safe(p, n, &hdev->long_term_keys) {
767                 struct smp_ltk *ltk = list_entry(p, struct smp_ltk, list);
768                 seq_printf(f, "%pMR (type %u) %u 0x%02x %u %.4x %.16llx %*phN\n",
769                            &ltk->bdaddr, ltk->bdaddr_type, ltk->authenticated,
770                            ltk->type, ltk->enc_size, __le16_to_cpu(ltk->ediv),
771                            __le64_to_cpu(ltk->rand), 16, ltk->val);
772         }
773         hci_dev_unlock(hdev);
774
775         return 0;
776 }
777
778 static int long_term_keys_open(struct inode *inode, struct file *file)
779 {
780         return single_open(file, long_term_keys_show, inode->i_private);
781 }
782
783 static const struct file_operations long_term_keys_fops = {
784         .open           = long_term_keys_open,
785         .read           = seq_read,
786         .llseek         = seq_lseek,
787         .release        = single_release,
788 };
789
790 static int conn_min_interval_set(void *data, u64 val)
791 {
792         struct hci_dev *hdev = data;
793
794         if (val < 0x0006 || val > 0x0c80 || val > hdev->le_conn_max_interval)
795                 return -EINVAL;
796
797         hci_dev_lock(hdev);
798         hdev->le_conn_min_interval = val;
799         hci_dev_unlock(hdev);
800
801         return 0;
802 }
803
804 static int conn_min_interval_get(void *data, u64 *val)
805 {
806         struct hci_dev *hdev = data;
807
808         hci_dev_lock(hdev);
809         *val = hdev->le_conn_min_interval;
810         hci_dev_unlock(hdev);
811
812         return 0;
813 }
814
815 DEFINE_SIMPLE_ATTRIBUTE(conn_min_interval_fops, conn_min_interval_get,
816                         conn_min_interval_set, "%llu\n");
817
818 static int conn_max_interval_set(void *data, u64 val)
819 {
820         struct hci_dev *hdev = data;
821
822         if (val < 0x0006 || val > 0x0c80 || val < hdev->le_conn_min_interval)
823                 return -EINVAL;
824
825         hci_dev_lock(hdev);
826         hdev->le_conn_max_interval = val;
827         hci_dev_unlock(hdev);
828
829         return 0;
830 }
831
832 static int conn_max_interval_get(void *data, u64 *val)
833 {
834         struct hci_dev *hdev = data;
835
836         hci_dev_lock(hdev);
837         *val = hdev->le_conn_max_interval;
838         hci_dev_unlock(hdev);
839
840         return 0;
841 }
842
843 DEFINE_SIMPLE_ATTRIBUTE(conn_max_interval_fops, conn_max_interval_get,
844                         conn_max_interval_set, "%llu\n");
845
846 static int adv_channel_map_set(void *data, u64 val)
847 {
848         struct hci_dev *hdev = data;
849
850         if (val < 0x01 || val > 0x07)
851                 return -EINVAL;
852
853         hci_dev_lock(hdev);
854         hdev->le_adv_channel_map = val;
855         hci_dev_unlock(hdev);
856
857         return 0;
858 }
859
860 static int adv_channel_map_get(void *data, u64 *val)
861 {
862         struct hci_dev *hdev = data;
863
864         hci_dev_lock(hdev);
865         *val = hdev->le_adv_channel_map;
866         hci_dev_unlock(hdev);
867
868         return 0;
869 }
870
871 DEFINE_SIMPLE_ATTRIBUTE(adv_channel_map_fops, adv_channel_map_get,
872                         adv_channel_map_set, "%llu\n");
873
874 static ssize_t lowpan_read(struct file *file, char __user *user_buf,
875                            size_t count, loff_t *ppos)
876 {
877         struct hci_dev *hdev = file->private_data;
878         char buf[3];
879
880         buf[0] = test_bit(HCI_6LOWPAN_ENABLED, &hdev->dev_flags) ? 'Y' : 'N';
881         buf[1] = '\n';
882         buf[2] = '\0';
883         return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
884 }
885
886 static ssize_t lowpan_write(struct file *fp, const char __user *user_buffer,
887                             size_t count, loff_t *position)
888 {
889         struct hci_dev *hdev = fp->private_data;
890         bool enable;
891         char buf[32];
892         size_t buf_size = min(count, (sizeof(buf)-1));
893
894         if (copy_from_user(buf, user_buffer, buf_size))
895                 return -EFAULT;
896
897         buf[buf_size] = '\0';
898
899         if (strtobool(buf, &enable) < 0)
900                 return -EINVAL;
901
902         if (enable == test_bit(HCI_6LOWPAN_ENABLED, &hdev->dev_flags))
903                 return -EALREADY;
904
905         change_bit(HCI_6LOWPAN_ENABLED, &hdev->dev_flags);
906
907         return count;
908 }
909
910 static const struct file_operations lowpan_debugfs_fops = {
911         .open           = simple_open,
912         .read           = lowpan_read,
913         .write          = lowpan_write,
914         .llseek         = default_llseek,
915 };
916
917 static int le_auto_conn_show(struct seq_file *sf, void *ptr)
918 {
919         struct hci_dev *hdev = sf->private;
920         struct hci_conn_params *p;
921
922         hci_dev_lock(hdev);
923
924         list_for_each_entry(p, &hdev->le_conn_params, list) {
925                 seq_printf(sf, "%pMR %u %u\n", &p->addr, p->addr_type,
926                            p->auto_connect);
927         }
928
929         hci_dev_unlock(hdev);
930
931         return 0;
932 }
933
934 static int le_auto_conn_open(struct inode *inode, struct file *file)
935 {
936         return single_open(file, le_auto_conn_show, inode->i_private);
937 }
938
939 static ssize_t le_auto_conn_write(struct file *file, const char __user *data,
940                                   size_t count, loff_t *offset)
941 {
942         struct seq_file *sf = file->private_data;
943         struct hci_dev *hdev = sf->private;
944         u8 auto_connect = 0;
945         bdaddr_t addr;
946         u8 addr_type;
947         char *buf;
948         int err = 0;
949         int n;
950
951         /* Don't allow partial write */
952         if (*offset != 0)
953                 return -EINVAL;
954
955         if (count < 3)
956                 return -EINVAL;
957
958         buf = kzalloc(count, GFP_KERNEL);
959         if (!buf)
960                 return -ENOMEM;
961
962         if (copy_from_user(buf, data, count)) {
963                 err = -EFAULT;
964                 goto done;
965         }
966
967         if (memcmp(buf, "add", 3) == 0) {
968                 n = sscanf(&buf[4], "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx %hhu %hhu",
969                            &addr.b[5], &addr.b[4], &addr.b[3], &addr.b[2],
970                            &addr.b[1], &addr.b[0], &addr_type,
971                            &auto_connect);
972
973                 if (n < 7) {
974                         err = -EINVAL;
975                         goto done;
976                 }
977
978                 hci_dev_lock(hdev);
979                 err = hci_conn_params_add(hdev, &addr, addr_type, auto_connect,
980                                           hdev->le_conn_min_interval,
981                                           hdev->le_conn_max_interval);
982                 hci_dev_unlock(hdev);
983
984                 if (err)
985                         goto done;
986         } else if (memcmp(buf, "del", 3) == 0) {
987                 n = sscanf(&buf[4], "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx %hhu",
988                            &addr.b[5], &addr.b[4], &addr.b[3], &addr.b[2],
989                            &addr.b[1], &addr.b[0], &addr_type);
990
991                 if (n < 7) {
992                         err = -EINVAL;
993                         goto done;
994                 }
995
996                 hci_dev_lock(hdev);
997                 hci_conn_params_del(hdev, &addr, addr_type);
998                 hci_dev_unlock(hdev);
999         } else if (memcmp(buf, "clr", 3) == 0) {
1000                 hci_dev_lock(hdev);
1001                 hci_conn_params_clear(hdev);
1002                 hci_pend_le_conns_clear(hdev);
1003                 hci_update_background_scan(hdev);
1004                 hci_dev_unlock(hdev);
1005         } else {
1006                 err = -EINVAL;
1007         }
1008
1009 done:
1010         kfree(buf);
1011
1012         if (err)
1013                 return err;
1014         else
1015                 return count;
1016 }
1017
1018 static const struct file_operations le_auto_conn_fops = {
1019         .open           = le_auto_conn_open,
1020         .read           = seq_read,
1021         .write          = le_auto_conn_write,
1022         .llseek         = seq_lseek,
1023         .release        = single_release,
1024 };
1025
1026 /* ---- HCI requests ---- */
1027
1028 static void hci_req_sync_complete(struct hci_dev *hdev, u8 result)
1029 {
1030         BT_DBG("%s result 0x%2.2x", hdev->name, result);
1031
1032         if (hdev->req_status == HCI_REQ_PEND) {
1033                 hdev->req_result = result;
1034                 hdev->req_status = HCI_REQ_DONE;
1035                 wake_up_interruptible(&hdev->req_wait_q);
1036         }
1037 }
1038
1039 static void hci_req_cancel(struct hci_dev *hdev, int err)
1040 {
1041         BT_DBG("%s err 0x%2.2x", hdev->name, err);
1042
1043         if (hdev->req_status == HCI_REQ_PEND) {
1044                 hdev->req_result = err;
1045                 hdev->req_status = HCI_REQ_CANCELED;
1046                 wake_up_interruptible(&hdev->req_wait_q);
1047         }
1048 }
1049
1050 static struct sk_buff *hci_get_cmd_complete(struct hci_dev *hdev, u16 opcode,
1051                                             u8 event)
1052 {
1053         struct hci_ev_cmd_complete *ev;
1054         struct hci_event_hdr *hdr;
1055         struct sk_buff *skb;
1056
1057         hci_dev_lock(hdev);
1058
1059         skb = hdev->recv_evt;
1060         hdev->recv_evt = NULL;
1061
1062         hci_dev_unlock(hdev);
1063
1064         if (!skb)
1065                 return ERR_PTR(-ENODATA);
1066
1067         if (skb->len < sizeof(*hdr)) {
1068                 BT_ERR("Too short HCI event");
1069                 goto failed;
1070         }
1071
1072         hdr = (void *) skb->data;
1073         skb_pull(skb, HCI_EVENT_HDR_SIZE);
1074
1075         if (event) {
1076                 if (hdr->evt != event)
1077                         goto failed;
1078                 return skb;
1079         }
1080
1081         if (hdr->evt != HCI_EV_CMD_COMPLETE) {
1082                 BT_DBG("Last event is not cmd complete (0x%2.2x)", hdr->evt);
1083                 goto failed;
1084         }
1085
1086         if (skb->len < sizeof(*ev)) {
1087                 BT_ERR("Too short cmd_complete event");
1088                 goto failed;
1089         }
1090
1091         ev = (void *) skb->data;
1092         skb_pull(skb, sizeof(*ev));
1093
1094         if (opcode == __le16_to_cpu(ev->opcode))
1095                 return skb;
1096
1097         BT_DBG("opcode doesn't match (0x%2.2x != 0x%2.2x)", opcode,
1098                __le16_to_cpu(ev->opcode));
1099
1100 failed:
1101         kfree_skb(skb);
1102         return ERR_PTR(-ENODATA);
1103 }
1104
1105 struct sk_buff *__hci_cmd_sync_ev(struct hci_dev *hdev, u16 opcode, u32 plen,
1106                                   const void *param, u8 event, u32 timeout)
1107 {
1108         DECLARE_WAITQUEUE(wait, current);
1109         struct hci_request req;
1110         int err = 0;
1111
1112         BT_DBG("%s", hdev->name);
1113
1114         hci_req_init(&req, hdev);
1115
1116         hci_req_add_ev(&req, opcode, plen, param, event);
1117
1118         hdev->req_status = HCI_REQ_PEND;
1119
1120         err = hci_req_run(&req, hci_req_sync_complete);
1121         if (err < 0)
1122                 return ERR_PTR(err);
1123
1124         add_wait_queue(&hdev->req_wait_q, &wait);
1125         set_current_state(TASK_INTERRUPTIBLE);
1126
1127         schedule_timeout(timeout);
1128
1129         remove_wait_queue(&hdev->req_wait_q, &wait);
1130
1131         if (signal_pending(current))
1132                 return ERR_PTR(-EINTR);
1133
1134         switch (hdev->req_status) {
1135         case HCI_REQ_DONE:
1136                 err = -bt_to_errno(hdev->req_result);
1137                 break;
1138
1139         case HCI_REQ_CANCELED:
1140                 err = -hdev->req_result;
1141                 break;
1142
1143         default:
1144                 err = -ETIMEDOUT;
1145                 break;
1146         }
1147
1148         hdev->req_status = hdev->req_result = 0;
1149
1150         BT_DBG("%s end: err %d", hdev->name, err);
1151
1152         if (err < 0)
1153                 return ERR_PTR(err);
1154
1155         return hci_get_cmd_complete(hdev, opcode, event);
1156 }
1157 EXPORT_SYMBOL(__hci_cmd_sync_ev);
1158
1159 struct sk_buff *__hci_cmd_sync(struct hci_dev *hdev, u16 opcode, u32 plen,
1160                                const void *param, u32 timeout)
1161 {
1162         return __hci_cmd_sync_ev(hdev, opcode, plen, param, 0, timeout);
1163 }
1164 EXPORT_SYMBOL(__hci_cmd_sync);
1165
1166 /* Execute request and wait for completion. */
1167 static int __hci_req_sync(struct hci_dev *hdev,
1168                           void (*func)(struct hci_request *req,
1169                                       unsigned long opt),
1170                           unsigned long opt, __u32 timeout)
1171 {
1172         struct hci_request req;
1173         DECLARE_WAITQUEUE(wait, current);
1174         int err = 0;
1175
1176         BT_DBG("%s start", hdev->name);
1177
1178         hci_req_init(&req, hdev);
1179
1180         hdev->req_status = HCI_REQ_PEND;
1181
1182         func(&req, opt);
1183
1184         err = hci_req_run(&req, hci_req_sync_complete);
1185         if (err < 0) {
1186                 hdev->req_status = 0;
1187
1188                 /* ENODATA means the HCI request command queue is empty.
1189                  * This can happen when a request with conditionals doesn't
1190                  * trigger any commands to be sent. This is normal behavior
1191                  * and should not trigger an error return.
1192                  */
1193                 if (err == -ENODATA)
1194                         return 0;
1195
1196                 return err;
1197         }
1198
1199         add_wait_queue(&hdev->req_wait_q, &wait);
1200         set_current_state(TASK_INTERRUPTIBLE);
1201
1202         schedule_timeout(timeout);
1203
1204         remove_wait_queue(&hdev->req_wait_q, &wait);
1205
1206         if (signal_pending(current))
1207                 return -EINTR;
1208
1209         switch (hdev->req_status) {
1210         case HCI_REQ_DONE:
1211                 err = -bt_to_errno(hdev->req_result);
1212                 break;
1213
1214         case HCI_REQ_CANCELED:
1215                 err = -hdev->req_result;
1216                 break;
1217
1218         default:
1219                 err = -ETIMEDOUT;
1220                 break;
1221         }
1222
1223         hdev->req_status = hdev->req_result = 0;
1224
1225         BT_DBG("%s end: err %d", hdev->name, err);
1226
1227         return err;
1228 }
1229
1230 static int hci_req_sync(struct hci_dev *hdev,
1231                         void (*req)(struct hci_request *req,
1232                                     unsigned long opt),
1233                         unsigned long opt, __u32 timeout)
1234 {
1235         int ret;
1236
1237         if (!test_bit(HCI_UP, &hdev->flags))
1238                 return -ENETDOWN;
1239
1240         /* Serialize all requests */
1241         hci_req_lock(hdev);
1242         ret = __hci_req_sync(hdev, req, opt, timeout);
1243         hci_req_unlock(hdev);
1244
1245         return ret;
1246 }
1247
1248 static void hci_reset_req(struct hci_request *req, unsigned long opt)
1249 {
1250         BT_DBG("%s %ld", req->hdev->name, opt);
1251
1252         /* Reset device */
1253         set_bit(HCI_RESET, &req->hdev->flags);
1254         hci_req_add(req, HCI_OP_RESET, 0, NULL);
1255 }
1256
1257 static void bredr_init(struct hci_request *req)
1258 {
1259         req->hdev->flow_ctl_mode = HCI_FLOW_CTL_MODE_PACKET_BASED;
1260
1261         /* Read Local Supported Features */
1262         hci_req_add(req, HCI_OP_READ_LOCAL_FEATURES, 0, NULL);
1263
1264         /* Read Local Version */
1265         hci_req_add(req, HCI_OP_READ_LOCAL_VERSION, 0, NULL);
1266
1267         /* Read BD Address */
1268         hci_req_add(req, HCI_OP_READ_BD_ADDR, 0, NULL);
1269 }
1270
1271 static void amp_init(struct hci_request *req)
1272 {
1273         req->hdev->flow_ctl_mode = HCI_FLOW_CTL_MODE_BLOCK_BASED;
1274
1275         /* Read Local Version */
1276         hci_req_add(req, HCI_OP_READ_LOCAL_VERSION, 0, NULL);
1277
1278         /* Read Local Supported Commands */
1279         hci_req_add(req, HCI_OP_READ_LOCAL_COMMANDS, 0, NULL);
1280
1281         /* Read Local Supported Features */
1282         hci_req_add(req, HCI_OP_READ_LOCAL_FEATURES, 0, NULL);
1283
1284         /* Read Local AMP Info */
1285         hci_req_add(req, HCI_OP_READ_LOCAL_AMP_INFO, 0, NULL);
1286
1287         /* Read Data Blk size */
1288         hci_req_add(req, HCI_OP_READ_DATA_BLOCK_SIZE, 0, NULL);
1289
1290         /* Read Flow Control Mode */
1291         hci_req_add(req, HCI_OP_READ_FLOW_CONTROL_MODE, 0, NULL);
1292
1293         /* Read Location Data */
1294         hci_req_add(req, HCI_OP_READ_LOCATION_DATA, 0, NULL);
1295 }
1296
1297 static void hci_init1_req(struct hci_request *req, unsigned long opt)
1298 {
1299         struct hci_dev *hdev = req->hdev;
1300
1301         BT_DBG("%s %ld", hdev->name, opt);
1302
1303         /* Reset */
1304         if (!test_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks))
1305                 hci_reset_req(req, 0);
1306
1307         switch (hdev->dev_type) {
1308         case HCI_BREDR:
1309                 bredr_init(req);
1310                 break;
1311
1312         case HCI_AMP:
1313                 amp_init(req);
1314                 break;
1315
1316         default:
1317                 BT_ERR("Unknown device type %d", hdev->dev_type);
1318                 break;
1319         }
1320 }
1321
1322 static void bredr_setup(struct hci_request *req)
1323 {
1324         struct hci_dev *hdev = req->hdev;
1325
1326         __le16 param;
1327         __u8 flt_type;
1328
1329         /* Read Buffer Size (ACL mtu, max pkt, etc.) */
1330         hci_req_add(req, HCI_OP_READ_BUFFER_SIZE, 0, NULL);
1331
1332         /* Read Class of Device */
1333         hci_req_add(req, HCI_OP_READ_CLASS_OF_DEV, 0, NULL);
1334
1335         /* Read Local Name */
1336         hci_req_add(req, HCI_OP_READ_LOCAL_NAME, 0, NULL);
1337
1338         /* Read Voice Setting */
1339         hci_req_add(req, HCI_OP_READ_VOICE_SETTING, 0, NULL);
1340
1341         /* Read Number of Supported IAC */
1342         hci_req_add(req, HCI_OP_READ_NUM_SUPPORTED_IAC, 0, NULL);
1343
1344         /* Read Current IAC LAP */
1345         hci_req_add(req, HCI_OP_READ_CURRENT_IAC_LAP, 0, NULL);
1346
1347         /* Clear Event Filters */
1348         flt_type = HCI_FLT_CLEAR_ALL;
1349         hci_req_add(req, HCI_OP_SET_EVENT_FLT, 1, &flt_type);
1350
1351         /* Connection accept timeout ~20 secs */
1352         param = cpu_to_le16(0x7d00);
1353         hci_req_add(req, HCI_OP_WRITE_CA_TIMEOUT, 2, &param);
1354
1355         /* AVM Berlin (31), aka "BlueFRITZ!", reports version 1.2,
1356          * but it does not support page scan related HCI commands.
1357          */
1358         if (hdev->manufacturer != 31 && hdev->hci_ver > BLUETOOTH_VER_1_1) {
1359                 hci_req_add(req, HCI_OP_READ_PAGE_SCAN_ACTIVITY, 0, NULL);
1360                 hci_req_add(req, HCI_OP_READ_PAGE_SCAN_TYPE, 0, NULL);
1361         }
1362 }
1363
1364 static void le_setup(struct hci_request *req)
1365 {
1366         struct hci_dev *hdev = req->hdev;
1367
1368         /* Read LE Buffer Size */
1369         hci_req_add(req, HCI_OP_LE_READ_BUFFER_SIZE, 0, NULL);
1370
1371         /* Read LE Local Supported Features */
1372         hci_req_add(req, HCI_OP_LE_READ_LOCAL_FEATURES, 0, NULL);
1373
1374         /* Read LE Supported States */
1375         hci_req_add(req, HCI_OP_LE_READ_SUPPORTED_STATES, 0, NULL);
1376
1377         /* Read LE Advertising Channel TX Power */
1378         hci_req_add(req, HCI_OP_LE_READ_ADV_TX_POWER, 0, NULL);
1379
1380         /* Read LE White List Size */
1381         hci_req_add(req, HCI_OP_LE_READ_WHITE_LIST_SIZE, 0, NULL);
1382
1383         /* Clear LE White List */
1384         hci_req_add(req, HCI_OP_LE_CLEAR_WHITE_LIST, 0, NULL);
1385
1386         /* LE-only controllers have LE implicitly enabled */
1387         if (!lmp_bredr_capable(hdev))
1388                 set_bit(HCI_LE_ENABLED, &hdev->dev_flags);
1389 }
1390
1391 static u8 hci_get_inquiry_mode(struct hci_dev *hdev)
1392 {
1393         if (lmp_ext_inq_capable(hdev))
1394                 return 0x02;
1395
1396         if (lmp_inq_rssi_capable(hdev))
1397                 return 0x01;
1398
1399         if (hdev->manufacturer == 11 && hdev->hci_rev == 0x00 &&
1400             hdev->lmp_subver == 0x0757)
1401                 return 0x01;
1402
1403         if (hdev->manufacturer == 15) {
1404                 if (hdev->hci_rev == 0x03 && hdev->lmp_subver == 0x6963)
1405                         return 0x01;
1406                 if (hdev->hci_rev == 0x09 && hdev->lmp_subver == 0x6963)
1407                         return 0x01;
1408                 if (hdev->hci_rev == 0x00 && hdev->lmp_subver == 0x6965)
1409                         return 0x01;
1410         }
1411
1412         if (hdev->manufacturer == 31 && hdev->hci_rev == 0x2005 &&
1413             hdev->lmp_subver == 0x1805)
1414                 return 0x01;
1415
1416         return 0x00;
1417 }
1418
1419 static void hci_setup_inquiry_mode(struct hci_request *req)
1420 {
1421         u8 mode;
1422
1423         mode = hci_get_inquiry_mode(req->hdev);
1424
1425         hci_req_add(req, HCI_OP_WRITE_INQUIRY_MODE, 1, &mode);
1426 }
1427
1428 static void hci_setup_event_mask(struct hci_request *req)
1429 {
1430         struct hci_dev *hdev = req->hdev;
1431
1432         /* The second byte is 0xff instead of 0x9f (two reserved bits
1433          * disabled) since a Broadcom 1.2 dongle doesn't respond to the
1434          * command otherwise.
1435          */
1436         u8 events[8] = { 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0x00, 0x00 };
1437
1438         /* CSR 1.1 dongles does not accept any bitfield so don't try to set
1439          * any event mask for pre 1.2 devices.
1440          */
1441         if (hdev->hci_ver < BLUETOOTH_VER_1_2)
1442                 return;
1443
1444         if (lmp_bredr_capable(hdev)) {
1445                 events[4] |= 0x01; /* Flow Specification Complete */
1446                 events[4] |= 0x02; /* Inquiry Result with RSSI */
1447                 events[4] |= 0x04; /* Read Remote Extended Features Complete */
1448                 events[5] |= 0x08; /* Synchronous Connection Complete */
1449                 events[5] |= 0x10; /* Synchronous Connection Changed */
1450         } else {
1451                 /* Use a different default for LE-only devices */
1452                 memset(events, 0, sizeof(events));
1453                 events[0] |= 0x10; /* Disconnection Complete */
1454                 events[0] |= 0x80; /* Encryption Change */
1455                 events[1] |= 0x08; /* Read Remote Version Information Complete */
1456                 events[1] |= 0x20; /* Command Complete */
1457                 events[1] |= 0x40; /* Command Status */
1458                 events[1] |= 0x80; /* Hardware Error */
1459                 events[2] |= 0x04; /* Number of Completed Packets */
1460                 events[3] |= 0x02; /* Data Buffer Overflow */
1461                 events[5] |= 0x80; /* Encryption Key Refresh Complete */
1462         }
1463
1464         if (lmp_inq_rssi_capable(hdev))
1465                 events[4] |= 0x02; /* Inquiry Result with RSSI */
1466
1467         if (lmp_sniffsubr_capable(hdev))
1468                 events[5] |= 0x20; /* Sniff Subrating */
1469
1470         if (lmp_pause_enc_capable(hdev))
1471                 events[5] |= 0x80; /* Encryption Key Refresh Complete */
1472
1473         if (lmp_ext_inq_capable(hdev))
1474                 events[5] |= 0x40; /* Extended Inquiry Result */
1475
1476         if (lmp_no_flush_capable(hdev))
1477                 events[7] |= 0x01; /* Enhanced Flush Complete */
1478
1479         if (lmp_lsto_capable(hdev))
1480                 events[6] |= 0x80; /* Link Supervision Timeout Changed */
1481
1482         if (lmp_ssp_capable(hdev)) {
1483                 events[6] |= 0x01;      /* IO Capability Request */
1484                 events[6] |= 0x02;      /* IO Capability Response */
1485                 events[6] |= 0x04;      /* User Confirmation Request */
1486                 events[6] |= 0x08;      /* User Passkey Request */
1487                 events[6] |= 0x10;      /* Remote OOB Data Request */
1488                 events[6] |= 0x20;      /* Simple Pairing Complete */
1489                 events[7] |= 0x04;      /* User Passkey Notification */
1490                 events[7] |= 0x08;      /* Keypress Notification */
1491                 events[7] |= 0x10;      /* Remote Host Supported
1492                                          * Features Notification
1493                                          */
1494         }
1495
1496         if (lmp_le_capable(hdev))
1497                 events[7] |= 0x20;      /* LE Meta-Event */
1498
1499         hci_req_add(req, HCI_OP_SET_EVENT_MASK, sizeof(events), events);
1500
1501         if (lmp_le_capable(hdev)) {
1502                 memset(events, 0, sizeof(events));
1503                 events[0] = 0x1f;
1504                 hci_req_add(req, HCI_OP_LE_SET_EVENT_MASK,
1505                             sizeof(events), events);
1506         }
1507 }
1508
1509 static void hci_init2_req(struct hci_request *req, unsigned long opt)
1510 {
1511         struct hci_dev *hdev = req->hdev;
1512
1513         if (lmp_bredr_capable(hdev))
1514                 bredr_setup(req);
1515         else
1516                 clear_bit(HCI_BREDR_ENABLED, &hdev->dev_flags);
1517
1518         if (lmp_le_capable(hdev))
1519                 le_setup(req);
1520
1521         hci_setup_event_mask(req);
1522
1523         /* AVM Berlin (31), aka "BlueFRITZ!", doesn't support the read
1524          * local supported commands HCI command.
1525          */
1526         if (hdev->manufacturer != 31 && hdev->hci_ver > BLUETOOTH_VER_1_1)
1527                 hci_req_add(req, HCI_OP_READ_LOCAL_COMMANDS, 0, NULL);
1528
1529         if (lmp_ssp_capable(hdev)) {
1530                 /* When SSP is available, then the host features page
1531                  * should also be available as well. However some
1532                  * controllers list the max_page as 0 as long as SSP
1533                  * has not been enabled. To achieve proper debugging
1534                  * output, force the minimum max_page to 1 at least.
1535                  */
1536                 hdev->max_page = 0x01;
1537
1538                 if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
1539                         u8 mode = 0x01;
1540                         hci_req_add(req, HCI_OP_WRITE_SSP_MODE,
1541                                     sizeof(mode), &mode);
1542                 } else {
1543                         struct hci_cp_write_eir cp;
1544
1545                         memset(hdev->eir, 0, sizeof(hdev->eir));
1546                         memset(&cp, 0, sizeof(cp));
1547
1548                         hci_req_add(req, HCI_OP_WRITE_EIR, sizeof(cp), &cp);
1549                 }
1550         }
1551
1552         if (lmp_inq_rssi_capable(hdev))
1553                 hci_setup_inquiry_mode(req);
1554
1555         if (lmp_inq_tx_pwr_capable(hdev))
1556                 hci_req_add(req, HCI_OP_READ_INQ_RSP_TX_POWER, 0, NULL);
1557
1558         if (lmp_ext_feat_capable(hdev)) {
1559                 struct hci_cp_read_local_ext_features cp;
1560
1561                 cp.page = 0x01;
1562                 hci_req_add(req, HCI_OP_READ_LOCAL_EXT_FEATURES,
1563                             sizeof(cp), &cp);
1564         }
1565
1566         if (test_bit(HCI_LINK_SECURITY, &hdev->dev_flags)) {
1567                 u8 enable = 1;
1568                 hci_req_add(req, HCI_OP_WRITE_AUTH_ENABLE, sizeof(enable),
1569                             &enable);
1570         }
1571 }
1572
1573 static void hci_setup_link_policy(struct hci_request *req)
1574 {
1575         struct hci_dev *hdev = req->hdev;
1576         struct hci_cp_write_def_link_policy cp;
1577         u16 link_policy = 0;
1578
1579         if (lmp_rswitch_capable(hdev))
1580                 link_policy |= HCI_LP_RSWITCH;
1581         if (lmp_hold_capable(hdev))
1582                 link_policy |= HCI_LP_HOLD;
1583         if (lmp_sniff_capable(hdev))
1584                 link_policy |= HCI_LP_SNIFF;
1585         if (lmp_park_capable(hdev))
1586                 link_policy |= HCI_LP_PARK;
1587
1588         cp.policy = cpu_to_le16(link_policy);
1589         hci_req_add(req, HCI_OP_WRITE_DEF_LINK_POLICY, sizeof(cp), &cp);
1590 }
1591
1592 static void hci_set_le_support(struct hci_request *req)
1593 {
1594         struct hci_dev *hdev = req->hdev;
1595         struct hci_cp_write_le_host_supported cp;
1596
1597         /* LE-only devices do not support explicit enablement */
1598         if (!lmp_bredr_capable(hdev))
1599                 return;
1600
1601         memset(&cp, 0, sizeof(cp));
1602
1603         if (test_bit(HCI_LE_ENABLED, &hdev->dev_flags)) {
1604                 cp.le = 0x01;
1605                 cp.simul = lmp_le_br_capable(hdev);
1606         }
1607
1608         if (cp.le != lmp_host_le_capable(hdev))
1609                 hci_req_add(req, HCI_OP_WRITE_LE_HOST_SUPPORTED, sizeof(cp),
1610                             &cp);
1611 }
1612
1613 static void hci_set_event_mask_page_2(struct hci_request *req)
1614 {
1615         struct hci_dev *hdev = req->hdev;
1616         u8 events[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
1617
1618         /* If Connectionless Slave Broadcast master role is supported
1619          * enable all necessary events for it.
1620          */
1621         if (lmp_csb_master_capable(hdev)) {
1622                 events[1] |= 0x40;      /* Triggered Clock Capture */
1623                 events[1] |= 0x80;      /* Synchronization Train Complete */
1624                 events[2] |= 0x10;      /* Slave Page Response Timeout */
1625                 events[2] |= 0x20;      /* CSB Channel Map Change */
1626         }
1627
1628         /* If Connectionless Slave Broadcast slave role is supported
1629          * enable all necessary events for it.
1630          */
1631         if (lmp_csb_slave_capable(hdev)) {
1632                 events[2] |= 0x01;      /* Synchronization Train Received */
1633                 events[2] |= 0x02;      /* CSB Receive */
1634                 events[2] |= 0x04;      /* CSB Timeout */
1635                 events[2] |= 0x08;      /* Truncated Page Complete */
1636         }
1637
1638         /* Enable Authenticated Payload Timeout Expired event if supported */
1639         if (lmp_ping_capable(hdev))
1640                 events[2] |= 0x80;
1641
1642         hci_req_add(req, HCI_OP_SET_EVENT_MASK_PAGE_2, sizeof(events), events);
1643 }
1644
1645 static void hci_init3_req(struct hci_request *req, unsigned long opt)
1646 {
1647         struct hci_dev *hdev = req->hdev;
1648         u8 p;
1649
1650         /* Some Broadcom based Bluetooth controllers do not support the
1651          * Delete Stored Link Key command. They are clearly indicating its
1652          * absence in the bit mask of supported commands.
1653          *
1654          * Check the supported commands and only if the the command is marked
1655          * as supported send it. If not supported assume that the controller
1656          * does not have actual support for stored link keys which makes this
1657          * command redundant anyway.
1658          *
1659          * Some controllers indicate that they support handling deleting
1660          * stored link keys, but they don't. The quirk lets a driver
1661          * just disable this command.
1662          */
1663         if (hdev->commands[6] & 0x80 &&
1664             !test_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks)) {
1665                 struct hci_cp_delete_stored_link_key cp;
1666
1667                 bacpy(&cp.bdaddr, BDADDR_ANY);
1668                 cp.delete_all = 0x01;
1669                 hci_req_add(req, HCI_OP_DELETE_STORED_LINK_KEY,
1670                             sizeof(cp), &cp);
1671         }
1672
1673         if (hdev->commands[5] & 0x10)
1674                 hci_setup_link_policy(req);
1675
1676         if (lmp_le_capable(hdev))
1677                 hci_set_le_support(req);
1678
1679         /* Read features beyond page 1 if available */
1680         for (p = 2; p < HCI_MAX_PAGES && p <= hdev->max_page; p++) {
1681                 struct hci_cp_read_local_ext_features cp;
1682
1683                 cp.page = p;
1684                 hci_req_add(req, HCI_OP_READ_LOCAL_EXT_FEATURES,
1685                             sizeof(cp), &cp);
1686         }
1687 }
1688
1689 static void hci_init4_req(struct hci_request *req, unsigned long opt)
1690 {
1691         struct hci_dev *hdev = req->hdev;
1692
1693         /* Set event mask page 2 if the HCI command for it is supported */
1694         if (hdev->commands[22] & 0x04)
1695                 hci_set_event_mask_page_2(req);
1696
1697         /* Check for Synchronization Train support */
1698         if (lmp_sync_train_capable(hdev))
1699                 hci_req_add(req, HCI_OP_READ_SYNC_TRAIN_PARAMS, 0, NULL);
1700
1701         /* Enable Secure Connections if supported and configured */
1702         if ((lmp_sc_capable(hdev) ||
1703              test_bit(HCI_FORCE_SC, &hdev->dev_flags)) &&
1704             test_bit(HCI_SC_ENABLED, &hdev->dev_flags)) {
1705                 u8 support = 0x01;
1706                 hci_req_add(req, HCI_OP_WRITE_SC_SUPPORT,
1707                             sizeof(support), &support);
1708         }
1709 }
1710
1711 static int __hci_init(struct hci_dev *hdev)
1712 {
1713         int err;
1714
1715         err = __hci_req_sync(hdev, hci_init1_req, 0, HCI_INIT_TIMEOUT);
1716         if (err < 0)
1717                 return err;
1718
1719         /* The Device Under Test (DUT) mode is special and available for
1720          * all controller types. So just create it early on.
1721          */
1722         if (test_bit(HCI_SETUP, &hdev->dev_flags)) {
1723                 debugfs_create_file("dut_mode", 0644, hdev->debugfs, hdev,
1724                                     &dut_mode_fops);
1725         }
1726
1727         /* HCI_BREDR covers both single-mode LE, BR/EDR and dual-mode
1728          * BR/EDR/LE type controllers. AMP controllers only need the
1729          * first stage init.
1730          */
1731         if (hdev->dev_type != HCI_BREDR)
1732                 return 0;
1733
1734         err = __hci_req_sync(hdev, hci_init2_req, 0, HCI_INIT_TIMEOUT);
1735         if (err < 0)
1736                 return err;
1737
1738         err = __hci_req_sync(hdev, hci_init3_req, 0, HCI_INIT_TIMEOUT);
1739         if (err < 0)
1740                 return err;
1741
1742         err = __hci_req_sync(hdev, hci_init4_req, 0, HCI_INIT_TIMEOUT);
1743         if (err < 0)
1744                 return err;
1745
1746         /* Only create debugfs entries during the initial setup
1747          * phase and not every time the controller gets powered on.
1748          */
1749         if (!test_bit(HCI_SETUP, &hdev->dev_flags))
1750                 return 0;
1751
1752         debugfs_create_file("features", 0444, hdev->debugfs, hdev,
1753                             &features_fops);
1754         debugfs_create_u16("manufacturer", 0444, hdev->debugfs,
1755                            &hdev->manufacturer);
1756         debugfs_create_u8("hci_version", 0444, hdev->debugfs, &hdev->hci_ver);
1757         debugfs_create_u16("hci_revision", 0444, hdev->debugfs, &hdev->hci_rev);
1758         debugfs_create_file("blacklist", 0444, hdev->debugfs, hdev,
1759                             &blacklist_fops);
1760         debugfs_create_file("uuids", 0444, hdev->debugfs, hdev, &uuids_fops);
1761
1762         if (lmp_bredr_capable(hdev)) {
1763                 debugfs_create_file("inquiry_cache", 0444, hdev->debugfs,
1764                                     hdev, &inquiry_cache_fops);
1765                 debugfs_create_file("link_keys", 0400, hdev->debugfs,
1766                                     hdev, &link_keys_fops);
1767                 debugfs_create_file("dev_class", 0444, hdev->debugfs,
1768                                     hdev, &dev_class_fops);
1769                 debugfs_create_file("voice_setting", 0444, hdev->debugfs,
1770                                     hdev, &voice_setting_fops);
1771         }
1772
1773         if (lmp_ssp_capable(hdev)) {
1774                 debugfs_create_file("auto_accept_delay", 0644, hdev->debugfs,
1775                                     hdev, &auto_accept_delay_fops);
1776                 debugfs_create_file("ssp_debug_mode", 0644, hdev->debugfs,
1777                                     hdev, &ssp_debug_mode_fops);
1778                 debugfs_create_file("force_sc_support", 0644, hdev->debugfs,
1779                                     hdev, &force_sc_support_fops);
1780                 debugfs_create_file("sc_only_mode", 0444, hdev->debugfs,
1781                                     hdev, &sc_only_mode_fops);
1782         }
1783
1784         if (lmp_sniff_capable(hdev)) {
1785                 debugfs_create_file("idle_timeout", 0644, hdev->debugfs,
1786                                     hdev, &idle_timeout_fops);
1787                 debugfs_create_file("sniff_min_interval", 0644, hdev->debugfs,
1788                                     hdev, &sniff_min_interval_fops);
1789                 debugfs_create_file("sniff_max_interval", 0644, hdev->debugfs,
1790                                     hdev, &sniff_max_interval_fops);
1791         }
1792
1793         if (lmp_le_capable(hdev)) {
1794                 debugfs_create_file("identity", 0400, hdev->debugfs,
1795                                     hdev, &identity_fops);
1796                 debugfs_create_file("rpa_timeout", 0644, hdev->debugfs,
1797                                     hdev, &rpa_timeout_fops);
1798                 debugfs_create_file("random_address", 0444, hdev->debugfs,
1799                                     hdev, &random_address_fops);
1800                 debugfs_create_file("static_address", 0444, hdev->debugfs,
1801                                     hdev, &static_address_fops);
1802
1803                 /* For controllers with a public address, provide a debug
1804                  * option to force the usage of the configured static
1805                  * address. By default the public address is used.
1806                  */
1807                 if (bacmp(&hdev->bdaddr, BDADDR_ANY))
1808                         debugfs_create_file("force_static_address", 0644,
1809                                             hdev->debugfs, hdev,
1810                                             &force_static_address_fops);
1811
1812                 debugfs_create_u8("white_list_size", 0444, hdev->debugfs,
1813                                   &hdev->le_white_list_size);
1814                 debugfs_create_file("white_list", 0444, hdev->debugfs, hdev,
1815                                     &white_list_fops);
1816                 debugfs_create_file("identity_resolving_keys", 0400,
1817                                     hdev->debugfs, hdev,
1818                                     &identity_resolving_keys_fops);
1819                 debugfs_create_file("long_term_keys", 0400, hdev->debugfs,
1820                                     hdev, &long_term_keys_fops);
1821                 debugfs_create_file("conn_min_interval", 0644, hdev->debugfs,
1822                                     hdev, &conn_min_interval_fops);
1823                 debugfs_create_file("conn_max_interval", 0644, hdev->debugfs,
1824                                     hdev, &conn_max_interval_fops);
1825                 debugfs_create_file("adv_channel_map", 0644, hdev->debugfs,
1826                                     hdev, &adv_channel_map_fops);
1827                 debugfs_create_file("6lowpan", 0644, hdev->debugfs, hdev,
1828                                     &lowpan_debugfs_fops);
1829                 debugfs_create_file("le_auto_conn", 0644, hdev->debugfs, hdev,
1830                                     &le_auto_conn_fops);
1831         }
1832
1833         return 0;
1834 }
1835
1836 static void hci_scan_req(struct hci_request *req, unsigned long opt)
1837 {
1838         __u8 scan = opt;
1839
1840         BT_DBG("%s %x", req->hdev->name, scan);
1841
1842         /* Inquiry and Page scans */
1843         hci_req_add(req, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan);
1844 }
1845
1846 static void hci_auth_req(struct hci_request *req, unsigned long opt)
1847 {
1848         __u8 auth = opt;
1849
1850         BT_DBG("%s %x", req->hdev->name, auth);
1851
1852         /* Authentication */
1853         hci_req_add(req, HCI_OP_WRITE_AUTH_ENABLE, 1, &auth);
1854 }
1855
1856 static void hci_encrypt_req(struct hci_request *req, unsigned long opt)
1857 {
1858         __u8 encrypt = opt;
1859
1860         BT_DBG("%s %x", req->hdev->name, encrypt);
1861
1862         /* Encryption */
1863         hci_req_add(req, HCI_OP_WRITE_ENCRYPT_MODE, 1, &encrypt);
1864 }
1865
1866 static void hci_linkpol_req(struct hci_request *req, unsigned long opt)
1867 {
1868         __le16 policy = cpu_to_le16(opt);
1869
1870         BT_DBG("%s %x", req->hdev->name, policy);
1871
1872         /* Default link policy */
1873         hci_req_add(req, HCI_OP_WRITE_DEF_LINK_POLICY, 2, &policy);
1874 }
1875
1876 /* Get HCI device by index.
1877  * Device is held on return. */
1878 struct hci_dev *hci_dev_get(int index)
1879 {
1880         struct hci_dev *hdev = NULL, *d;
1881
1882         BT_DBG("%d", index);
1883
1884         if (index < 0)
1885                 return NULL;
1886
1887         read_lock(&hci_dev_list_lock);
1888         list_for_each_entry(d, &hci_dev_list, list) {
1889                 if (d->id == index) {
1890                         hdev = hci_dev_hold(d);
1891                         break;
1892                 }
1893         }
1894         read_unlock(&hci_dev_list_lock);
1895         return hdev;
1896 }
1897
1898 /* ---- Inquiry support ---- */
1899
1900 bool hci_discovery_active(struct hci_dev *hdev)
1901 {
1902         struct discovery_state *discov = &hdev->discovery;
1903
1904         switch (discov->state) {
1905         case DISCOVERY_FINDING:
1906         case DISCOVERY_RESOLVING:
1907                 return true;
1908
1909         default:
1910                 return false;
1911         }
1912 }
1913
1914 void hci_discovery_set_state(struct hci_dev *hdev, int state)
1915 {
1916         BT_DBG("%s state %u -> %u", hdev->name, hdev->discovery.state, state);
1917
1918         if (hdev->discovery.state == state)
1919                 return;
1920
1921         switch (state) {
1922         case DISCOVERY_STOPPED:
1923                 hci_update_background_scan(hdev);
1924
1925                 if (hdev->discovery.state != DISCOVERY_STARTING)
1926                         mgmt_discovering(hdev, 0);
1927                 break;
1928         case DISCOVERY_STARTING:
1929                 break;
1930         case DISCOVERY_FINDING:
1931                 mgmt_discovering(hdev, 1);
1932                 break;
1933         case DISCOVERY_RESOLVING:
1934                 break;
1935         case DISCOVERY_STOPPING:
1936                 break;
1937         }
1938
1939         hdev->discovery.state = state;
1940 }
1941
1942 void hci_inquiry_cache_flush(struct hci_dev *hdev)
1943 {
1944         struct discovery_state *cache = &hdev->discovery;
1945         struct inquiry_entry *p, *n;
1946
1947         list_for_each_entry_safe(p, n, &cache->all, all) {
1948                 list_del(&p->all);
1949                 kfree(p);
1950         }
1951
1952         INIT_LIST_HEAD(&cache->unknown);
1953         INIT_LIST_HEAD(&cache->resolve);
1954 }
1955
1956 struct inquiry_entry *hci_inquiry_cache_lookup(struct hci_dev *hdev,
1957                                                bdaddr_t *bdaddr)
1958 {
1959         struct discovery_state *cache = &hdev->discovery;
1960         struct inquiry_entry *e;
1961
1962         BT_DBG("cache %p, %pMR", cache, bdaddr);
1963
1964         list_for_each_entry(e, &cache->all, all) {
1965                 if (!bacmp(&e->data.bdaddr, bdaddr))
1966                         return e;
1967         }
1968
1969         return NULL;
1970 }
1971
1972 struct inquiry_entry *hci_inquiry_cache_lookup_unknown(struct hci_dev *hdev,
1973                                                        bdaddr_t *bdaddr)
1974 {
1975         struct discovery_state *cache = &hdev->discovery;
1976         struct inquiry_entry *e;
1977
1978         BT_DBG("cache %p, %pMR", cache, bdaddr);
1979
1980         list_for_each_entry(e, &cache->unknown, list) {
1981                 if (!bacmp(&e->data.bdaddr, bdaddr))
1982                         return e;
1983         }
1984
1985         return NULL;
1986 }
1987
1988 struct inquiry_entry *hci_inquiry_cache_lookup_resolve(struct hci_dev *hdev,
1989                                                        bdaddr_t *bdaddr,
1990                                                        int state)
1991 {
1992         struct discovery_state *cache = &hdev->discovery;
1993         struct inquiry_entry *e;
1994
1995         BT_DBG("cache %p bdaddr %pMR state %d", cache, bdaddr, state);
1996
1997         list_for_each_entry(e, &cache->resolve, list) {
1998                 if (!bacmp(bdaddr, BDADDR_ANY) && e->name_state == state)
1999                         return e;
2000                 if (!bacmp(&e->data.bdaddr, bdaddr))
2001                         return e;
2002         }
2003
2004         return NULL;
2005 }
2006
2007 void hci_inquiry_cache_update_resolve(struct hci_dev *hdev,
2008                                       struct inquiry_entry *ie)
2009 {
2010         struct discovery_state *cache = &hdev->discovery;
2011         struct list_head *pos = &cache->resolve;
2012         struct inquiry_entry *p;
2013
2014         list_del(&ie->list);
2015
2016         list_for_each_entry(p, &cache->resolve, list) {
2017                 if (p->name_state != NAME_PENDING &&
2018                     abs(p->data.rssi) >= abs(ie->data.rssi))
2019                         break;
2020                 pos = &p->list;
2021         }
2022
2023         list_add(&ie->list, pos);
2024 }
2025
2026 bool hci_inquiry_cache_update(struct hci_dev *hdev, struct inquiry_data *data,
2027                               bool name_known, bool *ssp)
2028 {
2029         struct discovery_state *cache = &hdev->discovery;
2030         struct inquiry_entry *ie;
2031
2032         BT_DBG("cache %p, %pMR", cache, &data->bdaddr);
2033
2034         hci_remove_remote_oob_data(hdev, &data->bdaddr);
2035
2036         if (ssp)
2037                 *ssp = data->ssp_mode;
2038
2039         ie = hci_inquiry_cache_lookup(hdev, &data->bdaddr);
2040         if (ie) {
2041                 if (ie->data.ssp_mode && ssp)
2042                         *ssp = true;
2043
2044                 if (ie->name_state == NAME_NEEDED &&
2045                     data->rssi != ie->data.rssi) {
2046                         ie->data.rssi = data->rssi;
2047                         hci_inquiry_cache_update_resolve(hdev, ie);
2048                 }
2049
2050                 goto update;
2051         }
2052
2053         /* Entry not in the cache. Add new one. */
2054         ie = kzalloc(sizeof(struct inquiry_entry), GFP_ATOMIC);
2055         if (!ie)
2056                 return false;
2057
2058         list_add(&ie->all, &cache->all);
2059
2060         if (name_known) {
2061                 ie->name_state = NAME_KNOWN;
2062         } else {
2063                 ie->name_state = NAME_NOT_KNOWN;
2064                 list_add(&ie->list, &cache->unknown);
2065         }
2066
2067 update:
2068         if (name_known && ie->name_state != NAME_KNOWN &&
2069             ie->name_state != NAME_PENDING) {
2070                 ie->name_state = NAME_KNOWN;
2071                 list_del(&ie->list);
2072         }
2073
2074         memcpy(&ie->data, data, sizeof(*data));
2075         ie->timestamp = jiffies;
2076         cache->timestamp = jiffies;
2077
2078         if (ie->name_state == NAME_NOT_KNOWN)
2079                 return false;
2080
2081         return true;
2082 }
2083
2084 static int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf)
2085 {
2086         struct discovery_state *cache = &hdev->discovery;
2087         struct inquiry_info *info = (struct inquiry_info *) buf;
2088         struct inquiry_entry *e;
2089         int copied = 0;
2090
2091         list_for_each_entry(e, &cache->all, all) {
2092                 struct inquiry_data *data = &e->data;
2093
2094                 if (copied >= num)
2095                         break;
2096
2097                 bacpy(&info->bdaddr, &data->bdaddr);
2098                 info->pscan_rep_mode    = data->pscan_rep_mode;
2099                 info->pscan_period_mode = data->pscan_period_mode;
2100                 info->pscan_mode        = data->pscan_mode;
2101                 memcpy(info->dev_class, data->dev_class, 3);
2102                 info->clock_offset      = data->clock_offset;
2103
2104                 info++;
2105                 copied++;
2106         }
2107
2108         BT_DBG("cache %p, copied %d", cache, copied);
2109         return copied;
2110 }
2111
2112 static void hci_inq_req(struct hci_request *req, unsigned long opt)
2113 {
2114         struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt;
2115         struct hci_dev *hdev = req->hdev;
2116         struct hci_cp_inquiry cp;
2117
2118         BT_DBG("%s", hdev->name);
2119
2120         if (test_bit(HCI_INQUIRY, &hdev->flags))
2121                 return;
2122
2123         /* Start Inquiry */
2124         memcpy(&cp.lap, &ir->lap, 3);
2125         cp.length  = ir->length;
2126         cp.num_rsp = ir->num_rsp;
2127         hci_req_add(req, HCI_OP_INQUIRY, sizeof(cp), &cp);
2128 }
2129
2130 static int wait_inquiry(void *word)
2131 {
2132         schedule();
2133         return signal_pending(current);
2134 }
2135
2136 int hci_inquiry(void __user *arg)
2137 {
2138         __u8 __user *ptr = arg;
2139         struct hci_inquiry_req ir;
2140         struct hci_dev *hdev;
2141         int err = 0, do_inquiry = 0, max_rsp;
2142         long timeo;
2143         __u8 *buf;
2144
2145         if (copy_from_user(&ir, ptr, sizeof(ir)))
2146                 return -EFAULT;
2147
2148         hdev = hci_dev_get(ir.dev_id);
2149         if (!hdev)
2150                 return -ENODEV;
2151
2152         if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
2153                 err = -EBUSY;
2154                 goto done;
2155         }
2156
2157         if (hdev->dev_type != HCI_BREDR) {
2158                 err = -EOPNOTSUPP;
2159                 goto done;
2160         }
2161
2162         if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
2163                 err = -EOPNOTSUPP;
2164                 goto done;
2165         }
2166
2167         hci_dev_lock(hdev);
2168         if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX ||
2169             inquiry_cache_empty(hdev) || ir.flags & IREQ_CACHE_FLUSH) {
2170                 hci_inquiry_cache_flush(hdev);
2171                 do_inquiry = 1;
2172         }
2173         hci_dev_unlock(hdev);
2174
2175         timeo = ir.length * msecs_to_jiffies(2000);
2176
2177         if (do_inquiry) {
2178                 err = hci_req_sync(hdev, hci_inq_req, (unsigned long) &ir,
2179                                    timeo);
2180                 if (err < 0)
2181                         goto done;
2182
2183                 /* Wait until Inquiry procedure finishes (HCI_INQUIRY flag is
2184                  * cleared). If it is interrupted by a signal, return -EINTR.
2185                  */
2186                 if (wait_on_bit(&hdev->flags, HCI_INQUIRY, wait_inquiry,
2187                                 TASK_INTERRUPTIBLE))
2188                         return -EINTR;
2189         }
2190
2191         /* for unlimited number of responses we will use buffer with
2192          * 255 entries
2193          */
2194         max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp;
2195
2196         /* cache_dump can't sleep. Therefore we allocate temp buffer and then
2197          * copy it to the user space.
2198          */
2199         buf = kmalloc(sizeof(struct inquiry_info) * max_rsp, GFP_KERNEL);
2200         if (!buf) {
2201                 err = -ENOMEM;
2202                 goto done;
2203         }
2204
2205         hci_dev_lock(hdev);
2206         ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf);
2207         hci_dev_unlock(hdev);
2208
2209         BT_DBG("num_rsp %d", ir.num_rsp);
2210
2211         if (!copy_to_user(ptr, &ir, sizeof(ir))) {
2212                 ptr += sizeof(ir);
2213                 if (copy_to_user(ptr, buf, sizeof(struct inquiry_info) *
2214                                  ir.num_rsp))
2215                         err = -EFAULT;
2216         } else
2217                 err = -EFAULT;
2218
2219         kfree(buf);
2220
2221 done:
2222         hci_dev_put(hdev);
2223         return err;
2224 }
2225
2226 static int hci_dev_do_open(struct hci_dev *hdev)
2227 {
2228         int ret = 0;
2229
2230         BT_DBG("%s %p", hdev->name, hdev);
2231
2232         hci_req_lock(hdev);
2233
2234         if (test_bit(HCI_UNREGISTER, &hdev->dev_flags)) {
2235                 ret = -ENODEV;
2236                 goto done;
2237         }
2238
2239         if (!test_bit(HCI_SETUP, &hdev->dev_flags)) {
2240                 /* Check for rfkill but allow the HCI setup stage to
2241                  * proceed (which in itself doesn't cause any RF activity).
2242                  */
2243                 if (test_bit(HCI_RFKILLED, &hdev->dev_flags)) {
2244                         ret = -ERFKILL;
2245                         goto done;
2246                 }
2247
2248                 /* Check for valid public address or a configured static
2249                  * random adddress, but let the HCI setup proceed to
2250                  * be able to determine if there is a public address
2251                  * or not.
2252                  *
2253                  * In case of user channel usage, it is not important
2254                  * if a public address or static random address is
2255                  * available.
2256                  *
2257                  * This check is only valid for BR/EDR controllers
2258                  * since AMP controllers do not have an address.
2259                  */
2260                 if (!test_bit(HCI_USER_CHANNEL, &hdev->dev_flags) &&
2261                     hdev->dev_type == HCI_BREDR &&
2262                     !bacmp(&hdev->bdaddr, BDADDR_ANY) &&
2263                     !bacmp(&hdev->static_addr, BDADDR_ANY)) {
2264                         ret = -EADDRNOTAVAIL;
2265                         goto done;
2266                 }
2267         }
2268
2269         if (test_bit(HCI_UP, &hdev->flags)) {
2270                 ret = -EALREADY;
2271                 goto done;
2272         }
2273
2274         if (hdev->open(hdev)) {
2275                 ret = -EIO;
2276                 goto done;
2277         }
2278
2279         atomic_set(&hdev->cmd_cnt, 1);
2280         set_bit(HCI_INIT, &hdev->flags);
2281
2282         if (hdev->setup && test_bit(HCI_SETUP, &hdev->dev_flags))
2283                 ret = hdev->setup(hdev);
2284
2285         if (!ret) {
2286                 if (test_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks))
2287                         set_bit(HCI_RAW, &hdev->flags);
2288
2289                 if (!test_bit(HCI_RAW, &hdev->flags) &&
2290                     !test_bit(HCI_USER_CHANNEL, &hdev->dev_flags))
2291                         ret = __hci_init(hdev);
2292         }
2293
2294         clear_bit(HCI_INIT, &hdev->flags);
2295
2296         if (!ret) {
2297                 hci_dev_hold(hdev);
2298                 set_bit(HCI_RPA_EXPIRED, &hdev->dev_flags);
2299                 set_bit(HCI_UP, &hdev->flags);
2300                 hci_notify(hdev, HCI_DEV_UP);
2301                 if (!test_bit(HCI_SETUP, &hdev->dev_flags) &&
2302                     !test_bit(HCI_USER_CHANNEL, &hdev->dev_flags) &&
2303                     hdev->dev_type == HCI_BREDR) {
2304                         hci_dev_lock(hdev);
2305                         mgmt_powered(hdev, 1);
2306                         hci_dev_unlock(hdev);
2307                 }
2308         } else {
2309                 /* Init failed, cleanup */
2310                 flush_work(&hdev->tx_work);
2311                 flush_work(&hdev->cmd_work);
2312                 flush_work(&hdev->rx_work);
2313
2314                 skb_queue_purge(&hdev->cmd_q);
2315                 skb_queue_purge(&hdev->rx_q);
2316
2317                 if (hdev->flush)
2318                         hdev->flush(hdev);
2319
2320                 if (hdev->sent_cmd) {
2321                         kfree_skb(hdev->sent_cmd);
2322                         hdev->sent_cmd = NULL;
2323                 }
2324
2325                 hdev->close(hdev);
2326                 hdev->flags = 0;
2327         }
2328
2329 done:
2330         hci_req_unlock(hdev);
2331         return ret;
2332 }
2333
2334 /* ---- HCI ioctl helpers ---- */
2335
2336 int hci_dev_open(__u16 dev)
2337 {
2338         struct hci_dev *hdev;
2339         int err;
2340
2341         hdev = hci_dev_get(dev);
2342         if (!hdev)
2343                 return -ENODEV;
2344
2345         /* We need to ensure that no other power on/off work is pending
2346          * before proceeding to call hci_dev_do_open. This is
2347          * particularly important if the setup procedure has not yet
2348          * completed.
2349          */
2350         if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags))
2351                 cancel_delayed_work(&hdev->power_off);
2352
2353         /* After this call it is guaranteed that the setup procedure
2354          * has finished. This means that error conditions like RFKILL
2355          * or no valid public or static random address apply.
2356          */
2357         flush_workqueue(hdev->req_workqueue);
2358
2359         err = hci_dev_do_open(hdev);
2360
2361         hci_dev_put(hdev);
2362
2363         return err;
2364 }
2365
2366 static int hci_dev_do_close(struct hci_dev *hdev)
2367 {
2368         BT_DBG("%s %p", hdev->name, hdev);
2369
2370         cancel_delayed_work(&hdev->power_off);
2371
2372         hci_req_cancel(hdev, ENODEV);
2373         hci_req_lock(hdev);
2374
2375         if (!test_and_clear_bit(HCI_UP, &hdev->flags)) {
2376                 del_timer_sync(&hdev->cmd_timer);
2377                 hci_req_unlock(hdev);
2378                 return 0;
2379         }
2380
2381         /* Flush RX and TX works */
2382         flush_work(&hdev->tx_work);
2383         flush_work(&hdev->rx_work);
2384
2385         if (hdev->discov_timeout > 0) {
2386                 cancel_delayed_work(&hdev->discov_off);
2387                 hdev->discov_timeout = 0;
2388                 clear_bit(HCI_DISCOVERABLE, &hdev->dev_flags);
2389                 clear_bit(HCI_LIMITED_DISCOVERABLE, &hdev->dev_flags);
2390         }
2391
2392         if (test_and_clear_bit(HCI_SERVICE_CACHE, &hdev->dev_flags))
2393                 cancel_delayed_work(&hdev->service_cache);
2394
2395         cancel_delayed_work_sync(&hdev->le_scan_disable);
2396
2397         if (test_bit(HCI_MGMT, &hdev->dev_flags))
2398                 cancel_delayed_work_sync(&hdev->rpa_expired);
2399
2400         hci_dev_lock(hdev);
2401         hci_inquiry_cache_flush(hdev);
2402         hci_conn_hash_flush(hdev);
2403         hci_pend_le_conns_clear(hdev);
2404         hci_dev_unlock(hdev);
2405
2406         hci_notify(hdev, HCI_DEV_DOWN);
2407
2408         if (hdev->flush)
2409                 hdev->flush(hdev);
2410
2411         /* Reset device */
2412         skb_queue_purge(&hdev->cmd_q);
2413         atomic_set(&hdev->cmd_cnt, 1);
2414         if (!test_bit(HCI_RAW, &hdev->flags) &&
2415             !test_bit(HCI_AUTO_OFF, &hdev->dev_flags) &&
2416             test_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks)) {
2417                 set_bit(HCI_INIT, &hdev->flags);
2418                 __hci_req_sync(hdev, hci_reset_req, 0, HCI_CMD_TIMEOUT);
2419                 clear_bit(HCI_INIT, &hdev->flags);
2420         }
2421
2422         /* flush cmd  work */
2423         flush_work(&hdev->cmd_work);
2424
2425         /* Drop queues */
2426         skb_queue_purge(&hdev->rx_q);
2427         skb_queue_purge(&hdev->cmd_q);
2428         skb_queue_purge(&hdev->raw_q);
2429
2430         /* Drop last sent command */
2431         if (hdev->sent_cmd) {
2432                 del_timer_sync(&hdev->cmd_timer);
2433                 kfree_skb(hdev->sent_cmd);
2434                 hdev->sent_cmd = NULL;
2435         }
2436
2437         kfree_skb(hdev->recv_evt);
2438         hdev->recv_evt = NULL;
2439
2440         /* After this point our queues are empty
2441          * and no tasks are scheduled. */
2442         hdev->close(hdev);
2443
2444         /* Clear flags */
2445         hdev->flags = 0;
2446         hdev->dev_flags &= ~HCI_PERSISTENT_MASK;
2447
2448         if (!test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags)) {
2449                 if (hdev->dev_type == HCI_BREDR) {
2450                         hci_dev_lock(hdev);
2451                         mgmt_powered(hdev, 0);
2452                         hci_dev_unlock(hdev);
2453                 }
2454         }
2455
2456         /* Controller radio is available but is currently powered down */
2457         hdev->amp_status = AMP_STATUS_POWERED_DOWN;
2458
2459         memset(hdev->eir, 0, sizeof(hdev->eir));
2460         memset(hdev->dev_class, 0, sizeof(hdev->dev_class));
2461         bacpy(&hdev->random_addr, BDADDR_ANY);
2462
2463         hci_req_unlock(hdev);
2464
2465         hci_dev_put(hdev);
2466         return 0;
2467 }
2468
2469 int hci_dev_close(__u16 dev)
2470 {
2471         struct hci_dev *hdev;
2472         int err;
2473
2474         hdev = hci_dev_get(dev);
2475         if (!hdev)
2476                 return -ENODEV;
2477
2478         if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
2479                 err = -EBUSY;
2480                 goto done;
2481         }
2482
2483         if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags))
2484                 cancel_delayed_work(&hdev->power_off);
2485
2486         err = hci_dev_do_close(hdev);
2487
2488 done:
2489         hci_dev_put(hdev);
2490         return err;
2491 }
2492
2493 int hci_dev_reset(__u16 dev)
2494 {
2495         struct hci_dev *hdev;
2496         int ret = 0;
2497
2498         hdev = hci_dev_get(dev);
2499         if (!hdev)
2500                 return -ENODEV;
2501
2502         hci_req_lock(hdev);
2503
2504         if (!test_bit(HCI_UP, &hdev->flags)) {
2505                 ret = -ENETDOWN;
2506                 goto done;
2507         }
2508
2509         if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
2510                 ret = -EBUSY;
2511                 goto done;
2512         }
2513
2514         /* Drop queues */
2515         skb_queue_purge(&hdev->rx_q);
2516         skb_queue_purge(&hdev->cmd_q);
2517
2518         hci_dev_lock(hdev);
2519         hci_inquiry_cache_flush(hdev);
2520         hci_conn_hash_flush(hdev);
2521         hci_dev_unlock(hdev);
2522
2523         if (hdev->flush)
2524                 hdev->flush(hdev);
2525
2526         atomic_set(&hdev->cmd_cnt, 1);
2527         hdev->acl_cnt = 0; hdev->sco_cnt = 0; hdev->le_cnt = 0;
2528
2529         if (!test_bit(HCI_RAW, &hdev->flags))
2530                 ret = __hci_req_sync(hdev, hci_reset_req, 0, HCI_INIT_TIMEOUT);
2531
2532 done:
2533         hci_req_unlock(hdev);
2534         hci_dev_put(hdev);
2535         return ret;
2536 }
2537
2538 int hci_dev_reset_stat(__u16 dev)
2539 {
2540         struct hci_dev *hdev;
2541         int ret = 0;
2542
2543         hdev = hci_dev_get(dev);
2544         if (!hdev)
2545                 return -ENODEV;
2546
2547         if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
2548                 ret = -EBUSY;
2549                 goto done;
2550         }
2551
2552         memset(&hdev->stat, 0, sizeof(struct hci_dev_stats));
2553
2554 done:
2555         hci_dev_put(hdev);
2556         return ret;
2557 }
2558
2559 int hci_dev_cmd(unsigned int cmd, void __user *arg)
2560 {
2561         struct hci_dev *hdev;
2562         struct hci_dev_req dr;
2563         int err = 0;
2564
2565         if (copy_from_user(&dr, arg, sizeof(dr)))
2566                 return -EFAULT;
2567
2568         hdev = hci_dev_get(dr.dev_id);
2569         if (!hdev)
2570                 return -ENODEV;
2571
2572         if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
2573                 err = -EBUSY;
2574                 goto done;
2575         }
2576
2577         if (hdev->dev_type != HCI_BREDR) {
2578                 err = -EOPNOTSUPP;
2579                 goto done;
2580         }
2581
2582         if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags)) {
2583                 err = -EOPNOTSUPP;
2584                 goto done;
2585         }
2586
2587         switch (cmd) {
2588         case HCISETAUTH:
2589                 err = hci_req_sync(hdev, hci_auth_req, dr.dev_opt,
2590                                    HCI_INIT_TIMEOUT);
2591                 break;
2592
2593         case HCISETENCRYPT:
2594                 if (!lmp_encrypt_capable(hdev)) {
2595                         err = -EOPNOTSUPP;
2596                         break;
2597                 }
2598
2599                 if (!test_bit(HCI_AUTH, &hdev->flags)) {
2600                         /* Auth must be enabled first */
2601                         err = hci_req_sync(hdev, hci_auth_req, dr.dev_opt,
2602                                            HCI_INIT_TIMEOUT);
2603                         if (err)
2604                                 break;
2605                 }
2606
2607                 err = hci_req_sync(hdev, hci_encrypt_req, dr.dev_opt,
2608                                    HCI_INIT_TIMEOUT);
2609                 break;
2610
2611         case HCISETSCAN:
2612                 err = hci_req_sync(hdev, hci_scan_req, dr.dev_opt,
2613                                    HCI_INIT_TIMEOUT);
2614                 break;
2615
2616         case HCISETLINKPOL:
2617                 err = hci_req_sync(hdev, hci_linkpol_req, dr.dev_opt,
2618                                    HCI_INIT_TIMEOUT);
2619                 break;
2620
2621         case HCISETLINKMODE:
2622                 hdev->link_mode = ((__u16) dr.dev_opt) &
2623                                         (HCI_LM_MASTER | HCI_LM_ACCEPT);
2624                 break;
2625
2626         case HCISETPTYPE:
2627                 hdev->pkt_type = (__u16) dr.dev_opt;
2628                 break;
2629
2630         case HCISETACLMTU:
2631                 hdev->acl_mtu  = *((__u16 *) &dr.dev_opt + 1);
2632                 hdev->acl_pkts = *((__u16 *) &dr.dev_opt + 0);
2633                 break;
2634
2635         case HCISETSCOMTU:
2636                 hdev->sco_mtu  = *((__u16 *) &dr.dev_opt + 1);
2637                 hdev->sco_pkts = *((__u16 *) &dr.dev_opt + 0);
2638                 break;
2639
2640         default:
2641                 err = -EINVAL;
2642                 break;
2643         }
2644
2645 done:
2646         hci_dev_put(hdev);
2647         return err;
2648 }
2649
2650 int hci_get_dev_list(void __user *arg)
2651 {
2652         struct hci_dev *hdev;
2653         struct hci_dev_list_req *dl;
2654         struct hci_dev_req *dr;
2655         int n = 0, size, err;
2656         __u16 dev_num;
2657
2658         if (get_user(dev_num, (__u16 __user *) arg))
2659                 return -EFAULT;
2660
2661         if (!dev_num || dev_num > (PAGE_SIZE * 2) / sizeof(*dr))
2662                 return -EINVAL;
2663
2664         size = sizeof(*dl) + dev_num * sizeof(*dr);
2665
2666         dl = kzalloc(size, GFP_KERNEL);
2667         if (!dl)
2668                 return -ENOMEM;
2669
2670         dr = dl->dev_req;
2671
2672         read_lock(&hci_dev_list_lock);
2673         list_for_each_entry(hdev, &hci_dev_list, list) {
2674                 if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags))
2675                         cancel_delayed_work(&hdev->power_off);
2676
2677                 if (!test_bit(HCI_MGMT, &hdev->dev_flags))
2678                         set_bit(HCI_PAIRABLE, &hdev->dev_flags);
2679
2680                 (dr + n)->dev_id  = hdev->id;
2681                 (dr + n)->dev_opt = hdev->flags;
2682
2683                 if (++n >= dev_num)
2684                         break;
2685         }
2686         read_unlock(&hci_dev_list_lock);
2687
2688         dl->dev_num = n;
2689         size = sizeof(*dl) + n * sizeof(*dr);
2690
2691         err = copy_to_user(arg, dl, size);
2692         kfree(dl);
2693
2694         return err ? -EFAULT : 0;
2695 }
2696
2697 int hci_get_dev_info(void __user *arg)
2698 {
2699         struct hci_dev *hdev;
2700         struct hci_dev_info di;
2701         int err = 0;
2702
2703         if (copy_from_user(&di, arg, sizeof(di)))
2704                 return -EFAULT;
2705
2706         hdev = hci_dev_get(di.dev_id);
2707         if (!hdev)
2708                 return -ENODEV;
2709
2710         if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags))
2711                 cancel_delayed_work_sync(&hdev->power_off);
2712
2713         if (!test_bit(HCI_MGMT, &hdev->dev_flags))
2714                 set_bit(HCI_PAIRABLE, &hdev->dev_flags);
2715
2716         strcpy(di.name, hdev->name);
2717         di.bdaddr   = hdev->bdaddr;
2718         di.type     = (hdev->bus & 0x0f) | ((hdev->dev_type & 0x03) << 4);
2719         di.flags    = hdev->flags;
2720         di.pkt_type = hdev->pkt_type;
2721         if (lmp_bredr_capable(hdev)) {
2722                 di.acl_mtu  = hdev->acl_mtu;
2723                 di.acl_pkts = hdev->acl_pkts;
2724                 di.sco_mtu  = hdev->sco_mtu;
2725                 di.sco_pkts = hdev->sco_pkts;
2726         } else {
2727                 di.acl_mtu  = hdev->le_mtu;
2728                 di.acl_pkts = hdev->le_pkts;
2729                 di.sco_mtu  = 0;
2730                 di.sco_pkts = 0;
2731         }
2732         di.link_policy = hdev->link_policy;
2733         di.link_mode   = hdev->link_mode;
2734
2735         memcpy(&di.stat, &hdev->stat, sizeof(di.stat));
2736         memcpy(&di.features, &hdev->features, sizeof(di.features));
2737
2738         if (copy_to_user(arg, &di, sizeof(di)))
2739                 err = -EFAULT;
2740
2741         hci_dev_put(hdev);
2742
2743         return err;
2744 }
2745
2746 /* ---- Interface to HCI drivers ---- */
2747
2748 static int hci_rfkill_set_block(void *data, bool blocked)
2749 {
2750         struct hci_dev *hdev = data;
2751
2752         BT_DBG("%p name %s blocked %d", hdev, hdev->name, blocked);
2753
2754         if (test_bit(HCI_USER_CHANNEL, &hdev->dev_flags))
2755                 return -EBUSY;
2756
2757         if (blocked) {
2758                 set_bit(HCI_RFKILLED, &hdev->dev_flags);
2759                 if (!test_bit(HCI_SETUP, &hdev->dev_flags))
2760                         hci_dev_do_close(hdev);
2761         } else {
2762                 clear_bit(HCI_RFKILLED, &hdev->dev_flags);
2763         }
2764
2765         return 0;
2766 }
2767
2768 static const struct rfkill_ops hci_rfkill_ops = {
2769         .set_block = hci_rfkill_set_block,
2770 };
2771
2772 static void hci_power_on(struct work_struct *work)
2773 {
2774         struct hci_dev *hdev = container_of(work, struct hci_dev, power_on);
2775         int err;
2776
2777         BT_DBG("%s", hdev->name);
2778
2779         err = hci_dev_do_open(hdev);
2780         if (err < 0) {
2781                 mgmt_set_powered_failed(hdev, err);
2782                 return;
2783         }
2784
2785         /* During the HCI setup phase, a few error conditions are
2786          * ignored and they need to be checked now. If they are still
2787          * valid, it is important to turn the device back off.
2788          */
2789         if (test_bit(HCI_RFKILLED, &hdev->dev_flags) ||
2790             (hdev->dev_type == HCI_BREDR &&
2791              !bacmp(&hdev->bdaddr, BDADDR_ANY) &&
2792              !bacmp(&hdev->static_addr, BDADDR_ANY))) {
2793                 clear_bit(HCI_AUTO_OFF, &hdev->dev_flags);
2794                 hci_dev_do_close(hdev);
2795         } else if (test_bit(HCI_AUTO_OFF, &hdev->dev_flags)) {
2796                 queue_delayed_work(hdev->req_workqueue, &hdev->power_off,
2797                                    HCI_AUTO_OFF_TIMEOUT);
2798         }
2799
2800         if (test_and_clear_bit(HCI_SETUP, &hdev->dev_flags))
2801                 mgmt_index_added(hdev);
2802 }
2803
2804 static void hci_power_off(struct work_struct *work)
2805 {
2806         struct hci_dev *hdev = container_of(work, struct hci_dev,
2807                                             power_off.work);
2808
2809         BT_DBG("%s", hdev->name);
2810
2811         hci_dev_do_close(hdev);
2812 }
2813
2814 static void hci_discov_off(struct work_struct *work)
2815 {
2816         struct hci_dev *hdev;
2817
2818         hdev = container_of(work, struct hci_dev, discov_off.work);
2819
2820         BT_DBG("%s", hdev->name);
2821
2822         mgmt_discoverable_timeout(hdev);
2823 }
2824
2825 void hci_uuids_clear(struct hci_dev *hdev)
2826 {
2827         struct bt_uuid *uuid, *tmp;
2828
2829         list_for_each_entry_safe(uuid, tmp, &hdev->uuids, list) {
2830                 list_del(&uuid->list);
2831                 kfree(uuid);
2832         }
2833 }
2834
2835 void hci_link_keys_clear(struct hci_dev *hdev)
2836 {
2837         struct list_head *p, *n;
2838
2839         list_for_each_safe(p, n, &hdev->link_keys) {
2840                 struct link_key *key;
2841
2842                 key = list_entry(p, struct link_key, list);
2843
2844                 list_del(p);
2845                 kfree(key);
2846         }
2847 }
2848
2849 void hci_smp_ltks_clear(struct hci_dev *hdev)
2850 {
2851         struct smp_ltk *k, *tmp;
2852
2853         list_for_each_entry_safe(k, tmp, &hdev->long_term_keys, list) {
2854                 list_del(&k->list);
2855                 kfree(k);
2856         }
2857 }
2858
2859 void hci_smp_irks_clear(struct hci_dev *hdev)
2860 {
2861         struct smp_irk *k, *tmp;
2862
2863         list_for_each_entry_safe(k, tmp, &hdev->identity_resolving_keys, list) {
2864                 list_del(&k->list);
2865                 kfree(k);
2866         }
2867 }
2868
2869 struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
2870 {
2871         struct link_key *k;
2872
2873         list_for_each_entry(k, &hdev->link_keys, list)
2874                 if (bacmp(bdaddr, &k->bdaddr) == 0)
2875                         return k;
2876
2877         return NULL;
2878 }
2879
2880 static bool hci_persistent_key(struct hci_dev *hdev, struct hci_conn *conn,
2881                                u8 key_type, u8 old_key_type)
2882 {
2883         /* Legacy key */
2884         if (key_type < 0x03)
2885                 return true;
2886
2887         /* Debug keys are insecure so don't store them persistently */
2888         if (key_type == HCI_LK_DEBUG_COMBINATION)
2889                 return false;
2890
2891         /* Changed combination key and there's no previous one */
2892         if (key_type == HCI_LK_CHANGED_COMBINATION && old_key_type == 0xff)
2893                 return false;
2894
2895         /* Security mode 3 case */
2896         if (!conn)
2897                 return true;
2898
2899         /* Neither local nor remote side had no-bonding as requirement */
2900         if (conn->auth_type > 0x01 && conn->remote_auth > 0x01)
2901                 return true;
2902
2903         /* Local side had dedicated bonding as requirement */
2904         if (conn->auth_type == 0x02 || conn->auth_type == 0x03)
2905                 return true;
2906
2907         /* Remote side had dedicated bonding as requirement */
2908         if (conn->remote_auth == 0x02 || conn->remote_auth == 0x03)
2909                 return true;
2910
2911         /* If none of the above criteria match, then don't store the key
2912          * persistently */
2913         return false;
2914 }
2915
2916 static bool ltk_type_master(u8 type)
2917 {
2918         if (type == HCI_SMP_STK || type == HCI_SMP_LTK)
2919                 return true;
2920
2921         return false;
2922 }
2923
2924 struct smp_ltk *hci_find_ltk(struct hci_dev *hdev, __le16 ediv, __le64 rand,
2925                              bool master)
2926 {
2927         struct smp_ltk *k;
2928
2929         list_for_each_entry(k, &hdev->long_term_keys, list) {
2930                 if (k->ediv != ediv || k->rand != rand)
2931                         continue;
2932
2933                 if (ltk_type_master(k->type) != master)
2934                         continue;
2935
2936                 return k;
2937         }
2938
2939         return NULL;
2940 }
2941
2942 struct smp_ltk *hci_find_ltk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr,
2943                                      u8 addr_type, bool master)
2944 {
2945         struct smp_ltk *k;
2946
2947         list_for_each_entry(k, &hdev->long_term_keys, list)
2948                 if (addr_type == k->bdaddr_type &&
2949                     bacmp(bdaddr, &k->bdaddr) == 0 &&
2950                     ltk_type_master(k->type) == master)
2951                         return k;
2952
2953         return NULL;
2954 }
2955
2956 struct smp_irk *hci_find_irk_by_rpa(struct hci_dev *hdev, bdaddr_t *rpa)
2957 {
2958         struct smp_irk *irk;
2959
2960         list_for_each_entry(irk, &hdev->identity_resolving_keys, list) {
2961                 if (!bacmp(&irk->rpa, rpa))
2962                         return irk;
2963         }
2964
2965         list_for_each_entry(irk, &hdev->identity_resolving_keys, list) {
2966                 if (smp_irk_matches(hdev->tfm_aes, irk->val, rpa)) {
2967                         bacpy(&irk->rpa, rpa);
2968                         return irk;
2969                 }
2970         }
2971
2972         return NULL;
2973 }
2974
2975 struct smp_irk *hci_find_irk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr,
2976                                      u8 addr_type)
2977 {
2978         struct smp_irk *irk;
2979
2980         /* Identity Address must be public or static random */
2981         if (addr_type == ADDR_LE_DEV_RANDOM && (bdaddr->b[5] & 0xc0) != 0xc0)
2982                 return NULL;
2983
2984         list_for_each_entry(irk, &hdev->identity_resolving_keys, list) {
2985                 if (addr_type == irk->addr_type &&
2986                     bacmp(bdaddr, &irk->bdaddr) == 0)
2987                         return irk;
2988         }
2989
2990         return NULL;
2991 }
2992
2993 int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
2994                      bdaddr_t *bdaddr, u8 *val, u8 type, u8 pin_len)
2995 {
2996         struct link_key *key, *old_key;
2997         u8 old_key_type;
2998         bool persistent;
2999
3000         old_key = hci_find_link_key(hdev, bdaddr);
3001         if (old_key) {
3002                 old_key_type = old_key->type;
3003                 key = old_key;
3004         } else {
3005                 old_key_type = conn ? conn->key_type : 0xff;
3006                 key = kzalloc(sizeof(*key), GFP_KERNEL);
3007                 if (!key)
3008                         return -ENOMEM;
3009                 list_add(&key->list, &hdev->link_keys);
3010         }
3011
3012         BT_DBG("%s key for %pMR type %u", hdev->name, bdaddr, type);
3013
3014         /* Some buggy controller combinations generate a changed
3015          * combination key for legacy pairing even when there's no
3016          * previous key */
3017         if (type == HCI_LK_CHANGED_COMBINATION &&
3018             (!conn || conn->remote_auth == 0xff) && old_key_type == 0xff) {
3019                 type = HCI_LK_COMBINATION;
3020                 if (conn)
3021                         conn->key_type = type;
3022         }
3023
3024         bacpy(&key->bdaddr, bdaddr);
3025         memcpy(key->val, val, HCI_LINK_KEY_SIZE);
3026         key->pin_len = pin_len;
3027
3028         if (type == HCI_LK_CHANGED_COMBINATION)
3029                 key->type = old_key_type;
3030         else
3031                 key->type = type;
3032
3033         if (!new_key)
3034                 return 0;
3035
3036         persistent = hci_persistent_key(hdev, conn, type, old_key_type);
3037
3038         mgmt_new_link_key(hdev, key, persistent);
3039
3040         if (conn)
3041                 conn->flush_key = !persistent;
3042
3043         return 0;
3044 }
3045
3046 struct smp_ltk *hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr,
3047                             u8 addr_type, u8 type, u8 authenticated,
3048                             u8 tk[16], u8 enc_size, __le16 ediv, __le64 rand)
3049 {
3050         struct smp_ltk *key, *old_key;
3051         bool master = ltk_type_master(type);
3052
3053         old_key = hci_find_ltk_by_addr(hdev, bdaddr, addr_type, master);
3054         if (old_key)
3055                 key = old_key;
3056         else {
3057                 key = kzalloc(sizeof(*key), GFP_KERNEL);
3058                 if (!key)
3059                         return NULL;
3060                 list_add(&key->list, &hdev->long_term_keys);
3061         }
3062
3063         bacpy(&key->bdaddr, bdaddr);
3064         key->bdaddr_type = addr_type;
3065         memcpy(key->val, tk, sizeof(key->val));
3066         key->authenticated = authenticated;
3067         key->ediv = ediv;
3068         key->rand = rand;
3069         key->enc_size = enc_size;
3070         key->type = type;
3071
3072         return key;
3073 }
3074
3075 struct smp_irk *hci_add_irk(struct hci_dev *hdev, bdaddr_t *bdaddr,
3076                             u8 addr_type, u8 val[16], bdaddr_t *rpa)
3077 {
3078         struct smp_irk *irk;
3079
3080         irk = hci_find_irk_by_addr(hdev, bdaddr, addr_type);
3081         if (!irk) {
3082                 irk = kzalloc(sizeof(*irk), GFP_KERNEL);
3083                 if (!irk)
3084                         return NULL;
3085
3086                 bacpy(&irk->bdaddr, bdaddr);
3087                 irk->addr_type = addr_type;
3088
3089                 list_add(&irk->list, &hdev->identity_resolving_keys);
3090         }
3091
3092         memcpy(irk->val, val, 16);
3093         bacpy(&irk->rpa, rpa);
3094
3095         return irk;
3096 }
3097
3098 int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
3099 {
3100         struct link_key *key;
3101
3102         key = hci_find_link_key(hdev, bdaddr);
3103         if (!key)
3104                 return -ENOENT;
3105
3106         BT_DBG("%s removing %pMR", hdev->name, bdaddr);
3107
3108         list_del(&key->list);
3109         kfree(key);
3110
3111         return 0;
3112 }
3113
3114 int hci_remove_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 bdaddr_type)
3115 {
3116         struct smp_ltk *k, *tmp;
3117         int removed = 0;
3118
3119         list_for_each_entry_safe(k, tmp, &hdev->long_term_keys, list) {
3120                 if (bacmp(bdaddr, &k->bdaddr) || k->bdaddr_type != bdaddr_type)
3121                         continue;
3122
3123                 BT_DBG("%s removing %pMR", hdev->name, bdaddr);
3124
3125                 list_del(&k->list);
3126                 kfree(k);
3127                 removed++;
3128         }
3129
3130         return removed ? 0 : -ENOENT;
3131 }
3132
3133 void hci_remove_irk(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 addr_type)
3134 {
3135         struct smp_irk *k, *tmp;
3136
3137         list_for_each_entry_safe(k, tmp, &hdev->identity_resolving_keys, list) {
3138                 if (bacmp(bdaddr, &k->bdaddr) || k->addr_type != addr_type)
3139                         continue;
3140
3141                 BT_DBG("%s removing %pMR", hdev->name, bdaddr);
3142
3143                 list_del(&k->list);
3144                 kfree(k);
3145         }
3146 }
3147
3148 /* HCI command timer function */
3149 static void hci_cmd_timeout(unsigned long arg)
3150 {
3151         struct hci_dev *hdev = (void *) arg;
3152
3153         if (hdev->sent_cmd) {
3154                 struct hci_command_hdr *sent = (void *) hdev->sent_cmd->data;
3155                 u16 opcode = __le16_to_cpu(sent->opcode);
3156
3157                 BT_ERR("%s command 0x%4.4x tx timeout", hdev->name, opcode);
3158         } else {
3159                 BT_ERR("%s command tx timeout", hdev->name);
3160         }
3161
3162         atomic_set(&hdev->cmd_cnt, 1);
3163         queue_work(hdev->workqueue, &hdev->cmd_work);
3164 }
3165
3166 struct oob_data *hci_find_remote_oob_data(struct hci_dev *hdev,
3167                                           bdaddr_t *bdaddr)
3168 {
3169         struct oob_data *data;
3170
3171         list_for_each_entry(data, &hdev->remote_oob_data, list)
3172                 if (bacmp(bdaddr, &data->bdaddr) == 0)
3173                         return data;
3174
3175         return NULL;
3176 }
3177
3178 int hci_remove_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr)
3179 {
3180         struct oob_data *data;
3181
3182         data = hci_find_remote_oob_data(hdev, bdaddr);
3183         if (!data)
3184                 return -ENOENT;
3185
3186         BT_DBG("%s removing %pMR", hdev->name, bdaddr);
3187
3188         list_del(&data->list);
3189         kfree(data);
3190
3191         return 0;
3192 }
3193
3194 void hci_remote_oob_data_clear(struct hci_dev *hdev)
3195 {
3196         struct oob_data *data, *n;
3197
3198         list_for_each_entry_safe(data, n, &hdev->remote_oob_data, list) {
3199                 list_del(&data->list);
3200                 kfree(data);
3201         }
3202 }
3203
3204 int hci_add_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr,
3205                             u8 *hash, u8 *randomizer)
3206 {
3207         struct oob_data *data;
3208
3209         data = hci_find_remote_oob_data(hdev, bdaddr);
3210         if (!data) {
3211                 data = kmalloc(sizeof(*data), GFP_KERNEL);
3212                 if (!data)
3213                         return -ENOMEM;
3214
3215                 bacpy(&data->bdaddr, bdaddr);
3216                 list_add(&data->list, &hdev->remote_oob_data);
3217         }
3218
3219         memcpy(data->hash192, hash, sizeof(data->hash192));
3220         memcpy(data->randomizer192, randomizer, sizeof(data->randomizer192));
3221
3222         memset(data->hash256, 0, sizeof(data->hash256));
3223         memset(data->randomizer256, 0, sizeof(data->randomizer256));
3224
3225         BT_DBG("%s for %pMR", hdev->name, bdaddr);
3226
3227         return 0;
3228 }
3229
3230 int hci_add_remote_oob_ext_data(struct hci_dev *hdev, bdaddr_t *bdaddr,
3231                                 u8 *hash192, u8 *randomizer192,
3232                                 u8 *hash256, u8 *randomizer256)
3233 {
3234         struct oob_data *data;
3235
3236         data = hci_find_remote_oob_data(hdev, bdaddr);
3237         if (!data) {
3238                 data = kmalloc(sizeof(*data), GFP_KERNEL);
3239                 if (!data)
3240                         return -ENOMEM;
3241
3242                 bacpy(&data->bdaddr, bdaddr);
3243                 list_add(&data->list, &hdev->remote_oob_data);
3244         }
3245
3246         memcpy(data->hash192, hash192, sizeof(data->hash192));
3247         memcpy(data->randomizer192, randomizer192, sizeof(data->randomizer192));
3248
3249         memcpy(data->hash256, hash256, sizeof(data->hash256));
3250         memcpy(data->randomizer256, randomizer256, sizeof(data->randomizer256));
3251
3252         BT_DBG("%s for %pMR", hdev->name, bdaddr);
3253
3254         return 0;
3255 }
3256
3257 struct bdaddr_list *hci_blacklist_lookup(struct hci_dev *hdev,
3258                                          bdaddr_t *bdaddr, u8 type)
3259 {
3260         struct bdaddr_list *b;
3261
3262         list_for_each_entry(b, &hdev->blacklist, list) {
3263                 if (!bacmp(&b->bdaddr, bdaddr) && b->bdaddr_type == type)
3264                         return b;
3265         }
3266
3267         return NULL;
3268 }
3269
3270 static void hci_blacklist_clear(struct hci_dev *hdev)
3271 {
3272         struct list_head *p, *n;
3273
3274         list_for_each_safe(p, n, &hdev->blacklist) {
3275                 struct bdaddr_list *b = list_entry(p, struct bdaddr_list, list);
3276
3277                 list_del(p);
3278                 kfree(b);
3279         }
3280 }
3281
3282 int hci_blacklist_add(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
3283 {
3284         struct bdaddr_list *entry;
3285
3286         if (!bacmp(bdaddr, BDADDR_ANY))
3287                 return -EBADF;
3288
3289         if (hci_blacklist_lookup(hdev, bdaddr, type))
3290                 return -EEXIST;
3291
3292         entry = kzalloc(sizeof(struct bdaddr_list), GFP_KERNEL);
3293         if (!entry)
3294                 return -ENOMEM;
3295
3296         bacpy(&entry->bdaddr, bdaddr);
3297         entry->bdaddr_type = type;
3298
3299         list_add(&entry->list, &hdev->blacklist);
3300
3301         return mgmt_device_blocked(hdev, bdaddr, type);
3302 }
3303
3304 int hci_blacklist_del(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
3305 {
3306         struct bdaddr_list *entry;
3307
3308         if (!bacmp(bdaddr, BDADDR_ANY)) {
3309                 hci_blacklist_clear(hdev);
3310                 return 0;
3311         }
3312
3313         entry = hci_blacklist_lookup(hdev, bdaddr, type);
3314         if (!entry)
3315                 return -ENOENT;
3316
3317         list_del(&entry->list);
3318         kfree(entry);
3319
3320         return mgmt_device_unblocked(hdev, bdaddr, type);
3321 }
3322
3323 struct bdaddr_list *hci_white_list_lookup(struct hci_dev *hdev,
3324                                           bdaddr_t *bdaddr, u8 type)
3325 {
3326         struct bdaddr_list *b;
3327
3328         list_for_each_entry(b, &hdev->le_white_list, list) {
3329                 if (!bacmp(&b->bdaddr, bdaddr) && b->bdaddr_type == type)
3330                         return b;
3331         }
3332
3333         return NULL;
3334 }
3335
3336 void hci_white_list_clear(struct hci_dev *hdev)
3337 {
3338         struct list_head *p, *n;
3339
3340         list_for_each_safe(p, n, &hdev->le_white_list) {
3341                 struct bdaddr_list *b = list_entry(p, struct bdaddr_list, list);
3342
3343                 list_del(p);
3344                 kfree(b);
3345         }
3346 }
3347
3348 int hci_white_list_add(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
3349 {
3350         struct bdaddr_list *entry;
3351
3352         if (!bacmp(bdaddr, BDADDR_ANY))
3353                 return -EBADF;
3354
3355         entry = kzalloc(sizeof(struct bdaddr_list), GFP_KERNEL);
3356         if (!entry)
3357                 return -ENOMEM;
3358
3359         bacpy(&entry->bdaddr, bdaddr);
3360         entry->bdaddr_type = type;
3361
3362         list_add(&entry->list, &hdev->le_white_list);
3363
3364         return 0;
3365 }
3366
3367 int hci_white_list_del(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
3368 {
3369         struct bdaddr_list *entry;
3370
3371         if (!bacmp(bdaddr, BDADDR_ANY))
3372                 return -EBADF;
3373
3374         entry = hci_white_list_lookup(hdev, bdaddr, type);
3375         if (!entry)
3376                 return -ENOENT;
3377
3378         list_del(&entry->list);
3379         kfree(entry);
3380
3381         return 0;
3382 }
3383
3384 /* This function requires the caller holds hdev->lock */
3385 struct hci_conn_params *hci_conn_params_lookup(struct hci_dev *hdev,
3386                                                bdaddr_t *addr, u8 addr_type)
3387 {
3388         struct hci_conn_params *params;
3389
3390         list_for_each_entry(params, &hdev->le_conn_params, list) {
3391                 if (bacmp(&params->addr, addr) == 0 &&
3392                     params->addr_type == addr_type) {
3393                         return params;
3394                 }
3395         }
3396
3397         return NULL;
3398 }
3399
3400 static bool is_connected(struct hci_dev *hdev, bdaddr_t *addr, u8 type)
3401 {
3402         struct hci_conn *conn;
3403
3404         conn = hci_conn_hash_lookup_ba(hdev, LE_LINK, addr);
3405         if (!conn)
3406                 return false;
3407
3408         if (conn->dst_type != type)
3409                 return false;
3410
3411         if (conn->state != BT_CONNECTED)
3412                 return false;
3413
3414         return true;
3415 }
3416
3417 static bool is_identity_address(bdaddr_t *addr, u8 addr_type)
3418 {
3419         if (addr_type == ADDR_LE_DEV_PUBLIC)
3420                 return true;
3421
3422         /* Check for Random Static address type */
3423         if ((addr->b[5] & 0xc0) == 0xc0)
3424                 return true;
3425
3426         return false;
3427 }
3428
3429 /* This function requires the caller holds hdev->lock */
3430 int hci_conn_params_add(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type,
3431                         u8 auto_connect, u16 conn_min_interval,
3432                         u16 conn_max_interval)
3433 {
3434         struct hci_conn_params *params;
3435
3436         if (!is_identity_address(addr, addr_type))
3437                 return -EINVAL;
3438
3439         params = hci_conn_params_lookup(hdev, addr, addr_type);
3440         if (params)
3441                 goto update;
3442
3443         params = kzalloc(sizeof(*params), GFP_KERNEL);
3444         if (!params) {
3445                 BT_ERR("Out of memory");
3446                 return -ENOMEM;
3447         }
3448
3449         bacpy(&params->addr, addr);
3450         params->addr_type = addr_type;
3451
3452         list_add(&params->list, &hdev->le_conn_params);
3453
3454 update:
3455         params->conn_min_interval = conn_min_interval;
3456         params->conn_max_interval = conn_max_interval;
3457         params->auto_connect = auto_connect;
3458
3459         switch (auto_connect) {
3460         case HCI_AUTO_CONN_DISABLED:
3461         case HCI_AUTO_CONN_LINK_LOSS:
3462                 hci_pend_le_conn_del(hdev, addr, addr_type);
3463                 break;
3464         case HCI_AUTO_CONN_ALWAYS:
3465                 if (!is_connected(hdev, addr, addr_type))
3466                         hci_pend_le_conn_add(hdev, addr, addr_type);
3467                 break;
3468         }
3469
3470         BT_DBG("addr %pMR (type %u) auto_connect %u conn_min_interval 0x%.4x "
3471                "conn_max_interval 0x%.4x", addr, addr_type, auto_connect,
3472                conn_min_interval, conn_max_interval);
3473
3474         return 0;
3475 }
3476
3477 /* This function requires the caller holds hdev->lock */
3478 void hci_conn_params_del(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type)
3479 {
3480         struct hci_conn_params *params;
3481
3482         params = hci_conn_params_lookup(hdev, addr, addr_type);
3483         if (!params)
3484                 return;
3485
3486         hci_pend_le_conn_del(hdev, addr, addr_type);
3487
3488         list_del(&params->list);
3489         kfree(params);
3490
3491         BT_DBG("addr %pMR (type %u)", addr, addr_type);
3492 }
3493
3494 /* This function requires the caller holds hdev->lock */
3495 void hci_conn_params_clear(struct hci_dev *hdev)
3496 {
3497         struct hci_conn_params *params, *tmp;
3498
3499         list_for_each_entry_safe(params, tmp, &hdev->le_conn_params, list) {
3500                 list_del(&params->list);
3501                 kfree(params);
3502         }
3503
3504         BT_DBG("All LE connection parameters were removed");
3505 }
3506
3507 /* This function requires the caller holds hdev->lock */
3508 struct bdaddr_list *hci_pend_le_conn_lookup(struct hci_dev *hdev,
3509                                             bdaddr_t *addr, u8 addr_type)
3510 {
3511         struct bdaddr_list *entry;
3512
3513         list_for_each_entry(entry, &hdev->pend_le_conns, list) {
3514                 if (bacmp(&entry->bdaddr, addr) == 0 &&
3515                     entry->bdaddr_type == addr_type)
3516                         return entry;
3517         }
3518
3519         return NULL;
3520 }
3521
3522 /* This function requires the caller holds hdev->lock */
3523 void hci_pend_le_conn_add(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type)
3524 {
3525         struct bdaddr_list *entry;
3526
3527         entry = hci_pend_le_conn_lookup(hdev, addr, addr_type);
3528         if (entry)
3529                 goto done;
3530
3531         entry = kzalloc(sizeof(*entry), GFP_KERNEL);
3532         if (!entry) {
3533                 BT_ERR("Out of memory");
3534                 return;
3535         }
3536
3537         bacpy(&entry->bdaddr, addr);
3538         entry->bdaddr_type = addr_type;
3539
3540         list_add(&entry->list, &hdev->pend_le_conns);
3541
3542         BT_DBG("addr %pMR (type %u)", addr, addr_type);
3543
3544 done:
3545         hci_update_background_scan(hdev);
3546 }
3547
3548 /* This function requires the caller holds hdev->lock */
3549 void hci_pend_le_conn_del(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type)
3550 {
3551         struct bdaddr_list *entry;
3552
3553         entry = hci_pend_le_conn_lookup(hdev, addr, addr_type);
3554         if (!entry)
3555                 goto done;
3556
3557         list_del(&entry->list);
3558         kfree(entry);
3559
3560         BT_DBG("addr %pMR (type %u)", addr, addr_type);
3561
3562 done:
3563         hci_update_background_scan(hdev);
3564 }
3565
3566 /* This function requires the caller holds hdev->lock */
3567 void hci_pend_le_conns_clear(struct hci_dev *hdev)
3568 {
3569         struct bdaddr_list *entry, *tmp;
3570
3571         list_for_each_entry_safe(entry, tmp, &hdev->pend_le_conns, list) {
3572                 list_del(&entry->list);
3573                 kfree(entry);
3574         }
3575
3576         BT_DBG("All LE pending connections cleared");
3577 }
3578
3579 static void inquiry_complete(struct hci_dev *hdev, u8 status)
3580 {
3581         if (status) {
3582                 BT_ERR("Failed to start inquiry: status %d", status);
3583
3584                 hci_dev_lock(hdev);
3585                 hci_discovery_set_state(hdev, DISCOVERY_STOPPED);
3586                 hci_dev_unlock(hdev);
3587                 return;
3588         }
3589 }
3590
3591 static void le_scan_disable_work_complete(struct hci_dev *hdev, u8 status)
3592 {
3593         /* General inquiry access code (GIAC) */
3594         u8 lap[3] = { 0x33, 0x8b, 0x9e };
3595         struct hci_request req;
3596         struct hci_cp_inquiry cp;
3597         int err;
3598
3599         if (status) {
3600                 BT_ERR("Failed to disable LE scanning: status %d", status);
3601                 return;
3602         }
3603
3604         switch (hdev->discovery.type) {
3605         case DISCOV_TYPE_LE:
3606                 hci_dev_lock(hdev);
3607                 hci_discovery_set_state(hdev, DISCOVERY_STOPPED);
3608                 hci_dev_unlock(hdev);
3609                 break;
3610
3611         case DISCOV_TYPE_INTERLEAVED:
3612                 hci_req_init(&req, hdev);
3613
3614                 memset(&cp, 0, sizeof(cp));
3615                 memcpy(&cp.lap, lap, sizeof(cp.lap));
3616                 cp.length = DISCOV_INTERLEAVED_INQUIRY_LEN;
3617                 hci_req_add(&req, HCI_OP_INQUIRY, sizeof(cp), &cp);
3618
3619                 hci_dev_lock(hdev);
3620
3621                 hci_inquiry_cache_flush(hdev);
3622
3623                 err = hci_req_run(&req, inquiry_complete);
3624                 if (err) {
3625                         BT_ERR("Inquiry request failed: err %d", err);
3626                         hci_discovery_set_state(hdev, DISCOVERY_STOPPED);
3627                 }
3628
3629                 hci_dev_unlock(hdev);
3630                 break;
3631         }
3632 }
3633
3634 static void le_scan_disable_work(struct work_struct *work)
3635 {
3636         struct hci_dev *hdev = container_of(work, struct hci_dev,
3637                                             le_scan_disable.work);
3638         struct hci_request req;
3639         int err;
3640
3641         BT_DBG("%s", hdev->name);
3642
3643         hci_req_init(&req, hdev);
3644
3645         hci_req_add_le_scan_disable(&req);
3646
3647         err = hci_req_run(&req, le_scan_disable_work_complete);
3648         if (err)
3649                 BT_ERR("Disable LE scanning request failed: err %d", err);
3650 }
3651
3652 static void set_random_addr(struct hci_request *req, bdaddr_t *rpa)
3653 {
3654         struct hci_dev *hdev = req->hdev;
3655
3656         /* If we're advertising or initiating an LE connection we can't
3657          * go ahead and change the random address at this time. This is
3658          * because the eventual initiator address used for the
3659          * subsequently created connection will be undefined (some
3660          * controllers use the new address and others the one we had
3661          * when the operation started).
3662          *
3663          * In this kind of scenario skip the update and let the random
3664          * address be updated at the next cycle.
3665          */
3666         if (test_bit(HCI_ADVERTISING, &hdev->dev_flags) ||
3667             hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECT)) {
3668                 BT_DBG("Deferring random address update");
3669                 return;
3670         }
3671
3672         hci_req_add(req, HCI_OP_LE_SET_RANDOM_ADDR, 6, rpa);
3673 }
3674
3675 int hci_update_random_address(struct hci_request *req, bool require_privacy,
3676                               u8 *own_addr_type)
3677 {
3678         struct hci_dev *hdev = req->hdev;
3679         int err;
3680
3681         /* If privacy is enabled use a resolvable private address. If
3682          * current RPA has expired or there is something else than
3683          * the current RPA in use, then generate a new one.
3684          */
3685         if (test_bit(HCI_PRIVACY, &hdev->dev_flags)) {
3686                 int to;
3687
3688                 *own_addr_type = ADDR_LE_DEV_RANDOM;
3689
3690                 if (!test_and_clear_bit(HCI_RPA_EXPIRED, &hdev->dev_flags) &&
3691                     !bacmp(&hdev->random_addr, &hdev->rpa))
3692                         return 0;
3693
3694                 err = smp_generate_rpa(hdev->tfm_aes, hdev->irk, &hdev->rpa);
3695                 if (err < 0) {
3696                         BT_ERR("%s failed to generate new RPA", hdev->name);
3697                         return err;
3698                 }
3699
3700                 set_random_addr(req, &hdev->rpa);
3701
3702                 to = msecs_to_jiffies(hdev->rpa_timeout * 1000);
3703                 queue_delayed_work(hdev->workqueue, &hdev->rpa_expired, to);
3704
3705                 return 0;
3706         }
3707
3708         /* In case of required privacy without resolvable private address,
3709          * use an unresolvable private address. This is useful for active
3710          * scanning and non-connectable advertising.
3711          */
3712         if (require_privacy) {
3713                 bdaddr_t urpa;
3714
3715                 get_random_bytes(&urpa, 6);
3716                 urpa.b[5] &= 0x3f;      /* Clear two most significant bits */
3717
3718                 *own_addr_type = ADDR_LE_DEV_RANDOM;
3719                 set_random_addr(req, &urpa);
3720                 return 0;
3721         }
3722
3723         /* If forcing static address is in use or there is no public
3724          * address use the static address as random address (but skip
3725          * the HCI command if the current random address is already the
3726          * static one.
3727          */
3728         if (test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dev_flags) ||
3729             !bacmp(&hdev->bdaddr, BDADDR_ANY)) {
3730                 *own_addr_type = ADDR_LE_DEV_RANDOM;
3731                 if (bacmp(&hdev->static_addr, &hdev->random_addr))
3732                         hci_req_add(req, HCI_OP_LE_SET_RANDOM_ADDR, 6,
3733                                     &hdev->static_addr);
3734                 return 0;
3735         }
3736
3737         /* Neither privacy nor static address is being used so use a
3738          * public address.
3739          */
3740         *own_addr_type = ADDR_LE_DEV_PUBLIC;
3741
3742         return 0;
3743 }
3744
3745 /* Copy the Identity Address of the controller.
3746  *
3747  * If the controller has a public BD_ADDR, then by default use that one.
3748  * If this is a LE only controller without a public address, default to
3749  * the static random address.
3750  *
3751  * For debugging purposes it is possible to force controllers with a
3752  * public address to use the static random address instead.
3753  */
3754 void hci_copy_identity_address(struct hci_dev *hdev, bdaddr_t *bdaddr,
3755                                u8 *bdaddr_type)
3756 {
3757         if (test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dev_flags) ||
3758             !bacmp(&hdev->bdaddr, BDADDR_ANY)) {
3759                 bacpy(bdaddr, &hdev->static_addr);
3760                 *bdaddr_type = ADDR_LE_DEV_RANDOM;
3761         } else {
3762                 bacpy(bdaddr, &hdev->bdaddr);
3763                 *bdaddr_type = ADDR_LE_DEV_PUBLIC;
3764         }
3765 }
3766
3767 /* Alloc HCI device */
3768 struct hci_dev *hci_alloc_dev(void)
3769 {
3770         struct hci_dev *hdev;
3771
3772         hdev = kzalloc(sizeof(struct hci_dev), GFP_KERNEL);
3773         if (!hdev)
3774                 return NULL;
3775
3776         hdev->pkt_type  = (HCI_DM1 | HCI_DH1 | HCI_HV1);
3777         hdev->esco_type = (ESCO_HV1);
3778         hdev->link_mode = (HCI_LM_ACCEPT);
3779         hdev->num_iac = 0x01;           /* One IAC support is mandatory */
3780         hdev->io_capability = 0x03;     /* No Input No Output */
3781         hdev->inq_tx_power = HCI_TX_POWER_INVALID;
3782         hdev->adv_tx_power = HCI_TX_POWER_INVALID;
3783
3784         hdev->sniff_max_interval = 800;
3785         hdev->sniff_min_interval = 80;
3786
3787         hdev->le_adv_channel_map = 0x07;
3788         hdev->le_scan_interval = 0x0060;
3789         hdev->le_scan_window = 0x0030;
3790         hdev->le_conn_min_interval = 0x0028;
3791         hdev->le_conn_max_interval = 0x0038;
3792
3793         hdev->rpa_timeout = HCI_DEFAULT_RPA_TIMEOUT;
3794
3795         mutex_init(&hdev->lock);
3796         mutex_init(&hdev->req_lock);
3797
3798         INIT_LIST_HEAD(&hdev->mgmt_pending);
3799         INIT_LIST_HEAD(&hdev->blacklist);
3800         INIT_LIST_HEAD(&hdev->uuids);
3801         INIT_LIST_HEAD(&hdev->link_keys);
3802         INIT_LIST_HEAD(&hdev->long_term_keys);
3803         INIT_LIST_HEAD(&hdev->identity_resolving_keys);
3804         INIT_LIST_HEAD(&hdev->remote_oob_data);
3805         INIT_LIST_HEAD(&hdev->le_white_list);
3806         INIT_LIST_HEAD(&hdev->le_conn_params);
3807         INIT_LIST_HEAD(&hdev->pend_le_conns);
3808         INIT_LIST_HEAD(&hdev->conn_hash.list);
3809
3810         INIT_WORK(&hdev->rx_work, hci_rx_work);
3811         INIT_WORK(&hdev->cmd_work, hci_cmd_work);
3812         INIT_WORK(&hdev->tx_work, hci_tx_work);
3813         INIT_WORK(&hdev->power_on, hci_power_on);
3814
3815         INIT_DELAYED_WORK(&hdev->power_off, hci_power_off);
3816         INIT_DELAYED_WORK(&hdev->discov_off, hci_discov_off);
3817         INIT_DELAYED_WORK(&hdev->le_scan_disable, le_scan_disable_work);
3818
3819         skb_queue_head_init(&hdev->rx_q);
3820         skb_queue_head_init(&hdev->cmd_q);
3821         skb_queue_head_init(&hdev->raw_q);
3822
3823         init_waitqueue_head(&hdev->req_wait_q);
3824
3825         setup_timer(&hdev->cmd_timer, hci_cmd_timeout, (unsigned long) hdev);
3826
3827         hci_init_sysfs(hdev);
3828         discovery_init(hdev);
3829
3830         return hdev;
3831 }
3832 EXPORT_SYMBOL(hci_alloc_dev);
3833
3834 /* Free HCI device */
3835 void hci_free_dev(struct hci_dev *hdev)
3836 {
3837         /* will free via device release */
3838         put_device(&hdev->dev);
3839 }
3840 EXPORT_SYMBOL(hci_free_dev);
3841
3842 /* Register HCI device */
3843 int hci_register_dev(struct hci_dev *hdev)
3844 {
3845         int id, error;
3846
3847         if (!hdev->open || !hdev->close)
3848                 return -EINVAL;
3849
3850         /* Do not allow HCI_AMP devices to register at index 0,
3851          * so the index can be used as the AMP controller ID.
3852          */
3853         switch (hdev->dev_type) {
3854         case HCI_BREDR:
3855                 id = ida_simple_get(&hci_index_ida, 0, 0, GFP_KERNEL);
3856                 break;
3857         case HCI_AMP:
3858                 id = ida_simple_get(&hci_index_ida, 1, 0, GFP_KERNEL);
3859                 break;
3860         default:
3861                 return -EINVAL;
3862         }
3863
3864         if (id < 0)
3865                 return id;
3866
3867         sprintf(hdev->name, "hci%d", id);
3868         hdev->id = id;
3869
3870         BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
3871
3872         hdev->workqueue = alloc_workqueue("%s", WQ_HIGHPRI | WQ_UNBOUND |
3873                                           WQ_MEM_RECLAIM, 1, hdev->name);
3874         if (!hdev->workqueue) {
3875                 error = -ENOMEM;
3876                 goto err;
3877         }
3878
3879         hdev->req_workqueue = alloc_workqueue("%s", WQ_HIGHPRI | WQ_UNBOUND |
3880                                               WQ_MEM_RECLAIM, 1, hdev->name);
3881         if (!hdev->req_workqueue) {
3882                 destroy_workqueue(hdev->workqueue);
3883                 error = -ENOMEM;
3884                 goto err;
3885         }
3886
3887         if (!IS_ERR_OR_NULL(bt_debugfs))
3888                 hdev->debugfs = debugfs_create_dir(hdev->name, bt_debugfs);
3889
3890         dev_set_name(&hdev->dev, "%s", hdev->name);
3891
3892         hdev->tfm_aes = crypto_alloc_blkcipher("ecb(aes)", 0,
3893                                                CRYPTO_ALG_ASYNC);
3894         if (IS_ERR(hdev->tfm_aes)) {
3895                 BT_ERR("Unable to create crypto context");
3896                 error = PTR_ERR(hdev->tfm_aes);
3897                 hdev->tfm_aes = NULL;
3898                 goto err_wqueue;
3899         }
3900
3901         error = device_add(&hdev->dev);
3902         if (error < 0)
3903                 goto err_tfm;
3904
3905         hdev->rfkill = rfkill_alloc(hdev->name, &hdev->dev,
3906                                     RFKILL_TYPE_BLUETOOTH, &hci_rfkill_ops,
3907                                     hdev);
3908         if (hdev->rfkill) {
3909                 if (rfkill_register(hdev->rfkill) < 0) {
3910                         rfkill_destroy(hdev->rfkill);
3911                         hdev->rfkill = NULL;
3912                 }
3913         }
3914
3915         if (hdev->rfkill && rfkill_blocked(hdev->rfkill))
3916                 set_bit(HCI_RFKILLED, &hdev->dev_flags);
3917
3918         set_bit(HCI_SETUP, &hdev->dev_flags);
3919         set_bit(HCI_AUTO_OFF, &hdev->dev_flags);
3920
3921         if (hdev->dev_type == HCI_BREDR) {
3922                 /* Assume BR/EDR support until proven otherwise (such as
3923                  * through reading supported features during init.
3924                  */
3925                 set_bit(HCI_BREDR_ENABLED, &hdev->dev_flags);
3926         }
3927
3928         write_lock(&hci_dev_list_lock);
3929         list_add(&hdev->list, &hci_dev_list);
3930         write_unlock(&hci_dev_list_lock);
3931
3932         hci_notify(hdev, HCI_DEV_REG);
3933         hci_dev_hold(hdev);
3934
3935         queue_work(hdev->req_workqueue, &hdev->power_on);
3936
3937         return id;
3938
3939 err_tfm:
3940         crypto_free_blkcipher(hdev->tfm_aes);
3941 err_wqueue:
3942         destroy_workqueue(hdev->workqueue);
3943         destroy_workqueue(hdev->req_workqueue);
3944 err:
3945         ida_simple_remove(&hci_index_ida, hdev->id);
3946
3947         return error;
3948 }
3949 EXPORT_SYMBOL(hci_register_dev);
3950
3951 /* Unregister HCI device */
3952 void hci_unregister_dev(struct hci_dev *hdev)
3953 {
3954         int i, id;
3955
3956         BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
3957
3958         set_bit(HCI_UNREGISTER, &hdev->dev_flags);
3959
3960         id = hdev->id;
3961
3962         write_lock(&hci_dev_list_lock);
3963         list_del(&hdev->list);
3964         write_unlock(&hci_dev_list_lock);
3965
3966         hci_dev_do_close(hdev);
3967
3968         for (i = 0; i < NUM_REASSEMBLY; i++)
3969                 kfree_skb(hdev->reassembly[i]);
3970
3971         cancel_work_sync(&hdev->power_on);
3972
3973         if (!test_bit(HCI_INIT, &hdev->flags) &&
3974             !test_bit(HCI_SETUP, &hdev->dev_flags)) {
3975                 hci_dev_lock(hdev);
3976                 mgmt_index_removed(hdev);
3977                 hci_dev_unlock(hdev);
3978         }
3979
3980         /* mgmt_index_removed should take care of emptying the
3981          * pending list */
3982         BUG_ON(!list_empty(&hdev->mgmt_pending));
3983
3984         hci_notify(hdev, HCI_DEV_UNREG);
3985
3986         if (hdev->rfkill) {
3987                 rfkill_unregister(hdev->rfkill);
3988                 rfkill_destroy(hdev->rfkill);
3989         }
3990
3991         if (hdev->tfm_aes)
3992                 crypto_free_blkcipher(hdev->tfm_aes);
3993
3994         device_del(&hdev->dev);
3995
3996         debugfs_remove_recursive(hdev->debugfs);
3997
3998         destroy_workqueue(hdev->workqueue);
3999         destroy_workqueue(hdev->req_workqueue);
4000
4001         hci_dev_lock(hdev);
4002         hci_blacklist_clear(hdev);
4003         hci_uuids_clear(hdev);
4004         hci_link_keys_clear(hdev);
4005         hci_smp_ltks_clear(hdev);
4006         hci_smp_irks_clear(hdev);
4007         hci_remote_oob_data_clear(hdev);
4008         hci_white_list_clear(hdev);
4009         hci_conn_params_clear(hdev);
4010         hci_pend_le_conns_clear(hdev);
4011         hci_dev_unlock(hdev);
4012
4013         hci_dev_put(hdev);
4014
4015         ida_simple_remove(&hci_index_ida, id);
4016 }
4017 EXPORT_SYMBOL(hci_unregister_dev);
4018
4019 /* Suspend HCI device */
4020 int hci_suspend_dev(struct hci_dev *hdev)
4021 {
4022         hci_notify(hdev, HCI_DEV_SUSPEND);
4023         return 0;
4024 }
4025 EXPORT_SYMBOL(hci_suspend_dev);
4026
4027 /* Resume HCI device */
4028 int hci_resume_dev(struct hci_dev *hdev)
4029 {
4030         hci_notify(hdev, HCI_DEV_RESUME);
4031         return 0;
4032 }
4033 EXPORT_SYMBOL(hci_resume_dev);
4034
4035 /* Receive frame from HCI drivers */
4036 int hci_recv_frame(struct hci_dev *hdev, struct sk_buff *skb)
4037 {
4038         if (!hdev || (!test_bit(HCI_UP, &hdev->flags)
4039                       && !test_bit(HCI_INIT, &hdev->flags))) {
4040                 kfree_skb(skb);
4041                 return -ENXIO;
4042         }
4043
4044         /* Incoming skb */
4045         bt_cb(skb)->incoming = 1;
4046
4047         /* Time stamp */
4048         __net_timestamp(skb);
4049
4050         skb_queue_tail(&hdev->rx_q, skb);
4051         queue_work(hdev->workqueue, &hdev->rx_work);
4052
4053         return 0;
4054 }
4055 EXPORT_SYMBOL(hci_recv_frame);
4056
4057 static int hci_reassembly(struct hci_dev *hdev, int type, void *data,
4058                           int count, __u8 index)
4059 {
4060         int len = 0;
4061         int hlen = 0;
4062         int remain = count;
4063         struct sk_buff *skb;
4064         struct bt_skb_cb *scb;
4065
4066         if ((type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT) ||
4067             index >= NUM_REASSEMBLY)
4068                 return -EILSEQ;
4069
4070         skb = hdev->reassembly[index];
4071
4072         if (!skb) {
4073                 switch (type) {
4074                 case HCI_ACLDATA_PKT:
4075                         len = HCI_MAX_FRAME_SIZE;
4076                         hlen = HCI_ACL_HDR_SIZE;
4077                         break;
4078                 case HCI_EVENT_PKT:
4079                         len = HCI_MAX_EVENT_SIZE;
4080                         hlen = HCI_EVENT_HDR_SIZE;
4081                         break;
4082                 case HCI_SCODATA_PKT:
4083                         len = HCI_MAX_SCO_SIZE;
4084                         hlen = HCI_SCO_HDR_SIZE;
4085                         break;
4086                 }
4087
4088                 skb = bt_skb_alloc(len, GFP_ATOMIC);
4089                 if (!skb)
4090                         return -ENOMEM;
4091
4092                 scb = (void *) skb->cb;
4093                 scb->expect = hlen;
4094                 scb->pkt_type = type;
4095
4096                 hdev->reassembly[index] = skb;
4097         }
4098
4099         while (count) {
4100                 scb = (void *) skb->cb;
4101                 len = min_t(uint, scb->expect, count);
4102
4103                 memcpy(skb_put(skb, len), data, len);
4104
4105                 count -= len;
4106                 data += len;
4107                 scb->expect -= len;
4108                 remain = count;
4109
4110                 switch (type) {
4111                 case HCI_EVENT_PKT:
4112                         if (skb->len == HCI_EVENT_HDR_SIZE) {
4113                                 struct hci_event_hdr *h = hci_event_hdr(skb);
4114                                 scb->expect = h->plen;
4115
4116                                 if (skb_tailroom(skb) < scb->expect) {
4117                                         kfree_skb(skb);
4118                                         hdev->reassembly[index] = NULL;
4119                                         return -ENOMEM;
4120                                 }
4121                         }
4122                         break;
4123
4124                 case HCI_ACLDATA_PKT:
4125                         if (skb->len  == HCI_ACL_HDR_SIZE) {
4126                                 struct hci_acl_hdr *h = hci_acl_hdr(skb);
4127                                 scb->expect = __le16_to_cpu(h->dlen);
4128
4129                                 if (skb_tailroom(skb) < scb->expect) {
4130                                         kfree_skb(skb);
4131                                         hdev->reassembly[index] = NULL;
4132                                         return -ENOMEM;
4133                                 }
4134                         }
4135                         break;
4136
4137                 case HCI_SCODATA_PKT:
4138                         if (skb->len == HCI_SCO_HDR_SIZE) {
4139                                 struct hci_sco_hdr *h = hci_sco_hdr(skb);
4140                                 scb->expect = h->dlen;
4141
4142                                 if (skb_tailroom(skb) < scb->expect) {
4143                                         kfree_skb(skb);
4144                                         hdev->reassembly[index] = NULL;
4145                                         return -ENOMEM;
4146                                 }
4147                         }
4148                         break;
4149                 }
4150
4151                 if (scb->expect == 0) {
4152                         /* Complete frame */
4153
4154                         bt_cb(skb)->pkt_type = type;
4155                         hci_recv_frame(hdev, skb);
4156
4157                         hdev->reassembly[index] = NULL;
4158                         return remain;
4159                 }
4160         }
4161
4162         return remain;
4163 }
4164
4165 int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count)
4166 {
4167         int rem = 0;
4168
4169         if (type < HCI_ACLDATA_PKT || type > HCI_EVENT_PKT)
4170                 return -EILSEQ;
4171
4172         while (count) {
4173                 rem = hci_reassembly(hdev, type, data, count, type - 1);
4174                 if (rem < 0)
4175                         return rem;
4176
4177                 data += (count - rem);
4178                 count = rem;
4179         }
4180
4181         return rem;
4182 }
4183 EXPORT_SYMBOL(hci_recv_fragment);
4184
4185 #define STREAM_REASSEMBLY 0
4186
4187 int hci_recv_stream_fragment(struct hci_dev *hdev, void *data, int count)
4188 {
4189         int type;
4190         int rem = 0;
4191
4192         while (count) {
4193                 struct sk_buff *skb = hdev->reassembly[STREAM_REASSEMBLY];
4194
4195                 if (!skb) {
4196                         struct { char type; } *pkt;
4197
4198                         /* Start of the frame */
4199                         pkt = data;
4200                         type = pkt->type;
4201
4202                         data++;
4203                         count--;
4204                 } else
4205                         type = bt_cb(skb)->pkt_type;
4206
4207                 rem = hci_reassembly(hdev, type, data, count,
4208                                      STREAM_REASSEMBLY);
4209                 if (rem < 0)
4210                         return rem;
4211
4212                 data += (count - rem);
4213                 count = rem;
4214         }
4215
4216         return rem;
4217 }
4218 EXPORT_SYMBOL(hci_recv_stream_fragment);
4219
4220 /* ---- Interface to upper protocols ---- */
4221
4222 int hci_register_cb(struct hci_cb *cb)
4223 {
4224         BT_DBG("%p name %s", cb, cb->name);
4225
4226         write_lock(&hci_cb_list_lock);
4227         list_add(&cb->list, &hci_cb_list);
4228         write_unlock(&hci_cb_list_lock);
4229
4230         return 0;
4231 }
4232 EXPORT_SYMBOL(hci_register_cb);
4233
4234 int hci_unregister_cb(struct hci_cb *cb)
4235 {
4236         BT_DBG("%p name %s", cb, cb->name);
4237
4238         write_lock(&hci_cb_list_lock);
4239         list_del(&cb->list);
4240         write_unlock(&hci_cb_list_lock);
4241
4242         return 0;
4243 }
4244 EXPORT_SYMBOL(hci_unregister_cb);
4245
4246 static void hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
4247 {
4248         BT_DBG("%s type %d len %d", hdev->name, bt_cb(skb)->pkt_type, skb->len);
4249
4250         /* Time stamp */
4251         __net_timestamp(skb);
4252
4253         /* Send copy to monitor */
4254         hci_send_to_monitor(hdev, skb);
4255
4256         if (atomic_read(&hdev->promisc)) {
4257                 /* Send copy to the sockets */
4258                 hci_send_to_sock(hdev, skb);
4259         }
4260
4261         /* Get rid of skb owner, prior to sending to the driver. */
4262         skb_orphan(skb);
4263
4264         if (hdev->send(hdev, skb) < 0)
4265                 BT_ERR("%s sending frame failed", hdev->name);
4266 }
4267
4268 void hci_req_init(struct hci_request *req, struct hci_dev *hdev)
4269 {
4270         skb_queue_head_init(&req->cmd_q);
4271         req->hdev = hdev;
4272         req->err = 0;
4273 }
4274
4275 int hci_req_run(struct hci_request *req, hci_req_complete_t complete)
4276 {
4277         struct hci_dev *hdev = req->hdev;
4278         struct sk_buff *skb;
4279         unsigned long flags;
4280
4281         BT_DBG("length %u", skb_queue_len(&req->cmd_q));
4282
4283         /* If an error occured during request building, remove all HCI
4284          * commands queued on the HCI request queue.
4285          */
4286         if (req->err) {
4287                 skb_queue_purge(&req->cmd_q);
4288                 return req->err;
4289         }
4290
4291         /* Do not allow empty requests */
4292         if (skb_queue_empty(&req->cmd_q))
4293                 return -ENODATA;
4294
4295         skb = skb_peek_tail(&req->cmd_q);
4296         bt_cb(skb)->req.complete = complete;
4297
4298         spin_lock_irqsave(&hdev->cmd_q.lock, flags);
4299         skb_queue_splice_tail(&req->cmd_q, &hdev->cmd_q);
4300         spin_unlock_irqrestore(&hdev->cmd_q.lock, flags);
4301
4302         queue_work(hdev->workqueue, &hdev->cmd_work);
4303
4304         return 0;
4305 }
4306
4307 static struct sk_buff *hci_prepare_cmd(struct hci_dev *hdev, u16 opcode,
4308                                        u32 plen, const void *param)
4309 {
4310         int len = HCI_COMMAND_HDR_SIZE + plen;
4311         struct hci_command_hdr *hdr;
4312         struct sk_buff *skb;
4313
4314         skb = bt_skb_alloc(len, GFP_ATOMIC);
4315         if (!skb)
4316                 return NULL;
4317
4318         hdr = (struct hci_command_hdr *) skb_put(skb, HCI_COMMAND_HDR_SIZE);
4319         hdr->opcode = cpu_to_le16(opcode);
4320         hdr->plen   = plen;
4321
4322         if (plen)
4323                 memcpy(skb_put(skb, plen), param, plen);
4324
4325         BT_DBG("skb len %d", skb->len);
4326
4327         bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
4328
4329         return skb;
4330 }
4331
4332 /* Send HCI command */
4333 int hci_send_cmd(struct hci_dev *hdev, __u16 opcode, __u32 plen,
4334                  const void *param)
4335 {
4336         struct sk_buff *skb;
4337
4338         BT_DBG("%s opcode 0x%4.4x plen %d", hdev->name, opcode, plen);
4339
4340         skb = hci_prepare_cmd(hdev, opcode, plen, param);
4341         if (!skb) {
4342                 BT_ERR("%s no memory for command", hdev->name);
4343                 return -ENOMEM;
4344         }
4345
4346         /* Stand-alone HCI commands must be flaged as
4347          * single-command requests.
4348          */
4349         bt_cb(skb)->req.start = true;
4350
4351         skb_queue_tail(&hdev->cmd_q, skb);
4352         queue_work(hdev->workqueue, &hdev->cmd_work);
4353
4354         return 0;
4355 }
4356
4357 /* Queue a command to an asynchronous HCI request */
4358 void hci_req_add_ev(struct hci_request *req, u16 opcode, u32 plen,
4359                     const void *param, u8 event)
4360 {
4361         struct hci_dev *hdev = req->hdev;
4362         struct sk_buff *skb;
4363
4364         BT_DBG("%s opcode 0x%4.4x plen %d", hdev->name, opcode, plen);
4365
4366         /* If an error occured during request building, there is no point in
4367          * queueing the HCI command. We can simply return.
4368          */
4369         if (req->err)
4370                 return;
4371
4372         skb = hci_prepare_cmd(hdev, opcode, plen, param);
4373         if (!skb) {
4374                 BT_ERR("%s no memory for command (opcode 0x%4.4x)",
4375                        hdev->name, opcode);
4376                 req->err = -ENOMEM;
4377                 return;
4378         }
4379
4380         if (skb_queue_empty(&req->cmd_q))
4381                 bt_cb(skb)->req.start = true;
4382
4383         bt_cb(skb)->req.event = event;
4384
4385         skb_queue_tail(&req->cmd_q, skb);
4386 }
4387
4388 void hci_req_add(struct hci_request *req, u16 opcode, u32 plen,
4389                  const void *param)
4390 {
4391         hci_req_add_ev(req, opcode, plen, param, 0);
4392 }
4393
4394 /* Get data from the previously sent command */
4395 void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 opcode)
4396 {
4397         struct hci_command_hdr *hdr;
4398
4399         if (!hdev->sent_cmd)
4400                 return NULL;
4401
4402         hdr = (void *) hdev->sent_cmd->data;
4403
4404         if (hdr->opcode != cpu_to_le16(opcode))
4405                 return NULL;
4406
4407         BT_DBG("%s opcode 0x%4.4x", hdev->name, opcode);
4408
4409         return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE;
4410 }
4411
4412 /* Send ACL data */
4413 static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags)
4414 {
4415         struct hci_acl_hdr *hdr;
4416         int len = skb->len;
4417
4418         skb_push(skb, HCI_ACL_HDR_SIZE);
4419         skb_reset_transport_header(skb);
4420         hdr = (struct hci_acl_hdr *)skb_transport_header(skb);
4421         hdr->handle = cpu_to_le16(hci_handle_pack(handle, flags));
4422         hdr->dlen   = cpu_to_le16(len);
4423 }
4424
4425 static void hci_queue_acl(struct hci_chan *chan, struct sk_buff_head *queue,
4426                           struct sk_buff *skb, __u16 flags)
4427 {
4428         struct hci_conn *conn = chan->conn;
4429         struct hci_dev *hdev = conn->hdev;
4430         struct sk_buff *list;
4431
4432         skb->len = skb_headlen(skb);
4433         skb->data_len = 0;
4434
4435         bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
4436
4437         switch (hdev->dev_type) {
4438         case HCI_BREDR:
4439                 hci_add_acl_hdr(skb, conn->handle, flags);
4440                 break;
4441         case HCI_AMP:
4442                 hci_add_acl_hdr(skb, chan->handle, flags);
4443                 break;
4444         default:
4445                 BT_ERR("%s unknown dev_type %d", hdev->name, hdev->dev_type);
4446                 return;
4447         }
4448
4449         list = skb_shinfo(skb)->frag_list;
4450         if (!list) {
4451                 /* Non fragmented */
4452                 BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
4453
4454                 skb_queue_tail(queue, skb);
4455         } else {
4456                 /* Fragmented */
4457                 BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
4458
4459                 skb_shinfo(skb)->frag_list = NULL;
4460
4461                 /* Queue all fragments atomically */
4462                 spin_lock(&queue->lock);
4463
4464                 __skb_queue_tail(queue, skb);
4465
4466                 flags &= ~ACL_START;
4467                 flags |= ACL_CONT;
4468                 do {
4469                         skb = list; list = list->next;
4470
4471                         bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
4472                         hci_add_acl_hdr(skb, conn->handle, flags);
4473
4474                         BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
4475
4476                         __skb_queue_tail(queue, skb);
4477                 } while (list);
4478
4479                 spin_unlock(&queue->lock);
4480         }
4481 }
4482
4483 void hci_send_acl(struct hci_chan *chan, struct sk_buff *skb, __u16 flags)
4484 {
4485         struct hci_dev *hdev = chan->conn->hdev;
4486
4487         BT_DBG("%s chan %p flags 0x%4.4x", hdev->name, chan, flags);
4488
4489         hci_queue_acl(chan, &chan->data_q, skb, flags);
4490
4491         queue_work(hdev->workqueue, &hdev->tx_work);
4492 }
4493
4494 /* Send SCO data */
4495 void hci_send_sco(struct hci_conn *conn, struct sk_buff *skb)
4496 {
4497         struct hci_dev *hdev = conn->hdev;
4498         struct hci_sco_hdr hdr;
4499
4500         BT_DBG("%s len %d", hdev->name, skb->len);
4501
4502         hdr.handle = cpu_to_le16(conn->handle);
4503         hdr.dlen   = skb->len;
4504
4505         skb_push(skb, HCI_SCO_HDR_SIZE);
4506         skb_reset_transport_header(skb);
4507         memcpy(skb_transport_header(skb), &hdr, HCI_SCO_HDR_SIZE);
4508
4509         bt_cb(skb)->pkt_type = HCI_SCODATA_PKT;
4510
4511         skb_queue_tail(&conn->data_q, skb);
4512         queue_work(hdev->workqueue, &hdev->tx_work);
4513 }
4514
4515 /* ---- HCI TX task (outgoing data) ---- */
4516
4517 /* HCI Connection scheduler */
4518 static struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type,
4519                                      int *quote)
4520 {
4521         struct hci_conn_hash *h = &hdev->conn_hash;
4522         struct hci_conn *conn = NULL, *c;
4523         unsigned int num = 0, min = ~0;
4524
4525         /* We don't have to lock device here. Connections are always
4526          * added and removed with TX task disabled. */
4527
4528         rcu_read_lock();
4529
4530         list_for_each_entry_rcu(c, &h->list, list) {
4531                 if (c->type != type || skb_queue_empty(&c->data_q))
4532                         continue;
4533
4534                 if (c->state != BT_CONNECTED && c->state != BT_CONFIG)
4535                         continue;
4536
4537                 num++;
4538
4539                 if (c->sent < min) {
4540                         min  = c->sent;
4541                         conn = c;
4542                 }
4543
4544                 if (hci_conn_num(hdev, type) == num)
4545                         break;
4546         }
4547
4548         rcu_read_unlock();
4549
4550         if (conn) {
4551                 int cnt, q;
4552
4553                 switch (conn->type) {
4554                 case ACL_LINK:
4555                         cnt = hdev->acl_cnt;
4556                         break;
4557                 case SCO_LINK:
4558                 case ESCO_LINK:
4559                         cnt = hdev->sco_cnt;
4560                         break;
4561                 case LE_LINK:
4562                         cnt = hdev->le_mtu ? hdev->le_cnt : hdev->acl_cnt;
4563                         break;
4564                 default:
4565                         cnt = 0;
4566                         BT_ERR("Unknown link type");
4567                 }
4568
4569                 q = cnt / num;
4570                 *quote = q ? q : 1;
4571         } else
4572                 *quote = 0;
4573
4574         BT_DBG("conn %p quote %d", conn, *quote);
4575         return conn;
4576 }
4577
4578 static void hci_link_tx_to(struct hci_dev *hdev, __u8 type)
4579 {
4580         struct hci_conn_hash *h = &hdev->conn_hash;
4581         struct hci_conn *c;
4582
4583         BT_ERR("%s link tx timeout", hdev->name);
4584
4585         rcu_read_lock();
4586
4587         /* Kill stalled connections */
4588         list_for_each_entry_rcu(c, &h->list, list) {
4589                 if (c->type == type && c->sent) {
4590                         BT_ERR("%s killing stalled connection %pMR",
4591                                hdev->name, &c->dst);
4592                         hci_disconnect(c, HCI_ERROR_REMOTE_USER_TERM);
4593                 }
4594         }
4595
4596         rcu_read_unlock();
4597 }
4598
4599 static struct hci_chan *hci_chan_sent(struct hci_dev *hdev, __u8 type,
4600                                       int *quote)
4601 {
4602         struct hci_conn_hash *h = &hdev->conn_hash;
4603         struct hci_chan *chan = NULL;
4604         unsigned int num = 0, min = ~0, cur_prio = 0;
4605         struct hci_conn *conn;
4606         int cnt, q, conn_num = 0;
4607
4608         BT_DBG("%s", hdev->name);
4609
4610         rcu_read_lock();
4611
4612         list_for_each_entry_rcu(conn, &h->list, list) {
4613                 struct hci_chan *tmp;
4614
4615                 if (conn->type != type)
4616                         continue;
4617
4618                 if (conn->state != BT_CONNECTED && conn->state != BT_CONFIG)
4619                         continue;
4620
4621                 conn_num++;
4622
4623                 list_for_each_entry_rcu(tmp, &conn->chan_list, list) {
4624                         struct sk_buff *skb;
4625
4626                         if (skb_queue_empty(&tmp->data_q))
4627                                 continue;
4628
4629                         skb = skb_peek(&tmp->data_q);
4630                         if (skb->priority < cur_prio)
4631                                 continue;
4632
4633                         if (skb->priority > cur_prio) {
4634                                 num = 0;
4635                                 min = ~0;
4636                                 cur_prio = skb->priority;
4637                         }
4638
4639                         num++;
4640
4641                         if (conn->sent < min) {
4642                                 min  = conn->sent;
4643                                 chan = tmp;
4644                         }
4645                 }
4646
4647                 if (hci_conn_num(hdev, type) == conn_num)
4648                         break;
4649         }
4650
4651         rcu_read_unlock();
4652
4653         if (!chan)
4654                 return NULL;
4655
4656         switch (chan->conn->type) {
4657         case ACL_LINK:
4658                 cnt = hdev->acl_cnt;
4659                 break;
4660         case AMP_LINK:
4661                 cnt = hdev->block_cnt;
4662                 break;
4663         case SCO_LINK:
4664         case ESCO_LINK:
4665                 cnt = hdev->sco_cnt;
4666                 break;
4667         case LE_LINK:
4668                 cnt = hdev->le_mtu ? hdev->le_cnt : hdev->acl_cnt;
4669                 break;
4670         default:
4671                 cnt = 0;
4672                 BT_ERR("Unknown link type");
4673         }
4674
4675         q = cnt / num;
4676         *quote = q ? q : 1;
4677         BT_DBG("chan %p quote %d", chan, *quote);
4678         return chan;
4679 }
4680
4681 static void hci_prio_recalculate(struct hci_dev *hdev, __u8 type)
4682 {
4683         struct hci_conn_hash *h = &hdev->conn_hash;
4684         struct hci_conn *conn;
4685         int num = 0;
4686
4687         BT_DBG("%s", hdev->name);
4688
4689         rcu_read_lock();
4690
4691         list_for_each_entry_rcu(conn, &h->list, list) {
4692                 struct hci_chan *chan;
4693
4694                 if (conn->type != type)
4695                         continue;
4696
4697                 if (conn->state != BT_CONNECTED && conn->state != BT_CONFIG)
4698                         continue;
4699
4700                 num++;
4701
4702                 list_for_each_entry_rcu(chan, &conn->chan_list, list) {
4703                         struct sk_buff *skb;
4704
4705                         if (chan->sent) {
4706                                 chan->sent = 0;
4707                                 continue;
4708                         }
4709
4710                         if (skb_queue_empty(&chan->data_q))
4711                                 continue;
4712
4713                         skb = skb_peek(&chan->data_q);
4714                         if (skb->priority >= HCI_PRIO_MAX - 1)
4715                                 continue;
4716
4717                         skb->priority = HCI_PRIO_MAX - 1;
4718
4719                         BT_DBG("chan %p skb %p promoted to %d", chan, skb,
4720                                skb->priority);
4721                 }
4722
4723                 if (hci_conn_num(hdev, type) == num)
4724                         break;
4725         }
4726
4727         rcu_read_unlock();
4728
4729 }
4730
4731 static inline int __get_blocks(struct hci_dev *hdev, struct sk_buff *skb)
4732 {
4733         /* Calculate count of blocks used by this packet */
4734         return DIV_ROUND_UP(skb->len - HCI_ACL_HDR_SIZE, hdev->block_len);
4735 }
4736
4737 static void __check_timeout(struct hci_dev *hdev, unsigned int cnt)
4738 {
4739         if (!test_bit(HCI_RAW, &hdev->flags)) {
4740                 /* ACL tx timeout must be longer than maximum
4741                  * link supervision timeout (40.9 seconds) */
4742                 if (!cnt && time_after(jiffies, hdev->acl_last_tx +
4743                                        HCI_ACL_TX_TIMEOUT))
4744                         hci_link_tx_to(hdev, ACL_LINK);
4745         }
4746 }
4747
4748 static void hci_sched_acl_pkt(struct hci_dev *hdev)
4749 {
4750         unsigned int cnt = hdev->acl_cnt;
4751         struct hci_chan *chan;
4752         struct sk_buff *skb;
4753         int quote;
4754
4755         __check_timeout(hdev, cnt);
4756
4757         while (hdev->acl_cnt &&
4758                (chan = hci_chan_sent(hdev, ACL_LINK, &quote))) {
4759                 u32 priority = (skb_peek(&chan->data_q))->priority;
4760                 while (quote-- && (skb = skb_peek(&chan->data_q))) {
4761                         BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
4762                                skb->len, skb->priority);
4763
4764                         /* Stop if priority has changed */
4765                         if (skb->priority < priority)
4766                                 break;
4767
4768                         skb = skb_dequeue(&chan->data_q);
4769
4770                         hci_conn_enter_active_mode(chan->conn,
4771                                                    bt_cb(skb)->force_active);
4772
4773                         hci_send_frame(hdev, skb);
4774                         hdev->acl_last_tx = jiffies;
4775
4776                         hdev->acl_cnt--;
4777                         chan->sent++;
4778                         chan->conn->sent++;
4779                 }
4780         }
4781
4782         if (cnt != hdev->acl_cnt)
4783                 hci_prio_recalculate(hdev, ACL_LINK);
4784 }
4785
4786 static void hci_sched_acl_blk(struct hci_dev *hdev)
4787 {
4788         unsigned int cnt = hdev->block_cnt;
4789         struct hci_chan *chan;
4790         struct sk_buff *skb;
4791         int quote;
4792         u8 type;
4793
4794         __check_timeout(hdev, cnt);
4795
4796         BT_DBG("%s", hdev->name);
4797
4798         if (hdev->dev_type == HCI_AMP)
4799                 type = AMP_LINK;
4800         else
4801                 type = ACL_LINK;
4802
4803         while (hdev->block_cnt > 0 &&
4804                (chan = hci_chan_sent(hdev, type, &quote))) {
4805                 u32 priority = (skb_peek(&chan->data_q))->priority;
4806                 while (quote > 0 && (skb = skb_peek(&chan->data_q))) {
4807                         int blocks;
4808
4809                         BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
4810                                skb->len, skb->priority);
4811
4812                         /* Stop if priority has changed */
4813                         if (skb->priority < priority)
4814                                 break;
4815
4816                         skb = skb_dequeue(&chan->data_q);
4817
4818                         blocks = __get_blocks(hdev, skb);
4819                         if (blocks > hdev->block_cnt)
4820                                 return;
4821
4822                         hci_conn_enter_active_mode(chan->conn,
4823                                                    bt_cb(skb)->force_active);
4824
4825                         hci_send_frame(hdev, skb);
4826                         hdev->acl_last_tx = jiffies;
4827
4828                         hdev->block_cnt -= blocks;
4829                         quote -= blocks;
4830
4831                         chan->sent += blocks;
4832                         chan->conn->sent += blocks;
4833                 }
4834         }
4835
4836         if (cnt != hdev->block_cnt)
4837                 hci_prio_recalculate(hdev, type);
4838 }
4839
4840 static void hci_sched_acl(struct hci_dev *hdev)
4841 {
4842         BT_DBG("%s", hdev->name);
4843
4844         /* No ACL link over BR/EDR controller */
4845         if (!hci_conn_num(hdev, ACL_LINK) && hdev->dev_type == HCI_BREDR)
4846                 return;
4847
4848         /* No AMP link over AMP controller */
4849         if (!hci_conn_num(hdev, AMP_LINK) && hdev->dev_type == HCI_AMP)
4850                 return;
4851
4852         switch (hdev->flow_ctl_mode) {
4853         case HCI_FLOW_CTL_MODE_PACKET_BASED:
4854                 hci_sched_acl_pkt(hdev);
4855                 break;
4856
4857         case HCI_FLOW_CTL_MODE_BLOCK_BASED:
4858                 hci_sched_acl_blk(hdev);
4859                 break;
4860         }
4861 }
4862
4863 /* Schedule SCO */
4864 static void hci_sched_sco(struct hci_dev *hdev)
4865 {
4866         struct hci_conn *conn;
4867         struct sk_buff *skb;
4868         int quote;
4869
4870         BT_DBG("%s", hdev->name);
4871
4872         if (!hci_conn_num(hdev, SCO_LINK))
4873                 return;
4874
4875         while (hdev->sco_cnt && (conn = hci_low_sent(hdev, SCO_LINK, &quote))) {
4876                 while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
4877                         BT_DBG("skb %p len %d", skb, skb->len);
4878                         hci_send_frame(hdev, skb);
4879
4880                         conn->sent++;
4881                         if (conn->sent == ~0)
4882                                 conn->sent = 0;
4883                 }
4884         }
4885 }
4886
4887 static void hci_sched_esco(struct hci_dev *hdev)
4888 {
4889         struct hci_conn *conn;
4890         struct sk_buff *skb;
4891         int quote;
4892
4893         BT_DBG("%s", hdev->name);
4894
4895         if (!hci_conn_num(hdev, ESCO_LINK))
4896                 return;
4897
4898         while (hdev->sco_cnt && (conn = hci_low_sent(hdev, ESCO_LINK,
4899                                                      &quote))) {
4900                 while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
4901                         BT_DBG("skb %p len %d", skb, skb->len);
4902                         hci_send_frame(hdev, skb);
4903
4904                         conn->sent++;
4905                         if (conn->sent == ~0)
4906                                 conn->sent = 0;
4907                 }
4908         }
4909 }
4910
4911 static void hci_sched_le(struct hci_dev *hdev)
4912 {
4913         struct hci_chan *chan;
4914         struct sk_buff *skb;
4915         int quote, cnt, tmp;
4916
4917         BT_DBG("%s", hdev->name);
4918
4919         if (!hci_conn_num(hdev, LE_LINK))
4920                 return;
4921
4922         if (!test_bit(HCI_RAW, &hdev->flags)) {
4923                 /* LE tx timeout must be longer than maximum
4924                  * link supervision timeout (40.9 seconds) */
4925                 if (!hdev->le_cnt && hdev->le_pkts &&
4926                     time_after(jiffies, hdev->le_last_tx + HZ * 45))
4927                         hci_link_tx_to(hdev, LE_LINK);
4928         }
4929
4930         cnt = hdev->le_pkts ? hdev->le_cnt : hdev->acl_cnt;
4931         tmp = cnt;
4932         while (cnt && (chan = hci_chan_sent(hdev, LE_LINK, &quote))) {
4933                 u32 priority = (skb_peek(&chan->data_q))->priority;
4934                 while (quote-- && (skb = skb_peek(&chan->data_q))) {
4935                         BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
4936                                skb->len, skb->priority);
4937
4938                         /* Stop if priority has changed */
4939                         if (skb->priority < priority)
4940                                 break;
4941
4942                         skb = skb_dequeue(&chan->data_q);
4943
4944                         hci_send_frame(hdev, skb);
4945                         hdev->le_last_tx = jiffies;
4946
4947                         cnt--;
4948                         chan->sent++;
4949                         chan->conn->sent++;
4950                 }
4951         }
4952
4953         if (hdev->le_pkts)
4954                 hdev->le_cnt = cnt;
4955         else
4956                 hdev->acl_cnt = cnt;
4957
4958         if (cnt != tmp)
4959                 hci_prio_recalculate(hdev, LE_LINK);
4960 }
4961
4962 static void hci_tx_work(struct work_struct *work)
4963 {
4964         struct hci_dev *hdev = container_of(work, struct hci_dev, tx_work);
4965         struct sk_buff *skb;
4966
4967         BT_DBG("%s acl %d sco %d le %d", hdev->name, hdev->acl_cnt,
4968                hdev->sco_cnt, hdev->le_cnt);
4969
4970         if (!test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
4971                 /* Schedule queues and send stuff to HCI driver */
4972                 hci_sched_acl(hdev);
4973                 hci_sched_sco(hdev);
4974                 hci_sched_esco(hdev);
4975                 hci_sched_le(hdev);
4976         }
4977
4978         /* Send next queued raw (unknown type) packet */
4979         while ((skb = skb_dequeue(&hdev->raw_q)))
4980                 hci_send_frame(hdev, skb);
4981 }
4982
4983 /* ----- HCI RX task (incoming data processing) ----- */
4984
4985 /* ACL data packet */
4986 static void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb)
4987 {
4988         struct hci_acl_hdr *hdr = (void *) skb->data;
4989         struct hci_conn *conn;
4990         __u16 handle, flags;
4991
4992         skb_pull(skb, HCI_ACL_HDR_SIZE);
4993
4994         handle = __le16_to_cpu(hdr->handle);
4995         flags  = hci_flags(handle);
4996         handle = hci_handle(handle);
4997
4998         BT_DBG("%s len %d handle 0x%4.4x flags 0x%4.4x", hdev->name, skb->len,
4999                handle, flags);
5000
5001         hdev->stat.acl_rx++;
5002
5003         hci_dev_lock(hdev);
5004         conn = hci_conn_hash_lookup_handle(hdev, handle);
5005         hci_dev_unlock(hdev);
5006
5007         if (conn) {
5008                 hci_conn_enter_active_mode(conn, BT_POWER_FORCE_ACTIVE_OFF);
5009
5010                 /* Send to upper protocol */
5011                 l2cap_recv_acldata(conn, skb, flags);
5012                 return;
5013         } else {
5014                 BT_ERR("%s ACL packet for unknown connection handle %d",
5015                        hdev->name, handle);
5016         }
5017
5018         kfree_skb(skb);
5019 }
5020
5021 /* SCO data packet */
5022 static void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
5023 {
5024         struct hci_sco_hdr *hdr = (void *) skb->data;
5025         struct hci_conn *conn;
5026         __u16 handle;
5027
5028         skb_pull(skb, HCI_SCO_HDR_SIZE);
5029
5030         handle = __le16_to_cpu(hdr->handle);
5031
5032         BT_DBG("%s len %d handle 0x%4.4x", hdev->name, skb->len, handle);
5033
5034         hdev->stat.sco_rx++;
5035
5036         hci_dev_lock(hdev);
5037         conn = hci_conn_hash_lookup_handle(hdev, handle);
5038         hci_dev_unlock(hdev);
5039
5040         if (conn) {
5041                 /* Send to upper protocol */
5042                 sco_recv_scodata(conn, skb);
5043                 return;
5044         } else {
5045                 BT_ERR("%s SCO packet for unknown connection handle %d",
5046                        hdev->name, handle);
5047         }
5048
5049         kfree_skb(skb);
5050 }
5051
5052 static bool hci_req_is_complete(struct hci_dev *hdev)
5053 {
5054         struct sk_buff *skb;
5055
5056         skb = skb_peek(&hdev->cmd_q);
5057         if (!skb)
5058                 return true;
5059
5060         return bt_cb(skb)->req.start;
5061 }
5062
5063 static void hci_resend_last(struct hci_dev *hdev)
5064 {
5065         struct hci_command_hdr *sent;
5066         struct sk_buff *skb;
5067         u16 opcode;
5068
5069         if (!hdev->sent_cmd)
5070                 return;
5071
5072         sent = (void *) hdev->sent_cmd->data;
5073         opcode = __le16_to_cpu(sent->opcode);
5074         if (opcode == HCI_OP_RESET)
5075                 return;
5076
5077         skb = skb_clone(hdev->sent_cmd, GFP_KERNEL);
5078         if (!skb)
5079                 return;
5080
5081         skb_queue_head(&hdev->cmd_q, skb);
5082         queue_work(hdev->workqueue, &hdev->cmd_work);
5083 }
5084
5085 void hci_req_cmd_complete(struct hci_dev *hdev, u16 opcode, u8 status)
5086 {
5087         hci_req_complete_t req_complete = NULL;
5088         struct sk_buff *skb;
5089         unsigned long flags;
5090
5091         BT_DBG("opcode 0x%04x status 0x%02x", opcode, status);
5092
5093         /* If the completed command doesn't match the last one that was
5094          * sent we need to do special handling of it.
5095          */
5096         if (!hci_sent_cmd_data(hdev, opcode)) {
5097                 /* Some CSR based controllers generate a spontaneous
5098                  * reset complete event during init and any pending
5099                  * command will never be completed. In such a case we
5100                  * need to resend whatever was the last sent
5101                  * command.
5102                  */
5103                 if (test_bit(HCI_INIT, &hdev->flags) && opcode == HCI_OP_RESET)
5104                         hci_resend_last(hdev);
5105
5106                 return;
5107         }
5108
5109         /* If the command succeeded and there's still more commands in
5110          * this request the request is not yet complete.
5111          */
5112         if (!status && !hci_req_is_complete(hdev))
5113                 return;
5114
5115         /* If this was the last command in a request the complete
5116          * callback would be found in hdev->sent_cmd instead of the
5117          * command queue (hdev->cmd_q).
5118          */
5119         if (hdev->sent_cmd) {
5120                 req_complete = bt_cb(hdev->sent_cmd)->req.complete;
5121
5122                 if (req_complete) {
5123                         /* We must set the complete callback to NULL to
5124                          * avoid calling the callback more than once if
5125                          * this function gets called again.
5126                          */
5127                         bt_cb(hdev->sent_cmd)->req.complete = NULL;
5128
5129                         goto call_complete;
5130                 }
5131         }
5132
5133         /* Remove all pending commands belonging to this request */
5134         spin_lock_irqsave(&hdev->cmd_q.lock, flags);
5135         while ((skb = __skb_dequeue(&hdev->cmd_q))) {
5136                 if (bt_cb(skb)->req.start) {
5137                         __skb_queue_head(&hdev->cmd_q, skb);
5138                         break;
5139                 }
5140
5141                 req_complete = bt_cb(skb)->req.complete;
5142                 kfree_skb(skb);
5143         }
5144         spin_unlock_irqrestore(&hdev->cmd_q.lock, flags);
5145
5146 call_complete:
5147         if (req_complete)
5148                 req_complete(hdev, status);
5149 }
5150
5151 static void hci_rx_work(struct work_struct *work)
5152 {
5153         struct hci_dev *hdev = container_of(work, struct hci_dev, rx_work);
5154         struct sk_buff *skb;
5155
5156         BT_DBG("%s", hdev->name);
5157
5158         while ((skb = skb_dequeue(&hdev->rx_q))) {
5159                 /* Send copy to monitor */
5160                 hci_send_to_monitor(hdev, skb);
5161
5162                 if (atomic_read(&hdev->promisc)) {
5163                         /* Send copy to the sockets */
5164                         hci_send_to_sock(hdev, skb);
5165                 }
5166
5167                 if (test_bit(HCI_RAW, &hdev->flags) ||
5168                     test_bit(HCI_USER_CHANNEL, &hdev->dev_flags)) {
5169                         kfree_skb(skb);
5170                         continue;
5171                 }
5172
5173                 if (test_bit(HCI_INIT, &hdev->flags)) {
5174                         /* Don't process data packets in this states. */
5175                         switch (bt_cb(skb)->pkt_type) {
5176                         case HCI_ACLDATA_PKT:
5177                         case HCI_SCODATA_PKT:
5178                                 kfree_skb(skb);
5179                                 continue;
5180                         }
5181                 }
5182
5183                 /* Process frame */
5184                 switch (bt_cb(skb)->pkt_type) {
5185                 case HCI_EVENT_PKT:
5186                         BT_DBG("%s Event packet", hdev->name);
5187                         hci_event_packet(hdev, skb);
5188                         break;
5189
5190                 case HCI_ACLDATA_PKT:
5191                         BT_DBG("%s ACL data packet", hdev->name);
5192                         hci_acldata_packet(hdev, skb);
5193                         break;
5194
5195                 case HCI_SCODATA_PKT:
5196                         BT_DBG("%s SCO data packet", hdev->name);
5197                         hci_scodata_packet(hdev, skb);
5198                         break;
5199
5200                 default:
5201                         kfree_skb(skb);
5202                         break;
5203                 }
5204         }
5205 }
5206
5207 static void hci_cmd_work(struct work_struct *work)
5208 {
5209         struct hci_dev *hdev = container_of(work, struct hci_dev, cmd_work);
5210         struct sk_buff *skb;
5211
5212         BT_DBG("%s cmd_cnt %d cmd queued %d", hdev->name,
5213                atomic_read(&hdev->cmd_cnt), skb_queue_len(&hdev->cmd_q));
5214
5215         /* Send queued commands */
5216         if (atomic_read(&hdev->cmd_cnt)) {
5217                 skb = skb_dequeue(&hdev->cmd_q);
5218                 if (!skb)
5219                         return;
5220
5221                 kfree_skb(hdev->sent_cmd);
5222
5223                 hdev->sent_cmd = skb_clone(skb, GFP_KERNEL);
5224                 if (hdev->sent_cmd) {
5225                         atomic_dec(&hdev->cmd_cnt);
5226                         hci_send_frame(hdev, skb);
5227                         if (test_bit(HCI_RESET, &hdev->flags))
5228                                 del_timer(&hdev->cmd_timer);
5229                         else
5230                                 mod_timer(&hdev->cmd_timer,
5231                                           jiffies + HCI_CMD_TIMEOUT);
5232                 } else {
5233                         skb_queue_head(&hdev->cmd_q, skb);
5234                         queue_work(hdev->workqueue, &hdev->cmd_work);
5235                 }
5236         }
5237 }
5238
5239 void hci_req_add_le_scan_disable(struct hci_request *req)
5240 {
5241         struct hci_cp_le_set_scan_enable cp;
5242
5243         memset(&cp, 0, sizeof(cp));
5244         cp.enable = LE_SCAN_DISABLE;
5245         hci_req_add(req, HCI_OP_LE_SET_SCAN_ENABLE, sizeof(cp), &cp);
5246 }
5247
5248 void hci_req_add_le_passive_scan(struct hci_request *req)
5249 {
5250         struct hci_cp_le_set_scan_param param_cp;
5251         struct hci_cp_le_set_scan_enable enable_cp;
5252         struct hci_dev *hdev = req->hdev;
5253         u8 own_addr_type;
5254
5255         /* Set require_privacy to true to avoid identification from
5256          * unknown peer devices. Since this is passive scanning, no
5257          * SCAN_REQ using the local identity should be sent. Mandating
5258          * privacy is just an extra precaution.
5259          */
5260         if (hci_update_random_address(req, true, &own_addr_type))
5261                 return;
5262
5263         memset(&param_cp, 0, sizeof(param_cp));
5264         param_cp.type = LE_SCAN_PASSIVE;
5265         param_cp.interval = cpu_to_le16(hdev->le_scan_interval);
5266         param_cp.window = cpu_to_le16(hdev->le_scan_window);
5267         param_cp.own_address_type = own_addr_type;
5268         hci_req_add(req, HCI_OP_LE_SET_SCAN_PARAM, sizeof(param_cp),
5269                     &param_cp);
5270
5271         memset(&enable_cp, 0, sizeof(enable_cp));
5272         enable_cp.enable = LE_SCAN_ENABLE;
5273         enable_cp.filter_dup = LE_SCAN_FILTER_DUP_ENABLE;
5274         hci_req_add(req, HCI_OP_LE_SET_SCAN_ENABLE, sizeof(enable_cp),
5275                     &enable_cp);
5276 }
5277
5278 static void update_background_scan_complete(struct hci_dev *hdev, u8 status)
5279 {
5280         if (status)
5281                 BT_DBG("HCI request failed to update background scanning: "
5282                        "status 0x%2.2x", status);
5283 }
5284
5285 /* This function controls the background scanning based on hdev->pend_le_conns
5286  * list. If there are pending LE connection we start the background scanning,
5287  * otherwise we stop it.
5288  *
5289  * This function requires the caller holds hdev->lock.
5290  */
5291 void hci_update_background_scan(struct hci_dev *hdev)
5292 {
5293         struct hci_request req;
5294         struct hci_conn *conn;
5295         int err;
5296
5297         hci_req_init(&req, hdev);
5298
5299         if (list_empty(&hdev->pend_le_conns)) {
5300                 /* If there is no pending LE connections, we should stop
5301                  * the background scanning.
5302                  */
5303
5304                 /* If controller is not scanning we are done. */
5305                 if (!test_bit(HCI_LE_SCAN, &hdev->dev_flags))
5306                         return;
5307
5308                 hci_req_add_le_scan_disable(&req);
5309
5310                 BT_DBG("%s stopping background scanning", hdev->name);
5311         } else {
5312                 /* If there is at least one pending LE connection, we should
5313                  * keep the background scan running.
5314                  */
5315
5316                 /* If controller is connecting, we should not start scanning
5317                  * since some controllers are not able to scan and connect at
5318                  * the same time.
5319                  */
5320                 conn = hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECT);
5321                 if (conn)
5322                         return;
5323
5324                 /* If controller is currently scanning, we stop it to ensure we
5325                  * don't miss any advertising (due to duplicates filter).
5326                  */
5327                 if (test_bit(HCI_LE_SCAN, &hdev->dev_flags))
5328                         hci_req_add_le_scan_disable(&req);
5329
5330                 hci_req_add_le_passive_scan(&req);
5331
5332                 BT_DBG("%s starting background scanning", hdev->name);
5333         }
5334
5335         err = hci_req_run(&req, update_background_scan_complete);
5336         if (err)
5337                 BT_ERR("Failed to run HCI request: err %d", err);
5338 }