mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-07 13:43:51 +00:00
Bluetooth: Use macros for connectionless slave broadcast features
Add the LMP feature constants for connectionless slave broadcast and use them for capability testing. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
c6d1649050
commit
53b834d233
@ -275,6 +275,12 @@ enum {
|
||||
#define LMP_EXTFEATURES 0x80
|
||||
|
||||
/* Extended LMP features */
|
||||
#define LMP_CSB_MASTER 0x01
|
||||
#define LMP_CSB_SLAVE 0x02
|
||||
#define LMP_SYNC_TRAIN 0x04
|
||||
#define LMP_SYNC_SCAN 0x08
|
||||
|
||||
/* Host features */
|
||||
#define LMP_HOST_SSP 0x01
|
||||
#define LMP_HOST_LE 0x02
|
||||
#define LMP_HOST_LE_BREDR 0x04
|
||||
|
@ -798,6 +798,12 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
|
||||
#define lmp_transp_capable(dev) ((dev)->features[0][2] & LMP_TRANSPARENT)
|
||||
|
||||
/* ----- Extended LMP capabilities ----- */
|
||||
#define lmp_csb_master_capable(dev) ((dev)->features[2][0] & LMP_CSB_MASTER)
|
||||
#define lmp_csb_slave_capable(dev) ((dev)->features[2][0] & LMP_CSB_SLAVE)
|
||||
#define lmp_sync_train_capable(dev) ((dev)->features[2][0] & LMP_SYNC_TRAIN)
|
||||
#define lmp_sync_scan_capable(dev) ((dev)->features[2][0] & LMP_SYNC_SCAN)
|
||||
|
||||
/* ----- Host capabilities ----- */
|
||||
#define lmp_host_ssp_capable(dev) ((dev)->features[1][0] & LMP_HOST_SSP)
|
||||
#define lmp_host_le_capable(dev) (!!((dev)->features[1][0] & LMP_HOST_LE))
|
||||
#define lmp_host_le_br_capable(dev) (!!((dev)->features[1][0] & LMP_HOST_LE_BREDR))
|
||||
|
@ -1228,7 +1228,7 @@ static void hci_set_event_mask_page_2(struct hci_request *req)
|
||||
/* If Connectionless Slave Broadcast master role is supported
|
||||
* enable all necessary events for it.
|
||||
*/
|
||||
if (hdev->features[2][0] & 0x01) {
|
||||
if (lmp_csb_master_capable(hdev)) {
|
||||
events[1] |= 0x40; /* Triggered Clock Capture */
|
||||
events[1] |= 0x80; /* Synchronization Train Complete */
|
||||
events[2] |= 0x10; /* Slave Page Response Timeout */
|
||||
@ -1238,7 +1238,7 @@ static void hci_set_event_mask_page_2(struct hci_request *req)
|
||||
/* If Connectionless Slave Broadcast slave role is supported
|
||||
* enable all necessary events for it.
|
||||
*/
|
||||
if (hdev->features[2][0] & 0x02) {
|
||||
if (lmp_csb_slave_capable(hdev)) {
|
||||
events[2] |= 0x01; /* Synchronization Train Received */
|
||||
events[2] |= 0x02; /* CSB Receive */
|
||||
events[2] |= 0x04; /* CSB Timeout */
|
||||
@ -1309,7 +1309,7 @@ static void hci_init4_req(struct hci_request *req, unsigned long opt)
|
||||
hci_set_event_mask_page_2(req);
|
||||
|
||||
/* Check for Synchronization Train support */
|
||||
if (hdev->features[2][0] & 0x04)
|
||||
if (lmp_sync_train_capable(hdev))
|
||||
hci_req_add(req, HCI_OP_READ_SYNC_TRAIN_PARAMS, 0, NULL);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user