Skip to content

Commit 6baf8a6

Browse files
apanditholtmann
authored andcommitted
Bluetooth: Set ext scan response only when it exists
Only set extended scan response only when it exists. Otherwise, clear the scan response data. Per the core spec v5.2, Vol 4, Part E, 7.8.55 If the advertising set is non-scannable and the Host uses this command other than to discard existing data, the Controller shall return the error code Invalid HCI Command Parameters (0x12). On WCN3991, the controller correctly responds with Invalid Parameters when this is sent. That error causes __hci_req_hci_power_on to fail with -EINVAL and LE devices can't connect because background scanning isn't configured. Here is an hci trace of where this issue occurs during power on: < HCI Command: LE Set Extended Advertising Parameters (0x08|0x0036) plen 25 Handle: 0x00 Properties: 0x0010 Use legacy advertising PDUs: ADV_NONCONN_IND Min advertising interval: 181.250 msec (0x0122) Max advertising interval: 181.250 msec (0x0122) Channel map: 37, 38, 39 (0x07) Own address type: Random (0x01) 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... TX power: 127 dbm (0x7f) Primary PHY: LE 1M (0x01) Secondary max skip: 0x00 Secondary PHY: LE 1M (0x01) 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): 9 dbm (0x09) < HCI Command: LE Set Advertising Set Random Address (0x08|0x0035) plen 7 Advertising handle: 0x00 Advertising random address: 08:FD:55:ED:22:28 (OUI 08-FD-55) > HCI Event: Command Complete (0x0e) plen 4 LE Set Advertising Set Random Address (0x08|0x0035) ncmd Status: Success (0x00) < HCI Command: LE Set Extended Scan Response Data (0x08|0x0038) plen 35 Handle: 0x00 Operation: Complete scan response data (0x03) Fragment preference: Minimize fragmentation (0x01) Data length: 0x0d Name (short): Chromebook > HCI Event: Command Complete (0x0e) plen 4 LE Set Extended Scan Response Data (0x08|0x0038) ncmd 1 Status: Invalid HCI Command Parameters (0x12) Signed-off-by: Abhishek Pandit-Subedi <[email protected]> Reviewed-by: Daniel Winkler <[email protected]> Signed-off-by: Marcel Holtmann <[email protected]>
1 parent 20ae408 commit 6baf8a6

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

net/bluetooth/hci_request.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,11 +1533,14 @@ void __hci_req_update_scan_rsp_data(struct hci_request *req, u8 instance)
15331533

15341534
memset(&cp, 0, sizeof(cp));
15351535

1536-
if (instance)
1536+
/* Extended scan response data doesn't allow a response to be
1537+
* set if the instance isn't scannable.
1538+
*/
1539+
if (get_adv_instance_scan_rsp_len(hdev, instance))
15371540
len = create_instance_scan_rsp_data(hdev, instance,
15381541
cp.data);
15391542
else
1540-
len = create_default_scan_rsp_data(hdev, cp.data);
1543+
len = 0;
15411544

15421545
if (hdev->scan_rsp_data_len == len &&
15431546
!memcmp(cp.data, hdev->scan_rsp_data, len))

0 commit comments

Comments
 (0)