diff options
Diffstat (limited to 'include/net/bluetooth/hci.h')
| -rw-r--r-- | include/net/bluetooth/hci.h | 69 | 
1 files changed, 67 insertions, 2 deletions
| diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 76b2b6bdcf36..45eee08157bb 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -33,6 +33,8 @@  #define HCI_LINK_KEY_SIZE	16  #define HCI_AMP_LINK_KEY_SIZE	(2 * HCI_LINK_KEY_SIZE) +#define HCI_MAX_AMP_ASSOC_SIZE	672 +  /* HCI dev events */  #define HCI_DEV_REG			1  #define HCI_DEV_UNREG			2 @@ -113,6 +115,7 @@ enum {  	HCI_SSP_ENABLED,  	HCI_HS_ENABLED,  	HCI_LE_ENABLED, +	HCI_LE_PERIPHERAL,  	HCI_CONNECTABLE,  	HCI_DISCOVERABLE,  	HCI_LINK_SECURITY, @@ -151,7 +154,7 @@ enum {  #define HCI_DISCONN_TIMEOUT	msecs_to_jiffies(2000)	/* 2 seconds */  #define HCI_PAIRING_TIMEOUT	msecs_to_jiffies(60000)	/* 60 seconds */  #define HCI_INIT_TIMEOUT	msecs_to_jiffies(10000)	/* 10 seconds */ -#define HCI_CMD_TIMEOUT		msecs_to_jiffies(1000)	/* 1 second */ +#define HCI_CMD_TIMEOUT		msecs_to_jiffies(2000)	/* 2 seconds */  #define HCI_ACL_TX_TIMEOUT	msecs_to_jiffies(45000)	/* 45 seconds */  #define HCI_AUTO_OFF_TIMEOUT	msecs_to_jiffies(2000)	/* 2 seconds */ @@ -196,6 +199,7 @@ enum {  #define ACL_START_NO_FLUSH	0x00  #define ACL_CONT		0x01  #define ACL_START		0x02 +#define ACL_COMPLETE		0x03  #define ACL_ACTIVE_BCAST	0x04  #define ACL_PICO_BCAST		0x08 @@ -205,6 +209,7 @@ enum {  #define ESCO_LINK	0x02  /* Low Energy links do not have defined link type. Use invented one */  #define LE_LINK		0x80 +#define AMP_LINK	0x81  /* LMP features */  #define LMP_3SLOT	0x01 @@ -314,6 +319,9 @@ enum {  #define HCI_FLOW_CTL_MODE_PACKET_BASED	0x00  #define HCI_FLOW_CTL_MODE_BLOCK_BASED	0x01 +/* The core spec defines 127 as the "not available" value */ +#define HCI_TX_POWER_INVALID	127 +  /* Extended Inquiry Response field types */  #define EIR_FLAGS		0x01 /* flags */  #define EIR_UUID16_SOME		0x02 /* 16-bit UUID, more available */ @@ -330,6 +338,13 @@ enum {  #define EIR_SSP_RAND_R		0x0F /* Simple Pairing Randomizer R */  #define EIR_DEVICE_ID		0x10 /* device ID */ +/* Low Energy Advertising Flags */ +#define LE_AD_LIMITED		0x01 /* Limited Discoverable */ +#define LE_AD_GENERAL		0x02 /* General Discoverable */ +#define LE_AD_NO_BREDR		0x04 /* BR/EDR not supported */ +#define LE_AD_SIM_LE_BREDR_CTRL	0x08 /* Simultaneous LE & BR/EDR Controller */ +#define LE_AD_SIM_LE_BREDR_HOST	0x10 /* Simultaneous LE & BR/EDR Host */ +  /* -----  HCI Commands ---- */  #define HCI_OP_NOP			0x0000 @@ -556,12 +571,46 @@ struct hci_cp_accept_phy_link {  	__u8     key[HCI_AMP_LINK_KEY_SIZE];  } __packed; -#define HCI_OP_DISCONN_PHY_LINK	0x0437 +#define HCI_OP_DISCONN_PHY_LINK		0x0437  struct hci_cp_disconn_phy_link {  	__u8     phy_handle;  	__u8     reason;  } __packed; +struct ext_flow_spec { +	__u8       id; +	__u8       stype; +	__le16     msdu; +	__le32     sdu_itime; +	__le32     acc_lat; +	__le32     flush_to; +} __packed; + +#define HCI_OP_CREATE_LOGICAL_LINK	0x0438 +#define HCI_OP_ACCEPT_LOGICAL_LINK	0x0439 +struct hci_cp_create_accept_logical_link { +	__u8                  phy_handle; +	struct ext_flow_spec  tx_flow_spec; +	struct ext_flow_spec  rx_flow_spec; +} __packed; + +#define HCI_OP_DISCONN_LOGICAL_LINK	0x043a +struct hci_cp_disconn_logical_link { +	__le16   log_handle; +} __packed; + +#define HCI_OP_LOGICAL_LINK_CANCEL	0x043b +struct hci_cp_logical_link_cancel { +	__u8     phy_handle; +	__u8     flow_spec_id; +} __packed; + +struct hci_rp_logical_link_cancel { +	__u8     status; +	__u8     phy_handle; +	__u8     flow_spec_id; +} __packed; +  #define HCI_OP_SNIFF_MODE		0x0803  struct hci_cp_sniff_mode {  	__le16   handle; @@ -894,6 +943,22 @@ struct hci_rp_le_read_buffer_size {  	__u8     le_max_pkt;  } __packed; +#define HCI_OP_LE_READ_ADV_TX_POWER	0x2007 +struct hci_rp_le_read_adv_tx_power { +	__u8	status; +	__s8	tx_power; +} __packed; + +#define HCI_MAX_AD_LENGTH		31 + +#define HCI_OP_LE_SET_ADV_DATA		0x2008 +struct hci_cp_le_set_adv_data { +	__u8	length; +	__u8	data[HCI_MAX_AD_LENGTH]; +} __packed; + +#define HCI_OP_LE_SET_ADV_ENABLE	0x200a +  #define HCI_OP_LE_SET_SCAN_PARAM	0x200b  struct hci_cp_le_set_scan_param {  	__u8    type; |