mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Bluetooth: Add extfeatures to struct hci_dev
This new field holds the extended LMP features value. Some LE mechanism such as discovery procedure needs to read the extended LMP features to work properly. Signed-off-by: Andre Guedes <[email protected]> Signed-off-by: Gustavo F. Padovan <[email protected]>
This commit is contained in:
parent
02f1b64106
commit
971e3a4bbc
3 changed files with 32 additions and 0 deletions
|
|
@ -542,6 +542,14 @@ static void hci_setup(struct hci_dev *hdev)
|
|||
|
||||
if (hdev->features[7] & LMP_INQ_TX_PWR)
|
||||
hci_send_cmd(hdev, HCI_OP_READ_INQ_RSP_TX_POWER, 0, NULL);
|
||||
|
||||
if (hdev->features[7] & LMP_EXTFEATURES) {
|
||||
struct hci_cp_read_local_ext_features cp;
|
||||
|
||||
cp.page = 0x01;
|
||||
hci_send_cmd(hdev, HCI_OP_READ_LOCAL_EXT_FEATURES,
|
||||
sizeof(cp), &cp);
|
||||
}
|
||||
}
|
||||
|
||||
static void hci_cc_read_local_version(struct hci_dev *hdev, struct sk_buff *skb)
|
||||
|
|
@ -658,6 +666,21 @@ static void hci_cc_read_local_features(struct hci_dev *hdev, struct sk_buff *skb
|
|||
hdev->features[6], hdev->features[7]);
|
||||
}
|
||||
|
||||
static void hci_cc_read_local_ext_features(struct hci_dev *hdev,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
struct hci_rp_read_local_ext_features *rp = (void *) skb->data;
|
||||
|
||||
BT_DBG("%s status 0x%x", hdev->name, rp->status);
|
||||
|
||||
if (rp->status)
|
||||
return;
|
||||
|
||||
memcpy(hdev->extfeatures, rp->features, 8);
|
||||
|
||||
hci_req_complete(hdev, HCI_OP_READ_LOCAL_EXT_FEATURES, rp->status);
|
||||
}
|
||||
|
||||
static void hci_cc_read_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
|
||||
{
|
||||
struct hci_rp_read_buffer_size *rp = (void *) skb->data;
|
||||
|
|
@ -1826,6 +1849,10 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk
|
|||
hci_cc_read_local_features(hdev, skb);
|
||||
break;
|
||||
|
||||
case HCI_OP_READ_LOCAL_EXT_FEATURES:
|
||||
hci_cc_read_local_ext_features(hdev, skb);
|
||||
break;
|
||||
|
||||
case HCI_OP_READ_BUFFER_SIZE:
|
||||
hci_cc_read_buffer_size(hdev, skb);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue