• Matthias Kaehlcke's avatar
    Bluetooth: hci_qca: wcn3990: Drop baudrate change vendor event · 2faa3f15
    Matthias Kaehlcke authored
    Firmware download to the WCN3990 often fails with a 'TLV response size
    mismatch' error:
    
    [  133.064659] Bluetooth: hci0: setting up wcn3990
    [  133.489150] Bluetooth: hci0: QCA controller version 0x02140201
    [  133.495245] Bluetooth: hci0: QCA Downloading qca/crbtfw21.tlv
    [  133.507214] Bluetooth: hci0: QCA TLV response size mismatch
    [  133.513265] Bluetooth: hci0: QCA Failed to download patch (-84)
    
    This is caused by a vendor event that corresponds to an earlier command
    to change the baudrate. The event is not processed in the context of the
    baudrate change and is later interpreted as response to the firmware
    download command (which is also a vendor command), but the driver detects
    that the event doesn't have the expected amount of associated data.
    
    More details:
    
    For the WCN3990 the vendor command for a baudrate change isn't sent as
    synchronous HCI command, because the controller sends the corresponding
    vendor event with the new baudrate. The event is received and decoded
    after the baudrate change of the host port.
    
    Identify the 'unused' event when it is received and don't add it to
    the queue of RX frames.
    Signed-off-by: default avatarMatthias Kaehlcke <mka@chromium.org>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    2faa3f15
hci_qca.c 38.4 KB