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