|
@@ -2680,6 +2680,27 @@ unlock:
|
|
|
hci_dev_unlock(hdev);
|
|
|
}
|
|
|
|
|
|
+static inline void hci_le_adv_report_evt(struct hci_dev *hdev,
|
|
|
+ struct sk_buff *skb)
|
|
|
+{
|
|
|
+ struct hci_ev_le_advertising_info *ev;
|
|
|
+ u8 num_reports;
|
|
|
+
|
|
|
+ num_reports = skb->data[0];
|
|
|
+ ev = (void *) &skb->data[1];
|
|
|
+
|
|
|
+ hci_dev_lock(hdev);
|
|
|
+
|
|
|
+ hci_add_adv_entry(hdev, ev);
|
|
|
+
|
|
|
+ while (--num_reports) {
|
|
|
+ ev = (void *) (ev->data + ev->length + 1);
|
|
|
+ hci_add_adv_entry(hdev, ev);
|
|
|
+ }
|
|
|
+
|
|
|
+ hci_dev_unlock(hdev);
|
|
|
+}
|
|
|
+
|
|
|
static inline void hci_le_meta_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
{
|
|
|
struct hci_ev_le_meta *le_ev = (void *) skb->data;
|
|
@@ -2691,6 +2712,10 @@ static inline void hci_le_meta_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
|
|
hci_le_conn_complete_evt(hdev, skb);
|
|
|
break;
|
|
|
|
|
|
+ case HCI_EV_LE_ADVERTISING_REPORT:
|
|
|
+ hci_le_adv_report_evt(hdev, skb);
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
break;
|
|
|
}
|