* [PATCH BlueZ] advertising: Fix attempting to set scan_rsp
@ 2022-06-14 18:51 Luiz Augusto von Dentz
2022-06-14 20:14 ` [BlueZ] " bluez.test.bot
0 siblings, 1 reply; 2+ messages in thread
From: Luiz Augusto von Dentz @ 2022-06-14 18:51 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 4, Part E page 2450
• If extended advertising PDU types are being used (bit 4 = 0) then:
The advertisement shall not be both connectable and scannable.
So instead this attempts to set name as part of Advertising Data rather
then setting it as Scan Response:
< HCI Command: LE Set Extended Advertising Parameters (0x08|0x0036) plen 25
Handle: 0x01
Properties: 0x0001
Connectable
Min advertising interval: 1280.000 msec (0x0800)
Max advertising interval: 1280.000 msec (0x0800)
Channel map: 37, 38, 39 (0x07)
Own address type: Public (0x00)
Peer address type: Public (0x00)
Peer address: 00:00:00:00:00:00 (OUI 00-00-00)
Filter policy: Allow Scan Request from Any, Allow Connect Request from Any (0x00)
TX power: Host has no preference (0x7f)
Primary PHY: LE 1M (0x01)
Secondary max skip: 0x00
Secondary PHY: LE 2M (0x02)
SID: 0x00
Scan request notifications: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 5
LE Set Extended Advertising Parameters (0x08|0x0036) ncmd 1
Status: Success (0x00)
TX power (selected): 7 dbm (0x07)
< HCI Command: LE Set Extended Advertising Data (0x08|0x0037) plen 4
Handle: 0x01
Operation: Complete extended advertising data (0x03)
Fragment preference: Minimize fragmentation (0x01)
Data length: 0x00
@ MGMT Event: Command Complete (0x0001) plen 7
Add Extended Advertising Parameters (0x0054) plen 4
Status: Success (0x00)
Instance: 1
TX power: 7 dbm (0x07)
Available adv data len: 31
Available scan rsp data len: 31
> HCI Event: Command Complete (0x0e) plen 4
LE Set Extended Advertising Data (0x08|0x0037) ncmd 1
Status: Success (0x00)
@ MGMT Command: Add Extended Advertising Data (0x0055) plen 23
Instance: 1
Advertising data length: 12
Name (complete): Intel-3
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
Scan response length: 0
< HCI Command: LE Set Extended Advertising Data (0x08|0x0037) plen 16
Handle: 0x01
Operation: Complete extended advertising data (0x03)
Fragment preference: Minimize fragmentation (0x01)
Data length: 0x0c
Name (complete): Intel-3
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
> HCI Event: Command Complete (0x0e) plen 4
LE Set Extended Advertising Data (0x08|0x0037) ncmd 1
Status: Success (0x00)
< HCI Command: LE Set Extended Scan Response Data (0x08|0x0038) plen 4
Handle: 0x01
Operation: Complete scan response data (0x03)
Fragment preference: Minimize fragmentation (0x01)
Data length: 0x00
> HCI Event: Command Complete (0x0e) plen 4
LE Set Extended Scan Response Data (0x08|0x0038) ncmd 1
Status: Success (0x00)
< HCI Command: LE Set Extended Advertising Enable (0x08|0x0039) plen 6
Extended advertising: Enabled (0x01)
Number of sets: 1 (0x01)
Entry 0
Handle: 0x01
Duration: 0 ms (0x00)
Max ext adv events: 0
> HCI Event: Command Complete (0x0e) plen 4
LE Set Extended Advertising Enable (0x08|0x0039) ncmd 2
Status: Success (0x00)
@ MGMT Event: Command Complete (0x0001) plen 4
Add Extended Advertising Data (0x0055) plen 1
Status: Success (0x00)
Instance: 1
---
lib/mgmt.h | 3 +++
src/advertising.c | 35 +++++++++++++++++++++++++++++------
2 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/lib/mgmt.h b/lib/mgmt.h
index 922a24367..430bd0ef6 100644
--- a/lib/mgmt.h
+++ b/lib/mgmt.h
@@ -511,6 +511,9 @@ struct mgmt_rp_add_advertising {
#define MGMT_ADV_PARAM_TX_POWER (1 << 15)
#define MGMT_ADV_PARAM_SCAN_RSP (1 << 16)
+#define MGMT_ADV_FLAG_SEC_MASK (MGMT_ADV_FLAG_SEC_1M | MGMT_ADV_FLAG_SEC_2M | \
+ MGMT_ADV_FLAG_SEC_CODED)
+
#define MGMT_OP_REMOVE_ADVERTISING 0x003F
struct mgmt_cp_remove_advertising {
uint8_t instance;
diff --git a/src/advertising.c b/src/advertising.c
index ca23774ba..fea6ac00b 100644
--- a/src/advertising.c
+++ b/src/advertising.c
@@ -776,6 +776,18 @@ static uint8_t *generate_adv_data(struct btd_adv_client *client,
bt_ad_add_appearance(client->data, appearance);
}
+ /* Scan response shall not be used when connectable and setting a
+ * secondary PHY since that would end up using EA types instead of
+ * legacy which doesn't support being connectable and scannable
+ * simultaneously.
+ */
+ if ((*flags & MGMT_ADV_FLAG_CONNECTABLE) &&
+ (*flags & MGMT_ADV_FLAG_SEC_MASK) &&
+ client->name) {
+ *flags &= ~MGMT_ADV_FLAG_LOCAL_NAME;
+ bt_ad_add_name(client->data, client->name);
+ }
+
return bt_ad_generate(client->data, len);
}
@@ -807,6 +819,15 @@ static bool adv_client_has_scan_response(struct btd_adv_client *client,
return false;
}
+ /* Scan response shall not be used when connectable and setting a
+ * secondary PHY since that would end up using EA types instead of
+ * legacy which doesn't support being connectable and scannable
+ * simultaneously.
+ */
+ if (flags & MGMT_ADV_FLAG_CONNECTABLE &&
+ flags & MGMT_ADV_FLAG_SEC_MASK)
+ return false;
+
return true;
}
@@ -1250,7 +1271,7 @@ static void add_adv_params_callback(uint8_t status, uint16_t length,
uint8_t *adv_data = NULL;
size_t adv_data_len;
uint8_t *scan_rsp = NULL;
- size_t scan_rsp_len = -1;
+ size_t scan_rsp_len = 0;
uint32_t flags = 0;
unsigned int mgmt_ret;
dbus_int16_t tx_power;
@@ -1281,11 +1302,13 @@ static void add_adv_params_callback(uint8_t status, uint16_t length,
goto fail;
}
- scan_rsp = generate_scan_rsp(client, &flags, &scan_rsp_len);
- if ((!scan_rsp && scan_rsp_len) ||
- scan_rsp_len > rp->max_scan_rsp_len) {
- error("Scan data couldn't be generated.");
- goto fail;
+ if (adv_client_has_scan_response(client, flags)) {
+ scan_rsp = generate_scan_rsp(client, &flags, &scan_rsp_len);
+ if ((!scan_rsp && scan_rsp_len) ||
+ scan_rsp_len > rp->max_scan_rsp_len) {
+ error("Scan data couldn't be generated.");
+ goto fail;
+ }
}
param_len = sizeof(struct mgmt_cp_add_advertising) + adv_data_len +
--
2.35.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* RE: [BlueZ] advertising: Fix attempting to set scan_rsp
2022-06-14 18:51 [PATCH BlueZ] advertising: Fix attempting to set scan_rsp Luiz Augusto von Dentz
@ 2022-06-14 20:14 ` bluez.test.bot
0 siblings, 0 replies; 2+ messages in thread
From: bluez.test.bot @ 2022-06-14 20:14 UTC (permalink / raw)
To: linux-bluetooth, luiz.dentz
[-- Attachment #1: Type: text/plain, Size: 2262 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/project/bluetooth/list/?series=650321
---Test result---
Test Summary:
CheckPatch FAIL 0.77 seconds
GitLint FAIL 0.55 seconds
Prep - Setup ELL PASS 41.57 seconds
Build - Prep PASS 0.47 seconds
Build - Configure PASS 7.95 seconds
Build - Make PASS 1199.70 seconds
Make Check PASS 11.30 seconds
Make Check w/Valgrind PASS 438.74 seconds
Make Distcheck PASS 228.21 seconds
Build w/ext ELL - Configure PASS 8.03 seconds
Build w/ext ELL - Make PASS 1169.13 seconds
Incremental Build with patchesPASS 0.00 seconds
Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script with rule in .checkpatch.conf
Output:
[BlueZ] advertising: Fix attempting to set scan_rsp
WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#99:
Filter policy: Allow Scan Request from Any, Allow Connect Request from Any (0x00)
/github/workspace/src/12881378.patch total: 0 errors, 1 warnings, 68 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.
/github/workspace/src/12881378.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: GitLint - FAIL
Desc: Run gitlint with rule in .gitlint
Output:
[BlueZ] advertising: Fix attempting to set scan_rsp
23: B1 Line exceeds max length (89>80): " Filter policy: Allow Scan Request from Any, Allow Connect Request from Any (0x00)"
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-06-14 20:16 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-14 18:51 [PATCH BlueZ] advertising: Fix attempting to set scan_rsp Luiz Augusto von Dentz
2022-06-14 20:14 ` [BlueZ] " bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).