Bluetooth: Add Advertising Report Meta Event handler
authorAndre Guedes <andre.guedes@openbossa.org>
Thu, 26 May 2011 19:23:51 +0000 (16:23 -0300)
committerGustavo F. Padovan <padovan@profusion.mobi>
Wed, 8 Jun 2011 19:58:17 +0000 (16:58 -0300)
This patch adds a function to handle LE Advertising Report Meta
Events.

Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Signed-off-by: Anderson Briglia <anderson.briglia@openbossa.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
net/bluetooth/hci_event.c

index f13ddbf858ba4e90dd92b891d1b13d3fece1d496..db74958d3ad92546eb962aa3455a74de51356501 100644 (file)
@@ -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;
        }