• Daniel Winkler's avatar
    Bluetooth: Allow scannable adv with extended MGMT APIs · ff02db13
    Daniel Winkler authored
    An issue was found, where if a bluetooth client requests a broadcast
    advertisement with scan response data, it will not be properly
    registered with the controller. This is because at the time that the
    hci_cp_le_set_scan_param structure is created, the scan response will
    not yet have been received since it comes in a second MGMT call. With
    empty scan response, the request defaults to a non-scannable PDU type.
    On some controllers, the subsequent scan response request will fail due
    to incorrect PDU type, and others will succeed and not use the scan
    response.
    
    This fix allows the advertising parameters MGMT call to include a flag
    to let the kernel know whether a scan response will be coming, so that
    the correct PDU type is used in the first place. A bluetoothd change is
    also incoming to take advantage of it.
    
    To test this, I created a broadcast advertisement with scan response
    data and registered it on the hatch chromebook. Without this change, the
    request fails, and with it will succeed.
    Reviewed-by: default avatarAlain Michaud <alainm@chromium.org>
    Reviewed-by: default avatarSonny Sasaka <sonnysasaka@chromium.org>
    Reviewed-by: default avatarMiao-chen Chou <mcchou@chromium.org>
    Signed-off-by: default avatarDaniel Winkler <danielwinkler@google.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    ff02db13
mgmt.c 238 KB