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