Bluetooth: hci_sync: Add support for HCI_LE_Set_Host_Feature [v2]
This adds support for using HCI_LE_Set_Host_Feature [v2] instead of v1 if LL Extented Features is supported and the controller supports the command. Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
1 parent
ddb249341d
commit
eb87bf6fca
2 files changed
+29
-1
No files matched your search
@@ -2486,6 +2486,12 @@ struct hci_rp_le_cs_test {
|
|||||||
|
|
||||||
#define HCI_OP_LE_CS_TEST_END 0x2096
|
#define HCI_OP_LE_CS_TEST_END 0x2096
|
||||||
|
|
||||||
|
#define HCI_OP_LE_SET_HOST_FEATURE_V2 0x2097
|
||||||
|
struct hci_cp_le_set_host_feature_v2 {
|
||||||
|
__le16 bit_number;
|
||||||
|
__u8 bit_value;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
/* ---- HCI Events ---- */
|
/* ---- HCI Events ---- */
|
||||||
struct hci_ev_status {
|
struct hci_ev_status {
|
||||||
__u8 status;
|
__u8 status;
|
||||||
|
|||||||
@@ -4588,11 +4588,33 @@ static int hci_set_le_support_sync(struct hci_dev *hdev)
|
|||||||
sizeof(cp), &cp, HCI_CMD_TIMEOUT);
|
sizeof(cp), &cp, HCI_CMD_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* LE Set Host Feature V2 */
|
||||||
|
static int hci_le_set_host_feature_v2_sync(struct hci_dev *hdev, u16 bit,
|
||||||
|
u8 value)
|
||||||
|
{
|
||||||
|
struct hci_cp_le_set_host_feature_v2 cp;
|
||||||
|
|
||||||
|
memset(&cp, 0, sizeof(cp));
|
||||||
|
|
||||||
|
/* Connected Isochronous Channels (Host Support) */
|
||||||
|
cp.bit_number = cpu_to_le16(bit);
|
||||||
|
cp.bit_value = value;
|
||||||
|
|
||||||
|
return __hci_cmd_sync_status(hdev, HCI_OP_LE_SET_HOST_FEATURE_V2,
|
||||||
|
sizeof(cp), &cp, HCI_CMD_TIMEOUT);
|
||||||
|
}
|
||||||
|
|
||||||
/* LE Set Host Feature */
|
/* LE Set Host Feature */
|
||||||
static int hci_le_set_host_feature_sync(struct hci_dev *hdev, u8 bit, u8 value)
|
static int hci_le_set_host_feature_sync(struct hci_dev *hdev, u16 bit, u8 value)
|
||||||
{
|
{
|
||||||
struct hci_cp_le_set_host_feature cp;
|
struct hci_cp_le_set_host_feature cp;
|
||||||
|
|
||||||
|
if (ll_ext_feature_capable(hdev) && hdev->commands[47] & BIT(4))
|
||||||
|
return hci_le_set_host_feature_v2_sync(hdev, bit, value);
|
||||||
|
|
||||||
|
if (bit > 255)
|
||||||
|
return 0;
|
||||||
|
|
||||||
memset(&cp, 0, sizeof(cp));
|
memset(&cp, 0, sizeof(cp));
|
||||||
|
|
||||||
/* Connected Isochronous Channels (Host Support) */
|
/* Connected Isochronous Channels (Host Support) */
|
||||||
|
|||||||
Reference in new issue
Block a user