aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/bluetooth/hci.h14
-rw-r--r--include/net/bluetooth/hci_core.h1
-rw-r--r--net/bluetooth/hci_core.c8
-rw-r--r--net/bluetooth/hci_debugfs.c6
-rw-r--r--net/bluetooth/hci_request.c2
-rw-r--r--net/bluetooth/l2cap_core.c2
-rw-r--r--net/bluetooth/mgmt.c2
-rw-r--r--net/bluetooth/smp.c10
8 files changed, 20 insertions, 25 deletions
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 7a0272a6f0ba..d942fedbaedd 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -179,15 +179,6 @@ enum {
179 HCI_RESET, 179 HCI_RESET,
180}; 180};
181 181
182/* BR/EDR and/or LE controller flags: the flags defined here should represent
183 * states configured via debugfs for debugging and testing purposes only.
184 */
185enum {
186 HCI_DUT_MODE,
187 HCI_FORCE_BREDR_SMP,
188 HCI_FORCE_STATIC_ADDR,
189};
190
191/* 182/*
192 * BR/EDR and/or LE controller flags: the flags defined here should represent 183 * BR/EDR and/or LE controller flags: the flags defined here should represent
193 * states from the controller. 184 * states from the controller.
@@ -226,6 +217,11 @@ enum {
226 HCI_FAST_CONNECTABLE, 217 HCI_FAST_CONNECTABLE,
227 HCI_BREDR_ENABLED, 218 HCI_BREDR_ENABLED,
228 HCI_LE_SCAN_INTERRUPTED, 219 HCI_LE_SCAN_INTERRUPTED,
220
221 HCI_DUT_MODE,
222 HCI_FORCE_BREDR_SMP,
223 HCI_FORCE_STATIC_ADDR,
224
229 __HCI_NUM_FLAGS, 225 __HCI_NUM_FLAGS,
230}; 226};
231 227
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 889a489d913f..6afbf5b014a1 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -353,7 +353,6 @@ struct hci_dev {
353 353
354 struct rfkill *rfkill; 354 struct rfkill *rfkill;
355 355
356 unsigned long dbg_flags;
357 DECLARE_BITMAP(dev_flags, __HCI_NUM_FLAGS); 356 DECLARE_BITMAP(dev_flags, __HCI_NUM_FLAGS);
358 357
359 struct delayed_work le_scan_disable; 358 struct delayed_work le_scan_disable;
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 23a43ca98785..750d3445f2d2 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -80,7 +80,7 @@ static ssize_t dut_mode_read(struct file *file, char __user *user_buf,
80 struct hci_dev *hdev = file->private_data; 80 struct hci_dev *hdev = file->private_data;
81 char buf[3]; 81 char buf[3];
82 82
83 buf[0] = test_bit(HCI_DUT_MODE, &hdev->dbg_flags) ? 'Y': 'N'; 83 buf[0] = hci_dev_test_flag(hdev, HCI_DUT_MODE) ? 'Y': 'N';
84 buf[1] = '\n'; 84 buf[1] = '\n';
85 buf[2] = '\0'; 85 buf[2] = '\0';
86 return simple_read_from_buffer(user_buf, count, ppos, buf, 2); 86 return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
@@ -106,7 +106,7 @@ static ssize_t dut_mode_write(struct file *file, const char __user *user_buf,
106 if (strtobool(buf, &enable)) 106 if (strtobool(buf, &enable))
107 return -EINVAL; 107 return -EINVAL;
108 108
109 if (enable == test_bit(HCI_DUT_MODE, &hdev->dbg_flags)) 109 if (enable == hci_dev_test_flag(hdev, HCI_DUT_MODE))
110 return -EALREADY; 110 return -EALREADY;
111 111
112 hci_req_lock(hdev); 112 hci_req_lock(hdev);
@@ -127,7 +127,7 @@ static ssize_t dut_mode_write(struct file *file, const char __user *user_buf,
127 if (err < 0) 127 if (err < 0)
128 return err; 128 return err;
129 129
130 change_bit(HCI_DUT_MODE, &hdev->dbg_flags); 130 hci_dev_change_flag(hdev, HCI_DUT_MODE);
131 131
132 return count; 132 return count;
133} 133}
@@ -3019,7 +3019,7 @@ static void le_scan_restart_work(struct work_struct *work)
3019void hci_copy_identity_address(struct hci_dev *hdev, bdaddr_t *bdaddr, 3019void hci_copy_identity_address(struct hci_dev *hdev, bdaddr_t *bdaddr,
3020 u8 *bdaddr_type) 3020 u8 *bdaddr_type)
3021{ 3021{
3022 if (test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dbg_flags) || 3022 if (hci_dev_test_flag(hdev, HCI_FORCE_STATIC_ADDR) ||
3023 !bacmp(&hdev->bdaddr, BDADDR_ANY) || 3023 !bacmp(&hdev->bdaddr, BDADDR_ANY) ||
3024 (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED) && 3024 (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED) &&
3025 bacmp(&hdev->static_addr, BDADDR_ANY))) { 3025 bacmp(&hdev->static_addr, BDADDR_ANY))) {
diff --git a/net/bluetooth/hci_debugfs.c b/net/bluetooth/hci_debugfs.c
index 3c025ee5572c..bc801e9db834 100644
--- a/net/bluetooth/hci_debugfs.c
+++ b/net/bluetooth/hci_debugfs.c
@@ -679,7 +679,7 @@ static ssize_t force_static_address_read(struct file *file,
679 struct hci_dev *hdev = file->private_data; 679 struct hci_dev *hdev = file->private_data;
680 char buf[3]; 680 char buf[3];
681 681
682 buf[0] = test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dbg_flags) ? 'Y': 'N'; 682 buf[0] = hci_dev_test_flag(hdev, HCI_FORCE_STATIC_ADDR) ? 'Y': 'N';
683 buf[1] = '\n'; 683 buf[1] = '\n';
684 buf[2] = '\0'; 684 buf[2] = '\0';
685 return simple_read_from_buffer(user_buf, count, ppos, buf, 2); 685 return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
@@ -704,10 +704,10 @@ static ssize_t force_static_address_write(struct file *file,
704 if (strtobool(buf, &enable)) 704 if (strtobool(buf, &enable))
705 return -EINVAL; 705 return -EINVAL;
706 706
707 if (enable == test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dbg_flags)) 707 if (enable == hci_dev_test_flag(hdev, HCI_FORCE_STATIC_ADDR))
708 return -EALREADY; 708 return -EALREADY;
709 709
710 change_bit(HCI_FORCE_STATIC_ADDR, &hdev->dbg_flags); 710 hci_dev_change_flag(hdev, HCI_FORCE_STATIC_ADDR);
711 711
712 return count; 712 return count;
713} 713}
diff --git a/net/bluetooth/hci_request.c b/net/bluetooth/hci_request.c
index e85f9ec9f73a..55e096d20a0f 100644
--- a/net/bluetooth/hci_request.c
+++ b/net/bluetooth/hci_request.c
@@ -383,7 +383,7 @@ int hci_update_random_address(struct hci_request *req, bool require_privacy,
383 * and a static address has been configured, then use that 383 * and a static address has been configured, then use that
384 * address instead of the public BR/EDR address. 384 * address instead of the public BR/EDR address.
385 */ 385 */
386 if (test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dbg_flags) || 386 if (hci_dev_test_flag(hdev, HCI_FORCE_STATIC_ADDR) ||
387 !bacmp(&hdev->bdaddr, BDADDR_ANY) || 387 !bacmp(&hdev->bdaddr, BDADDR_ANY) ||
388 (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED) && 388 (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED) &&
389 bacmp(&hdev->static_addr, BDADDR_ANY))) { 389 bacmp(&hdev->static_addr, BDADDR_ANY))) {
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index af30d8240c80..d69861c89bb5 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -6992,7 +6992,7 @@ static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon)
6992 6992
6993 if (hci_dev_test_flag(hcon->hdev, HCI_LE_ENABLED) && 6993 if (hci_dev_test_flag(hcon->hdev, HCI_LE_ENABLED) &&
6994 (bredr_sc_enabled(hcon->hdev) || 6994 (bredr_sc_enabled(hcon->hdev) ||
6995 test_bit(HCI_FORCE_BREDR_SMP, &hcon->hdev->dbg_flags))) 6995 hci_dev_test_flag(hcon->hdev, HCI_FORCE_BREDR_SMP)))
6996 conn->local_fixed_chan |= L2CAP_FC_SMP_BREDR; 6996 conn->local_fixed_chan |= L2CAP_FC_SMP_BREDR;
6997 6997
6998 mutex_init(&conn->ident_lock); 6998 mutex_init(&conn->ident_lock);
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index d97719d04be0..c58908652519 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -659,7 +659,7 @@ static u32 get_current_settings(struct hci_dev *hdev)
659 * with BR/EDR disabled, the existence of the static address will 659 * with BR/EDR disabled, the existence of the static address will
660 * be evaluated. 660 * be evaluated.
661 */ 661 */
662 if (test_bit(HCI_FORCE_STATIC_ADDR, &hdev->dbg_flags) || 662 if (hci_dev_test_flag(hdev, HCI_FORCE_STATIC_ADDR) ||
663 !hci_dev_test_flag(hdev, HCI_BREDR_ENABLED) || 663 !hci_dev_test_flag(hdev, HCI_BREDR_ENABLED) ||
664 !bacmp(&hdev->bdaddr, BDADDR_ANY)) { 664 !bacmp(&hdev->bdaddr, BDADDR_ANY)) {
665 if (bacmp(&hdev->static_addr, BDADDR_ANY)) 665 if (bacmp(&hdev->static_addr, BDADDR_ANY))
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 81975f274c2b..9155840068cf 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -1679,7 +1679,7 @@ static u8 smp_cmd_pairing_req(struct l2cap_conn *conn, struct sk_buff *skb)
1679 if (conn->hcon->type == ACL_LINK) { 1679 if (conn->hcon->type == ACL_LINK) {
1680 /* We must have a BR/EDR SC link */ 1680 /* We must have a BR/EDR SC link */
1681 if (!test_bit(HCI_CONN_AES_CCM, &conn->hcon->flags) && 1681 if (!test_bit(HCI_CONN_AES_CCM, &conn->hcon->flags) &&
1682 !test_bit(HCI_FORCE_BREDR_SMP, &hdev->dbg_flags)) 1682 !hci_dev_test_flag(hdev, HCI_FORCE_BREDR_SMP))
1683 return SMP_CROSS_TRANSP_NOT_ALLOWED; 1683 return SMP_CROSS_TRANSP_NOT_ALLOWED;
1684 1684
1685 set_bit(SMP_FLAG_SC, &smp->flags); 1685 set_bit(SMP_FLAG_SC, &smp->flags);
@@ -2749,7 +2749,7 @@ static void bredr_pairing(struct l2cap_chan *chan)
2749 2749
2750 /* BR/EDR must use Secure Connections for SMP */ 2750 /* BR/EDR must use Secure Connections for SMP */
2751 if (!test_bit(HCI_CONN_AES_CCM, &hcon->flags) && 2751 if (!test_bit(HCI_CONN_AES_CCM, &hcon->flags) &&
2752 !test_bit(HCI_FORCE_BREDR_SMP, &hdev->dbg_flags)) 2752 !hci_dev_test_flag(hdev, HCI_FORCE_BREDR_SMP))
2753 return; 2753 return;
2754 2754
2755 /* If our LE support is not enabled don't do anything */ 2755 /* If our LE support is not enabled don't do anything */
@@ -3003,7 +3003,7 @@ static ssize_t force_bredr_smp_read(struct file *file,
3003 struct hci_dev *hdev = file->private_data; 3003 struct hci_dev *hdev = file->private_data;
3004 char buf[3]; 3004 char buf[3];
3005 3005
3006 buf[0] = test_bit(HCI_FORCE_BREDR_SMP, &hdev->dbg_flags) ? 'Y': 'N'; 3006 buf[0] = hci_dev_test_flag(hdev, HCI_FORCE_BREDR_SMP) ? 'Y': 'N';
3007 buf[1] = '\n'; 3007 buf[1] = '\n';
3008 buf[2] = '\0'; 3008 buf[2] = '\0';
3009 return simple_read_from_buffer(user_buf, count, ppos, buf, 2); 3009 return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
@@ -3025,7 +3025,7 @@ static ssize_t force_bredr_smp_write(struct file *file,
3025 if (strtobool(buf, &enable)) 3025 if (strtobool(buf, &enable))
3026 return -EINVAL; 3026 return -EINVAL;
3027 3027
3028 if (enable == test_bit(HCI_FORCE_BREDR_SMP, &hdev->dbg_flags)) 3028 if (enable == hci_dev_test_flag(hdev, HCI_FORCE_BREDR_SMP))
3029 return -EALREADY; 3029 return -EALREADY;
3030 3030
3031 if (enable) { 3031 if (enable) {
@@ -3044,7 +3044,7 @@ static ssize_t force_bredr_smp_write(struct file *file,
3044 smp_del_chan(chan); 3044 smp_del_chan(chan);
3045 } 3045 }
3046 3046
3047 change_bit(HCI_FORCE_BREDR_SMP, &hdev->dbg_flags); 3047 hci_dev_change_flag(hdev, HCI_FORCE_BREDR_SMP);
3048 3048
3049 return count; 3049 return count;
3050} 3050}