* [PATCH BlueZ bluez] hci: add ext adv interface
@ 2026-10-14 10:58 ` Yang Li
0 siblings, 0 replies; 3+ messages in thread
From: Yang Li via B4 Relay @ 2026-10-14 10:58 UTC (permalink / raw)
To: Linux Bluetooth; +Cc: Yang Li
From: Yang Li <yang.li@amlogic.com>
Wrap extended advertising HCI command interfaces.
---
Signed-off-by: Yang Li <yang.li@amlogic.com>
---
lib/bluetooth/hci.c | 193 ++++++++++++++++++++++++++++++++++++++++++++++++
lib/bluetooth/hci.h | 55 ++++++++++++++
lib/bluetooth/hci_lib.h | 16 ++++
3 files changed, 264 insertions(+)
diff --git a/lib/bluetooth/hci.c b/lib/bluetooth/hci.c
index f50a30c61..646a0fe6f 100644
--- a/lib/bluetooth/hci.c
+++ b/lib/bluetooth/hci.c
@@ -3017,6 +3017,199 @@ int hci_le_set_advertise_enable(int dd, uint8_t enable, int to)
return 0;
}
+int hci_le_set_ext_adv_params(int dd, uint8_t handle, uint16_t evt_properties,
+ uint32_t min_interval, uint32_t max_interval,
+ uint8_t channel_map, uint8_t own_addr_type,
+ uint8_t peer_addr_type, const bdaddr_t *peer_addr,
+ uint8_t filter_policy, int8_t tx_power,
+ uint8_t primary_phy, uint8_t secondary_max_skip,
+ uint8_t secondary_phy, uint8_t sid,
+ uint8_t notif_enable, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_params_cp cp;
+ struct {
+ uint8_t status;
+ int8_t tx_power;
+ } rsp;
+
+ memset(&cp, 0, sizeof(cp));
+ cp.handle = handle;
+ cp.evt_properties = evt_properties;
+ cp.min_interval[0] = min_interval & 0xff;
+ cp.min_interval[1] = (min_interval >> 8) & 0xff;
+ cp.min_interval[2] = (min_interval >> 16) & 0xff;
+ cp.max_interval[0] = max_interval & 0xff;
+ cp.max_interval[1] = (max_interval >> 8) & 0xff;
+ cp.max_interval[2] = (max_interval >> 16) & 0xff;
+ cp.channel_map = channel_map;
+ cp.own_addr_type = own_addr_type;
+ cp.peer_addr_type = peer_addr_type;
+ if (peer_addr)
+ memcpy(&cp.peer_addr, peer_addr, sizeof(cp.peer_addr));
+ cp.filter_policy = filter_policy;
+ cp.tx_power = tx_power;
+ cp.primary_phy = primary_phy;
+ cp.secondary_max_skip = secondary_max_skip;
+ cp.secondary_phy = secondary_phy;
+ cp.sid = sid;
+ cp.notif_enable = notif_enable;
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_ADV_PARAMS;
+ rq.cparam = &cp;
+ rq.clen = sizeof(cp);
+ rq.rparam = &rsp;
+ rq.rlen = sizeof(rsp);
+
+ if (hci_send_req(dd, &rq, to) < 0)
+ return -1;
+
+ if (rsp.status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
+int hci_le_set_ext_adv_data(int dd, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_data_cp *cp;
+ uint8_t status;
+ size_t plen = sizeof(*cp) + data_len;
+
+ cp = malloc(plen);
+ if (!cp) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ memset(cp, 0, plen);
+ cp->handle = handle;
+ cp->operation = operation;
+ cp->fragment_preference = fragment_pref;
+ cp->data_len = data_len;
+ if (data && data_len)
+ memcpy(cp->data, data, data_len);
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_ADV_DATA;
+ rq.cparam = cp;
+ rq.clen = plen;
+ rq.rparam = &status;
+ rq.rlen = 1;
+
+ if (hci_send_req(dd, &rq, to) < 0) {
+ free(cp);
+ return -1;
+ }
+
+ free(cp);
+
+ if (status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
+int hci_le_set_ext_scan_rsp_data(int dd, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_data_cp *cp;
+ uint8_t status;
+ size_t plen = sizeof(*cp) + data_len;
+
+ cp = malloc(plen);
+ if (!cp) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ memset(cp, 0, plen);
+ cp->handle = handle;
+ cp->operation = operation;
+ cp->fragment_preference = fragment_pref;
+ cp->data_len = data_len;
+ if (data && data_len)
+ memcpy(cp->data, data, data_len);
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_SCAN_RSP_DATA;
+ rq.cparam = cp;
+ rq.clen = plen;
+ rq.rparam = &status;
+ rq.rlen = 1;
+
+ if (hci_send_req(dd, &rq, to) < 0) {
+ free(cp);
+ return -1;
+ }
+
+ free(cp);
+
+ if (status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
+int hci_le_set_ext_adv_enable(int dd, uint8_t enable, uint8_t num_of_sets,
+ const void *sets, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_enable_cp *cp;
+ uint8_t status;
+ size_t set_entry_len = 4; /* handle (1) + duration (2) + max_events (1) */
+ size_t plen = sizeof(le_set_ext_adv_enable_cp) + (num_of_sets * set_entry_len);
+
+ cp = malloc(plen);
+ if (!cp) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ memset(cp, 0, plen);
+ cp->enable = enable;
+ cp->num_of_sets = num_of_sets;
+ if (sets && num_of_sets)
+ memcpy(cp->sets, sets, num_of_sets * set_entry_len);
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_ADV_ENABLE;
+ rq.cparam = cp;
+ rq.clen = plen;
+ rq.rparam = &status;
+ rq.rlen = 1;
+
+ if (hci_send_req(dd, &rq, to) < 0) {
+ free(cp);
+ return -1;
+ }
+
+ free(cp);
+
+ if (status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
int hci_le_create_conn(int dd, uint16_t interval, uint16_t window,
uint8_t initiator_filter, uint8_t peer_bdaddr_type,
bdaddr_t peer_bdaddr, uint8_t own_bdaddr_type,
diff --git a/lib/bluetooth/hci.h b/lib/bluetooth/hci.h
index 2e4aa394e..7d8b81f2d 100644
--- a/lib/bluetooth/hci.h
+++ b/lib/bluetooth/hci.h
@@ -1735,6 +1735,61 @@ typedef struct {
} __attribute__ ((packed)) le_set_address_resolution_enable_cp;
#define LE_SET_ADDRESS_RESOLUTION_ENABLE_CP_SIZE 1
+#define OCF_LE_SET_EXT_ADV_PARAMS 0x0036
+typedef struct {
+ uint8_t handle;
+ uint16_t evt_properties;
+ uint8_t min_interval[3];
+ uint8_t max_interval[3];
+ uint8_t channel_map;
+ uint8_t own_addr_type;
+ uint8_t peer_addr_type;
+ bdaddr_t peer_addr;
+ uint8_t filter_policy;
+ int8_t tx_power;
+ uint8_t primary_phy;
+ uint8_t secondary_max_skip;
+ uint8_t secondary_phy;
+ uint8_t sid;
+ uint8_t notif_enable;
+} __attribute__ ((packed)) le_set_ext_adv_params_cp;
+#define LE_SET_EXT_ADV_PARAMS_CP_SIZE 25
+
+typedef struct {
+ uint8_t status;
+ int8_t selected_tx_power;
+} __attribute__ ((packed)) le_set_ext_adv_params_rp;
+#define LE_SET_EXT_ADV_PARAMS_RP_SIZE 9
+
+#define OCF_LE_SET_EXT_ADV_DATA 0x0037
+typedef struct {
+ uint8_t handle;
+ uint8_t operation;
+ uint8_t fragment_preference;
+ uint8_t data_len;
+ uint8_t data[0];
+} __attribute__ ((packed)) le_set_ext_adv_data_cp;
+#define LE_SET_EXT_ADV_DATA_CP_MAX_SIZE (4 + 251)
+
+#define OCF_LE_SET_EXT_SCAN_RSP_DATA 0x0038
+typedef struct {
+ uint8_t advertising_handle;
+ uint8_t operation;
+ uint8_t fragment_preference;
+ uint8_t scan_response_data_length;
+ uint8_t scan_response_data[31];
+} __attribute__((packed)) le_set_ext_scan_rsp_data_cp;
+#define LE_SET_EXT_SCAN_RSP_DATA_CP_SIZE (4 + 31)
+
+#define OCF_LE_SET_EXT_ADV_ENABLE 0x0039
+typedef struct {
+ uint8_t enable;
+ uint8_t num_of_sets;
+ /* followed by ext adv set entries: handle(1), duration(2), max_events(1) */
+ uint8_t sets[0];
+} __attribute__ ((packed)) le_set_ext_adv_enable_cp;
+#define LE_SET_EXT_ADV_ENABLE_CP_SIZE (2 + 4)
+
/* Vendor specific commands */
#define OGF_VENDOR_CMD 0x3f
diff --git a/lib/bluetooth/hci_lib.h b/lib/bluetooth/hci_lib.h
index eeb51411a..4a06a9383 100644
--- a/lib/bluetooth/hci_lib.h
+++ b/lib/bluetooth/hci_lib.h
@@ -112,6 +112,22 @@ int hci_le_set_scan_enable(int dev_id, uint8_t enable, uint8_t filter_dup, int t
int hci_le_set_scan_parameters(int dev_id, uint8_t type, uint16_t interval,
uint16_t window, uint8_t own_type,
uint8_t filter, int to);
+int hci_le_set_ext_adv_params(int dev_id, uint8_t handle, uint16_t evt_properties,
+ uint32_t min_interval, uint32_t max_interval,
+ uint8_t channel_map, uint8_t own_addr_type,
+ uint8_t peer_addr_type, const bdaddr_t *peer_addr,
+ uint8_t filter_policy, int8_t tx_power,
+ uint8_t primary_phy, uint8_t secondary_max_skip,
+ uint8_t secondary_phy, uint8_t sid,
+ uint8_t notif_enable, int to);
+int hci_le_set_ext_adv_data(int dev_id, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to);
+int hci_le_set_ext_scan_rsp_data(int dev_id, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to);
+int hci_le_set_ext_adv_enable(int dev_id, uint8_t enable, uint8_t num_of_sets,
+ const void *sets, int to);
int hci_le_set_advertise_enable(int dev_id, uint8_t enable, int to);
int hci_le_create_conn(int dd, uint16_t interval, uint16_t window,
uint8_t initiator_filter, uint8_t peer_bdaddr_type,
---
base-commit: 9dc7e40962f11d1d9a5568f8a7633a695288329c
change-id: 20261014-extend_adv_api-61bb883ac885
Best regards,
--
Yang Li <yang.li@amlogic.com>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH BlueZ bluez] hci: add ext adv interface
@ 2026-10-14 10:58 ` Yang Li
0 siblings, 0 replies; 3+ messages in thread
From: Yang Li @ 2026-10-14 10:58 UTC (permalink / raw)
To: Linux Bluetooth; +Cc: Yang Li
Wrap extended advertising HCI command interfaces.
---
Signed-off-by: Yang Li <yang.li@amlogic.com>
---
lib/bluetooth/hci.c | 193 ++++++++++++++++++++++++++++++++++++++++++++++++
lib/bluetooth/hci.h | 55 ++++++++++++++
lib/bluetooth/hci_lib.h | 16 ++++
3 files changed, 264 insertions(+)
diff --git a/lib/bluetooth/hci.c b/lib/bluetooth/hci.c
index f50a30c61..646a0fe6f 100644
--- a/lib/bluetooth/hci.c
+++ b/lib/bluetooth/hci.c
@@ -3017,6 +3017,199 @@ int hci_le_set_advertise_enable(int dd, uint8_t enable, int to)
return 0;
}
+int hci_le_set_ext_adv_params(int dd, uint8_t handle, uint16_t evt_properties,
+ uint32_t min_interval, uint32_t max_interval,
+ uint8_t channel_map, uint8_t own_addr_type,
+ uint8_t peer_addr_type, const bdaddr_t *peer_addr,
+ uint8_t filter_policy, int8_t tx_power,
+ uint8_t primary_phy, uint8_t secondary_max_skip,
+ uint8_t secondary_phy, uint8_t sid,
+ uint8_t notif_enable, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_params_cp cp;
+ struct {
+ uint8_t status;
+ int8_t tx_power;
+ } rsp;
+
+ memset(&cp, 0, sizeof(cp));
+ cp.handle = handle;
+ cp.evt_properties = evt_properties;
+ cp.min_interval[0] = min_interval & 0xff;
+ cp.min_interval[1] = (min_interval >> 8) & 0xff;
+ cp.min_interval[2] = (min_interval >> 16) & 0xff;
+ cp.max_interval[0] = max_interval & 0xff;
+ cp.max_interval[1] = (max_interval >> 8) & 0xff;
+ cp.max_interval[2] = (max_interval >> 16) & 0xff;
+ cp.channel_map = channel_map;
+ cp.own_addr_type = own_addr_type;
+ cp.peer_addr_type = peer_addr_type;
+ if (peer_addr)
+ memcpy(&cp.peer_addr, peer_addr, sizeof(cp.peer_addr));
+ cp.filter_policy = filter_policy;
+ cp.tx_power = tx_power;
+ cp.primary_phy = primary_phy;
+ cp.secondary_max_skip = secondary_max_skip;
+ cp.secondary_phy = secondary_phy;
+ cp.sid = sid;
+ cp.notif_enable = notif_enable;
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_ADV_PARAMS;
+ rq.cparam = &cp;
+ rq.clen = sizeof(cp);
+ rq.rparam = &rsp;
+ rq.rlen = sizeof(rsp);
+
+ if (hci_send_req(dd, &rq, to) < 0)
+ return -1;
+
+ if (rsp.status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
+int hci_le_set_ext_adv_data(int dd, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_data_cp *cp;
+ uint8_t status;
+ size_t plen = sizeof(*cp) + data_len;
+
+ cp = malloc(plen);
+ if (!cp) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ memset(cp, 0, plen);
+ cp->handle = handle;
+ cp->operation = operation;
+ cp->fragment_preference = fragment_pref;
+ cp->data_len = data_len;
+ if (data && data_len)
+ memcpy(cp->data, data, data_len);
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_ADV_DATA;
+ rq.cparam = cp;
+ rq.clen = plen;
+ rq.rparam = &status;
+ rq.rlen = 1;
+
+ if (hci_send_req(dd, &rq, to) < 0) {
+ free(cp);
+ return -1;
+ }
+
+ free(cp);
+
+ if (status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
+int hci_le_set_ext_scan_rsp_data(int dd, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_data_cp *cp;
+ uint8_t status;
+ size_t plen = sizeof(*cp) + data_len;
+
+ cp = malloc(plen);
+ if (!cp) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ memset(cp, 0, plen);
+ cp->handle = handle;
+ cp->operation = operation;
+ cp->fragment_preference = fragment_pref;
+ cp->data_len = data_len;
+ if (data && data_len)
+ memcpy(cp->data, data, data_len);
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_SCAN_RSP_DATA;
+ rq.cparam = cp;
+ rq.clen = plen;
+ rq.rparam = &status;
+ rq.rlen = 1;
+
+ if (hci_send_req(dd, &rq, to) < 0) {
+ free(cp);
+ return -1;
+ }
+
+ free(cp);
+
+ if (status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
+int hci_le_set_ext_adv_enable(int dd, uint8_t enable, uint8_t num_of_sets,
+ const void *sets, int to)
+{
+ struct hci_request rq;
+ le_set_ext_adv_enable_cp *cp;
+ uint8_t status;
+ size_t set_entry_len = 4; /* handle (1) + duration (2) + max_events (1) */
+ size_t plen = sizeof(le_set_ext_adv_enable_cp) + (num_of_sets * set_entry_len);
+
+ cp = malloc(plen);
+ if (!cp) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ memset(cp, 0, plen);
+ cp->enable = enable;
+ cp->num_of_sets = num_of_sets;
+ if (sets && num_of_sets)
+ memcpy(cp->sets, sets, num_of_sets * set_entry_len);
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_SET_EXT_ADV_ENABLE;
+ rq.cparam = cp;
+ rq.clen = plen;
+ rq.rparam = &status;
+ rq.rlen = 1;
+
+ if (hci_send_req(dd, &rq, to) < 0) {
+ free(cp);
+ return -1;
+ }
+
+ free(cp);
+
+ if (status) {
+ errno = EIO;
+ return -1;
+ }
+
+ return 0;
+}
+
int hci_le_create_conn(int dd, uint16_t interval, uint16_t window,
uint8_t initiator_filter, uint8_t peer_bdaddr_type,
bdaddr_t peer_bdaddr, uint8_t own_bdaddr_type,
diff --git a/lib/bluetooth/hci.h b/lib/bluetooth/hci.h
index 2e4aa394e..7d8b81f2d 100644
--- a/lib/bluetooth/hci.h
+++ b/lib/bluetooth/hci.h
@@ -1735,6 +1735,61 @@ typedef struct {
} __attribute__ ((packed)) le_set_address_resolution_enable_cp;
#define LE_SET_ADDRESS_RESOLUTION_ENABLE_CP_SIZE 1
+#define OCF_LE_SET_EXT_ADV_PARAMS 0x0036
+typedef struct {
+ uint8_t handle;
+ uint16_t evt_properties;
+ uint8_t min_interval[3];
+ uint8_t max_interval[3];
+ uint8_t channel_map;
+ uint8_t own_addr_type;
+ uint8_t peer_addr_type;
+ bdaddr_t peer_addr;
+ uint8_t filter_policy;
+ int8_t tx_power;
+ uint8_t primary_phy;
+ uint8_t secondary_max_skip;
+ uint8_t secondary_phy;
+ uint8_t sid;
+ uint8_t notif_enable;
+} __attribute__ ((packed)) le_set_ext_adv_params_cp;
+#define LE_SET_EXT_ADV_PARAMS_CP_SIZE 25
+
+typedef struct {
+ uint8_t status;
+ int8_t selected_tx_power;
+} __attribute__ ((packed)) le_set_ext_adv_params_rp;
+#define LE_SET_EXT_ADV_PARAMS_RP_SIZE 9
+
+#define OCF_LE_SET_EXT_ADV_DATA 0x0037
+typedef struct {
+ uint8_t handle;
+ uint8_t operation;
+ uint8_t fragment_preference;
+ uint8_t data_len;
+ uint8_t data[0];
+} __attribute__ ((packed)) le_set_ext_adv_data_cp;
+#define LE_SET_EXT_ADV_DATA_CP_MAX_SIZE (4 + 251)
+
+#define OCF_LE_SET_EXT_SCAN_RSP_DATA 0x0038
+typedef struct {
+ uint8_t advertising_handle;
+ uint8_t operation;
+ uint8_t fragment_preference;
+ uint8_t scan_response_data_length;
+ uint8_t scan_response_data[31];
+} __attribute__((packed)) le_set_ext_scan_rsp_data_cp;
+#define LE_SET_EXT_SCAN_RSP_DATA_CP_SIZE (4 + 31)
+
+#define OCF_LE_SET_EXT_ADV_ENABLE 0x0039
+typedef struct {
+ uint8_t enable;
+ uint8_t num_of_sets;
+ /* followed by ext adv set entries: handle(1), duration(2), max_events(1) */
+ uint8_t sets[0];
+} __attribute__ ((packed)) le_set_ext_adv_enable_cp;
+#define LE_SET_EXT_ADV_ENABLE_CP_SIZE (2 + 4)
+
/* Vendor specific commands */
#define OGF_VENDOR_CMD 0x3f
diff --git a/lib/bluetooth/hci_lib.h b/lib/bluetooth/hci_lib.h
index eeb51411a..4a06a9383 100644
--- a/lib/bluetooth/hci_lib.h
+++ b/lib/bluetooth/hci_lib.h
@@ -112,6 +112,22 @@ int hci_le_set_scan_enable(int dev_id, uint8_t enable, uint8_t filter_dup, int t
int hci_le_set_scan_parameters(int dev_id, uint8_t type, uint16_t interval,
uint16_t window, uint8_t own_type,
uint8_t filter, int to);
+int hci_le_set_ext_adv_params(int dev_id, uint8_t handle, uint16_t evt_properties,
+ uint32_t min_interval, uint32_t max_interval,
+ uint8_t channel_map, uint8_t own_addr_type,
+ uint8_t peer_addr_type, const bdaddr_t *peer_addr,
+ uint8_t filter_policy, int8_t tx_power,
+ uint8_t primary_phy, uint8_t secondary_max_skip,
+ uint8_t secondary_phy, uint8_t sid,
+ uint8_t notif_enable, int to);
+int hci_le_set_ext_adv_data(int dev_id, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to);
+int hci_le_set_ext_scan_rsp_data(int dev_id, uint8_t handle, uint8_t operation,
+ uint8_t fragment_pref, const uint8_t *data,
+ uint8_t data_len, int to);
+int hci_le_set_ext_adv_enable(int dev_id, uint8_t enable, uint8_t num_of_sets,
+ const void *sets, int to);
int hci_le_set_advertise_enable(int dev_id, uint8_t enable, int to);
int hci_le_create_conn(int dd, uint16_t interval, uint16_t window,
uint8_t initiator_filter, uint8_t peer_bdaddr_type,
---
base-commit: 9dc7e40962f11d1d9a5568f8a7633a695288329c
change-id: 20261014-extend_adv_api-61bb883ac885
Best regards,
--
Yang Li <yang.li@amlogic.com>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [BlueZ,bluez] hci: add ext adv interface
2026-10-14 10:58 ` Yang Li
(?)
@ 2026-10-14 13:33 ` bluez.test.bot
-1 siblings, 0 replies; 3+ messages in thread
From: bluez.test.bot @ 2026-10-14 13:33 UTC (permalink / raw)
To: linux-bluetooth, yang.li
[-- Attachment #1: Type: text/plain, Size: 6509 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1185477/
---Test result---
Test Summary:
CheckPatch FAIL 0.71 seconds
GitLint PASS 0.32 seconds
BuildEll PASS 19.73 seconds
BluezMake PASS 309.89 seconds
MakeCheck PASS 0.88 seconds
MakeDistcheck PASS 143.31 seconds
CheckValgrind PASS 149.31 seconds
CheckSmatch PASS 298.05 seconds
bluezmakeextell PASS 96.79 seconds
TestFunctional FAIL 1161.14 seconds
IncrementalBuild PASS 303.01 seconds
ScanBuild PASS 1179.57 seconds
Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script
Output:
[BlueZ,bluez] hci: add ext adv interface
WARNING:LONG_LINE: line length of 82 exceeds 80 columns
#102: FILE: lib/bluetooth/hci.c:3023:
+ uint8_t peer_addr_type, const bdaddr_t *peer_addr,
WARNING:LONG_LINE_COMMENT: line length of 82 exceeds 80 columns
#254: FILE: lib/bluetooth/hci.c:3175:
+ size_t set_entry_len = 4; /* handle (1) + duration (2) + max_events (1) */
WARNING:LONG_LINE: line length of 87 exceeds 80 columns
#255: FILE: lib/bluetooth/hci.c:3176:
+ size_t plen = sizeof(le_set_ext_adv_enable_cp) + (num_of_sets * set_entry_len);
WARNING:NEW_TYPEDEFS: do not add new typedefs
#304: FILE: lib/bluetooth/hci.h:1739:
+typedef struct {
WARNING:PREFER_DEFINED_ATTRIBUTE_MACRO: Prefer __packed over __attribute__((packed))
#320: FILE: lib/bluetooth/hci.h:1755:
+} __attribute__ ((packed)) le_set_ext_adv_params_cp;
WARNING:NEW_TYPEDEFS: do not add new typedefs
#323: FILE: lib/bluetooth/hci.h:1758:
+typedef struct {
WARNING:PREFER_DEFINED_ATTRIBUTE_MACRO: Prefer __packed over __attribute__((packed))
#326: FILE: lib/bluetooth/hci.h:1761:
+} __attribute__ ((packed)) le_set_ext_adv_params_rp;
WARNING:NEW_TYPEDEFS: do not add new typedefs
#330: FILE: lib/bluetooth/hci.h:1765:
+typedef struct {
WARNING:PREFER_DEFINED_ATTRIBUTE_MACRO: Prefer __packed over __attribute__((packed))
#336: FILE: lib/bluetooth/hci.h:1771:
+} __attribute__ ((packed)) le_set_ext_adv_data_cp;
WARNING:NEW_TYPEDEFS: do not add new typedefs
#340: FILE: lib/bluetooth/hci.h:1775:
+typedef struct {
WARNING:PREFER_DEFINED_ATTRIBUTE_MACRO: Prefer __packed over __attribute__((packed))
#346: FILE: lib/bluetooth/hci.h:1781:
+} __attribute__((packed)) le_set_ext_scan_rsp_data_cp;
WARNING:NEW_TYPEDEFS: do not add new typedefs
#350: FILE: lib/bluetooth/hci.h:1785:
+typedef struct {
WARNING:LONG_LINE_COMMENT: line length of 84 exceeds 80 columns
#353: FILE: lib/bluetooth/hci.h:1788:
+ /* followed by ext adv set entries: handle(1), duration(2), max_events(1) */
WARNING:PREFER_DEFINED_ATTRIBUTE_MACRO: Prefer __packed over __attribute__((packed))
#355: FILE: lib/bluetooth/hci.h:1790:
+} __attribute__ ((packed)) le_set_ext_adv_enable_cp;
WARNING:LONG_LINE: line length of 82 exceeds 80 columns
#369: FILE: lib/bluetooth/hci_lib.h:115:
+int hci_le_set_ext_adv_params(int dev_id, uint8_t handle, uint16_t evt_properties,
WARNING:LONG_LINE: line length of 82 exceeds 80 columns
#372: FILE: lib/bluetooth/hci_lib.h:118:
+ uint8_t peer_addr_type, const bdaddr_t *peer_addr,
/home/runner/work/bluez/bluez/src/patch/14888331.patch total: 0 errors, 16 warnings, 282 lines checked
NOTE: For some of the reported defects, checkpatch may be able to
mechanically convert to the typical style using --fix or --fix-inplace.
/home/runner/work/bluez/bluez/src/patch/14888331.patch has style problems, please review.
NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO
NOTE: If any of the errors are false positives, please report
them to the maintainer, see CHECKPATCH in MAINTAINERS.
##############################
Test: TestFunctional - FAIL
Desc: Run test-functional
Output:
FAIL functional.test_bluetoothctl::test_bluetoothctl_pair_bredr[hosts15-vm2]: pytest_bluezenv.rpc.RemoteError: <pexpect.popen_spawn.PopenSpawn object at 0x7f96f1756510>
searcher: searcher_re:
0: re.compile(b'Changing pairable on succeeded')
<pexpect.popen_spawn.PopenSpawn object at 0x7f96f1756510>
searcher: searcher_re:
0: re.compile(b'Changing pairable on succeeded')
Remote traceback:
Traceback (most recent call last):
File "/usr/local/lib/python3.14/dist-packages/pytest_bluezenv/../pytest_bluezenv/rpc.py", line 102, in server_stream
result = method(*msg["a"], **msg["kw"])
File "/usr/local/lib/python3.14/dist-packages/pytest_bluezenv/../pytest_bluezenv/env.py", line 256, in call_plugin
return getattr(self.plugins[name], method)(*a, **kw)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/usr/local/lib/python3.14/dist-packages/pytest_bluezenv/../pytest_bluezenv/host_plugins.py", line 502, in expect
ret = self.ctl.expect(*a, **kw)
File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 354, in expect
return self.expect_list(compiled_pattern_list,
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
timeout, searchwindowsize, async_)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 383, in expect_list
return exp.expect_loop(timeout)
~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/pexpect/expect.py", line 181, in expect_loop
return self.timeout(e)
~~~~~~~~~~~~^^^
File "/usr/lib/python3/dist-packages/pexpect/expect.py", line 144, in timeout
raise exc
pexpect.exceptions.TIMEOUT: <pexpect.popen_spawn.PopenSpawn object at 0x7f96f1756510>
searcher: searcher_re:
0: re.compile(b'Changing pairable on succeeded')
<pexpect.popen_spawn.PopenSpawn object at 0x7f96f1756510>
searcher: searcher_re:
0: re.compile(b'Changing pairable on succeeded')
https://github.com/bluez/bluez/pull/2677
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-14 13:33 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-14 10:58 [PATCH BlueZ bluez] hci: add ext adv interface Yang Li via B4 Relay
2026-10-14 10:58 ` Yang Li
2026-10-14 13:33 ` [BlueZ,bluez] " bluez.test.bot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.