@@ -2228,6 +2228,8 @@ void mgmt_discovering(struct hci_dev *hdev, u8 discovering);
void mgmt_suspending(struct hci_dev *hdev, u8 state);
void mgmt_resuming(struct hci_dev *hdev, u8 reason, bdaddr_t *bdaddr,
u8 addr_type);
+int mgmt_le_big_info_adv_report(struct hci_dev *hdev,
+ struct hci_evt_le_big_info_adv_report *ev);
bool mgmt_powering_down(struct hci_dev *hdev);
void mgmt_new_ltk(struct hci_dev *hdev, struct smp_ltk *key, bool persistent);
void mgmt_new_irk(struct hci_dev *hdev, struct smp_irk *irk, bool persistent);
@@ -3,6 +3,7 @@
Copyright (C) 2010 Nokia Corporation
Copyright (C) 2011-2012 Intel Corporation
+ Copyright 2023 NXP
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
@@ -1177,3 +1178,20 @@ struct mgmt_ev_mesh_device_found {
struct mgmt_ev_mesh_pkt_cmplt {
__u8 handle;
} __packed;
+
+#define MGMT_EV_LE_BIG_INFO_ADV_REPORT 0x0033
+struct mgmt_ev_le_big_info_adv_report {
+ __le16 sync_handle;
+ __u8 num_bis;
+ __u8 nse;
+ __le16 iso_interval;
+ __u8 bn;
+ __u8 pto;
+ __u8 irc;
+ __le16 max_pdu;
+ __u8 sdu_interval[3];
+ __le16 max_sdu;
+ __u8 phy;
+ __u8 framing;
+ __u8 encryption;
+} __packed;
@@ -7143,9 +7143,14 @@ static void hci_le_big_info_adv_report_evt(struct hci_dev *hdev, void *data,
hci_dev_lock(hdev);
mask |= hci_proto_connect_ind(hdev, BDADDR_ANY, ISO_LINK, &flags);
- if (!(mask & HCI_LM_ACCEPT))
+ if (!(mask & HCI_LM_ACCEPT)) {
hci_le_pa_term_sync(hdev, ev->sync_handle);
+ goto unlock;
+ }
+ mgmt_le_big_info_adv_report(hdev, ev);
+
+unlock:
hci_dev_unlock(hdev);
}
@@ -3,6 +3,7 @@
Copyright (C) 2010 Nokia Corporation
Copyright (C) 2011-2012 Intel Corporation
+ Copyright 2023 NXP
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
@@ -10523,6 +10524,13 @@ void mgmt_resuming(struct hci_dev *hdev, u8 reason, bdaddr_t *bdaddr,
mgmt_event(MGMT_EV_CONTROLLER_RESUME, hdev, &ev, sizeof(ev), NULL);
}
+int mgmt_le_big_info_adv_report(struct hci_dev *hdev,
+ struct hci_evt_le_big_info_adv_report *ev)
+{
+ return mgmt_event(MGMT_EV_LE_BIG_INFO_ADV_REPORT, hdev,
+ (struct mgmt_ev_le_big_info_adv_report *)ev, sizeof(*ev), NULL);
+}
+
static struct hci_mgmt_chan chan = {
.channel = HCI_CHANNEL_CONTROL,
.handler_count = ARRAY_SIZE(mgmt_handlers),
This introduces the MGMT_EV_LE_BIG_INFO_ADV_REPORT event. Signed-off-by: Iulia Tanasescu <iulia.tanasescu@nxp.com> --- include/net/bluetooth/hci_core.h | 2 ++ include/net/bluetooth/mgmt.h | 18 ++++++++++++++++++ net/bluetooth/hci_event.c | 7 ++++++- net/bluetooth/mgmt.c | 8 ++++++++ 4 files changed, 34 insertions(+), 1 deletion(-)