• A
    Bluetooth: Set ext scan response only when it exists · 6baf8a6a
    Abhishek Pandit-Subedi 提交于
    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: NAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
    Reviewed-by: NDaniel Winkler <danielwinkler@google.com>
    Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
    6baf8a6a
hci_request.c 83.3 KB