aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/bluetooth/hci.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/bluetooth/hci.h')
-rw-r--r--include/net/bluetooth/hci.h83
1 files changed, 81 insertions, 2 deletions
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 40129b3838b2..8e54f825153c 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -102,6 +102,28 @@ enum {
102 */ 102 */
103 HCI_QUIRK_FIXUP_BUFFER_SIZE, 103 HCI_QUIRK_FIXUP_BUFFER_SIZE,
104 104
105 /* When this quirk is set, then a controller that does not
106 * indicate support for Inquiry Result with RSSI is assumed to
107 * support it anyway. Some early Bluetooth 1.2 controllers had
108 * wrongly configured local features that will require forcing
109 * them to enable this mode. Getting RSSI information with the
110 * inquiry responses is preferred since it allows for a better
111 * user expierence.
112 *
113 * This quirk must be set before hci_register_dev is called.
114 */
115 HCI_QUIRK_FIXUP_INQUIRY_MODE,
116
117 /* When this quirk is set, then the HCI Read Local Supported
118 * Commands command is not supported. In general Bluetooth 1.2
119 * and later controllers should support this command. However
120 * some controllers indicate Bluetooth 1.2 support, but do
121 * not support this command.
122 *
123 * This quirk must be set before hci_register_dev is called.
124 */
125 HCI_QUIRK_BROKEN_LOCAL_COMMANDS,
126
105 /* When this quirk is set, then no stored link key handling 127 /* When this quirk is set, then no stored link key handling
106 * is performed. This is mainly due to the fact that the 128 * is performed. This is mainly due to the fact that the
107 * HCI Delete Stored Link Key command is advertised, but 129 * HCI Delete Stored Link Key command is advertised, but
@@ -162,8 +184,7 @@ enum {
162 */ 184 */
163enum { 185enum {
164 HCI_DUT_MODE, 186 HCI_DUT_MODE,
165 HCI_FORCE_SC, 187 HCI_FORCE_BREDR_SMP,
166 HCI_FORCE_LESC,
167 HCI_FORCE_STATIC_ADDR, 188 HCI_FORCE_STATIC_ADDR,
168}; 189};
169 190
@@ -343,6 +364,7 @@ enum {
343#define HCI_LE_ENCRYPTION 0x01 364#define HCI_LE_ENCRYPTION 0x01
344#define HCI_LE_CONN_PARAM_REQ_PROC 0x02 365#define HCI_LE_CONN_PARAM_REQ_PROC 0x02
345#define HCI_LE_PING 0x10 366#define HCI_LE_PING 0x10
367#define HCI_LE_DATA_LEN_EXT 0x20
346#define HCI_LE_EXT_SCAN_POLICY 0x80 368#define HCI_LE_EXT_SCAN_POLICY 0x80
347 369
348/* Connection modes */ 370/* Connection modes */
@@ -833,11 +855,26 @@ struct hci_cp_set_event_flt {
833#define HCI_CONN_SETUP_AUTO_OFF 0x01 855#define HCI_CONN_SETUP_AUTO_OFF 0x01
834#define HCI_CONN_SETUP_AUTO_ON 0x02 856#define HCI_CONN_SETUP_AUTO_ON 0x02
835 857
858#define HCI_OP_READ_STORED_LINK_KEY 0x0c0d
859struct hci_cp_read_stored_link_key {
860 bdaddr_t bdaddr;
861 __u8 read_all;
862} __packed;
863struct hci_rp_read_stored_link_key {
864 __u8 status;
865 __u8 max_keys;
866 __u8 num_keys;
867} __packed;
868
836#define HCI_OP_DELETE_STORED_LINK_KEY 0x0c12 869#define HCI_OP_DELETE_STORED_LINK_KEY 0x0c12
837struct hci_cp_delete_stored_link_key { 870struct hci_cp_delete_stored_link_key {
838 bdaddr_t bdaddr; 871 bdaddr_t bdaddr;
839 __u8 delete_all; 872 __u8 delete_all;
840} __packed; 873} __packed;
874struct hci_rp_delete_stored_link_key {
875 __u8 status;
876 __u8 num_keys;
877} __packed;
841 878
842#define HCI_MAX_NAME_LENGTH 248 879#define HCI_MAX_NAME_LENGTH 248
843 880
@@ -1371,6 +1408,39 @@ struct hci_cp_le_conn_param_req_neg_reply {
1371 __u8 reason; 1408 __u8 reason;
1372} __packed; 1409} __packed;
1373 1410
1411#define HCI_OP_LE_SET_DATA_LEN 0x2022
1412struct hci_cp_le_set_data_len {
1413 __le16 handle;
1414 __le16 tx_len;
1415 __le16 tx_time;
1416} __packed;
1417struct hci_rp_le_set_data_len {
1418 __u8 status;
1419 __le16 handle;
1420} __packed;
1421
1422#define HCI_OP_LE_READ_DEF_DATA_LEN 0x2023
1423struct hci_rp_le_read_def_data_len {
1424 __u8 status;
1425 __le16 tx_len;
1426 __le16 tx_time;
1427} __packed;
1428
1429#define HCI_OP_LE_WRITE_DEF_DATA_LEN 0x2024
1430struct hci_cp_le_write_def_data_len {
1431 __le16 tx_len;
1432 __le16 tx_time;
1433} __packed;
1434
1435#define HCI_OP_LE_READ_MAX_DATA_LEN 0x202f
1436struct hci_rp_le_read_max_data_len {
1437 __u8 status;
1438 __le16 tx_len;
1439 __le16 tx_time;
1440 __le16 rx_len;
1441 __le16 rx_time;
1442} __packed;
1443
1374/* ---- HCI Events ---- */ 1444/* ---- HCI Events ---- */
1375#define HCI_EV_INQUIRY_COMPLETE 0x01 1445#define HCI_EV_INQUIRY_COMPLETE 0x01
1376 1446
@@ -1796,6 +1866,15 @@ struct hci_ev_le_remote_conn_param_req {
1796 __le16 timeout; 1866 __le16 timeout;
1797} __packed; 1867} __packed;
1798 1868
1869#define HCI_EV_LE_DATA_LEN_CHANGE 0x07
1870struct hci_ev_le_data_len_change {
1871 __le16 handle;
1872 __le16 tx_len;
1873 __le16 tx_time;
1874 __le16 rx_len;
1875 __le16 rx_time;
1876} __packed;
1877
1799#define HCI_EV_LE_DIRECT_ADV_REPORT 0x0B 1878#define HCI_EV_LE_DIRECT_ADV_REPORT 0x0B
1800struct hci_ev_le_direct_adv_info { 1879struct hci_ev_le_direct_adv_info {
1801 __u8 evt_type; 1880 __u8 evt_type;