• Jaganath Kanakkassery's avatar
    Bluetooth: Fix authentication if acl data comes before remote feature evt · 7b064eda
    Jaganath Kanakkassery authored
    If remote device sends l2cap info request before read_remote_ext_feature
    completes then mgmt_connected will be sent in hci_acldata_packet() and
    remote name request wont be sent and eventually authentication wont happen
    
    Hcidump log of the issue
    
    < HCI Command: Create Connection (0x01|0x0005) plen 13
        bdaddr BC:85:1F:74:7F:29 ptype 0xcc18 rswitch 0x01 clkoffset 0x4bf7 (valid)
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5
    > HCI Event: Command Status (0x0f) plen 4
        Create Connection (0x01|0x0005) status 0x00 ncmd 1
    > HCI Event: Connect Complete (0x03) plen 11
        status 0x00 handle 12 bdaddr BC:85:1F:74:7F:29 type ACL encrypt 0x00
    < HCI Command: Read Remote Supported Features (0x01|0x001b) plen 2
        handle 12
    > HCI Event: Command Status (0x0f) plen 4
        Read Remote Supported Features (0x01|0x001b) status 0x00 ncmd 1
    > HCI Event: Read Remote Supported Features (0x0b) plen 11
        status 0x00 handle 12
        Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
    > HCI Event: Max Slots Change (0x1b) plen 3
        handle 12 slots 5
    < HCI Command: Read Remote Extended Features (0x01|0x001c) plen 3
        handle 12 page 1
    > HCI Event: Command Status (0x0f) plen 4
        Read Remote Extended Features (0x01|0x001c) status 0x00 ncmd 1
    > ACL data: handle 12 flags 0x02 dlen 10
        L2CAP(s): Info req: type 2
    < ACL data: handle 12 flags 0x00 dlen 16
        L2CAP(s): Info rsp: type 2 result 0
          Extended feature mask 0x00b8
            Enhanced Retransmission mode
            Streaming mode
            FCS Option
            Fixed Channels
    > HCI Event: Read Remote Extended Features (0x23) plen 13
        status 0x00 handle 12 page 1 max 1
        Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    > ACL data: handle 12 flags 0x02 dlen 10
        L2CAP(s): Info req: type 3
    < ACL data: handle 12 flags 0x00 dlen 20
        L2CAP(s): Info rsp: type 3 result 0
          Fixed channel list 0x00000002
            L2CAP Signalling Channel
    > HCI Event: Number of Completed Packets (0x13) plen 5
        handle 12 packets 2
    
    This patch moves sending mgmt_connected from hci_acldata_packet() to
    l2cap_connect_req() since this code is to handle the scenario remote
    device sends l2cap connect req too fast
    Signed-off-by: default avatarJaganath Kanakkassery <jaganath.k@samsung.com>
    Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
    7b064eda
l2cap_core.c 154 KB