• Zijun Hu's avatar
    Bluetooth: hci_sync: Check LMP feature bit instead of quirk · 766ae242
    Zijun Hu authored
    BT core driver should addtionally check LMP feature bit
    "Erroneous Data Reporting" instead of quirk
    HCI_QUIRK_BROKEN_ERR_DATA_REPORTING set by BT device driver to decide if
    HCI commands HCI_Read|Write_Default_Erroneous_Data_Reporting are broken.
    
    BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 2, Part C | page 587
    This feature indicates whether the device is able to support the
    Packet_Status_Flag and the HCI commands HCI_Write_Default_-
    Erroneous_Data_Reporting and HCI_Read_Default_Erroneous_-
    Data_Reporting.
    
    the quirk was introduced by 'commit cde1a8a9 ("Bluetooth: btusb: Fix
    and detect most of the Chinese Bluetooth controllers")' to mark HCI
    commands HCI_Read|Write_Default_Erroneous_Data_Reporting broken by BT
    device driver, but the reason why these two HCI commands are broken is
    that feature "Erroneous Data Reporting" is not enabled by firmware, this
    scenario is illustrated by below log of QCA controllers with USB I/F:
    
    @ RAW Open: hcitool (privileged) version 2.22
    < HCI Command: Read Local Supported Commands (0x04|0x0002) plen 0
    > HCI Event: Command Complete (0x0e) plen 68
          Read Local Supported Commands (0x04|0x0002) ncmd 1
            Status: Success (0x00)
            Commands: 288 entries
    ......
              Read Default Erroneous Data Reporting (Octet 18 - Bit 2)
              Write Default Erroneous Data Reporting (Octet 18 - Bit 3)
    ......
    
    < HCI Command: Read Default Erroneous Data Reporting (0x03|0x005a) plen 0
    > HCI Event: Command Complete (0x0e) plen 4
          Read Default Erroneous Data Reporting (0x03|0x005a) ncmd 1
            Status: Unknown HCI Command (0x01)
    
    < HCI Command: Read Local Supported Features (0x04|0x0003) plen 0
    > HCI Event: Command Complete (0x0e) plen 12
          Read Local Supported Features (0x04|0x0003) ncmd 1
            Status: Success (0x00)
            Features: 0xff 0xfe 0x0f 0xfe 0xd8 0x3f 0x5b 0x87
              3 slot packets
    ......
    Signed-off-by: default avatarZijun Hu <quic_zijuhu@quicinc.com>
    Tested-by: default avatarZijun Hu <quic_zijuhu@quicinc.com>
    Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
    766ae242
hci_sync.c 141 KB