• Syam Sidhardhan's avatar
    Bluetooth: Fix ACL alive for long in case of non pariable devices · 330b6c15
    Syam Sidhardhan authored
    For certain devices (ex: HID mouse), support for authentication,
    pairing and bonding is optional. For such devices, the ACL alive
    for too long after the L2CAP disconnection.
    
    To avoid the ACL alive for too long after L2CAP disconnection, reset the
    ACL disconnect timeout back to HCI_DISCONN_TIMEOUT during L2CAP connect.
    
    While merging the commit id:a9ea3ed9
    this issue might have introduced.
    
    Hcidump info:
    sh-4.1# /opt/hcidump -Xt
    2013-08-05 16:49:00.894129 < ACL data: handle 12 flags 0x00 dlen 12
        L2CAP(s): Disconn req: dcid 0x004a scid 0x0041
    2013-08-05 16:49:00.894195 < HCI Command: Exit Sniff Mode (0x02|0x0004)
        plen 2
        handle 12
    2013-08-05 16:49:00.894269 < ACL data: handle 12 flags 0x00 dlen 12
        L2CAP(s): Disconn req: dcid 0x0049 scid 0x0040
    2013-08-05 16:49:00.895645 > HCI Event: Command Status (0x0f) plen 4
        Exit Sniff Mode (0x02|0x0004) status 0x00 ncmd 1
    2013-08-05 16:49:00.934391 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 12 mode 0x00 interval 0
        Mode: Active
    2013-08-05 16:49:00.936592 > HCI Event: Number of Completed Packets
        (0x13) plen 5
        handle 12 packets 2
    2013-08-05 16:49:00.951577 > ACL data: handle 12 flags 0x02 dlen 12
        L2CAP(s): Disconn rsp: dcid 0x004a scid 0x0041
    2013-08-05 16:49:00.952820 > ACL data: handle 12 flags 0x02 dlen 12
        L2CAP(s): Disconn rsp: dcid 0x0049 scid 0x0040
    2013-08-05 16:49:00.969165 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 12 mode 0x02 interval 50
        Mode: Sniff
    
    2013-08-05 16:49:48.175533 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 12 mode 0x00 interval 0
        Mode: Active
    2013-08-05 16:49:48.219045 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 12 mode 0x02 interval 108
        Mode: Sniff
    
    2013-08-05 16:51:00.968209 < HCI Command: Disconnect (0x01|0x0006) plen 3
        handle 12 reason 0x13
        Reason: Remote User Terminated Connection
    2013-08-05 16:51:00.969056 > HCI Event: Command Status (0x0f) plen 4
        Disconnect (0x01|0x0006) status 0x00 ncmd 1
    2013-08-05 16:51:01.013495 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 12 mode 0x00 interval 0
        Mode: Active
    2013-08-05 16:51:01.073777 > HCI Event: Disconn Complete (0x05) plen 4
        status 0x00 handle 12 reason 0x16
        Reason: Connection Terminated by Local Host
    
    ============================ After  fix ================================
    
    2013-08-05 16:57:35.986648 < ACL data: handle 11 flags 0x00 dlen 12
        L2CAP(s): Disconn req: dcid 0x004c scid 0x0041
    2013-08-05 16:57:35.986713 < HCI Command: Exit Sniff Mode (0x02|0x0004)
        plen 2
        handle 11
    2013-08-05 16:57:35.986785 < ACL data: handle 11 flags 0x00 dlen 12
        L2CAP(s): Disconn req: dcid 0x004b scid 0x0040
    2013-08-05 16:57:35.988110 > HCI Event: Command Status (0x0f) plen 4
        Exit Sniff Mode (0x02|0x0004) status 0x00 ncmd 1
    2013-08-05 16:57:36.030714 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 11 mode 0x00 interval 0
        Mode: Active
    2013-08-05 16:57:36.032950 > HCI Event: Number of Completed Packets
        (0x13) plen 5
        handle 11 packets 2
    2013-08-05 16:57:36.047926 > ACL data: handle 11 flags 0x02 dlen 12
        L2CAP(s): Disconn rsp: dcid 0x004c scid 0x0041
    2013-08-05 16:57:36.049200 > ACL data: handle 11 flags 0x02 dlen 12
        L2CAP(s): Disconn rsp: dcid 0x004b scid 0x0040
    2013-08-05 16:57:36.065509 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 11 mode 0x02 interval 50
        Mode: Sniff
    
    2013-08-05 16:57:40.052006 < HCI Command: Disconnect (0x01|0x0006) plen 3
        handle 11 reason 0x13
        Reason: Remote User Terminated Connection
    2013-08-05 16:57:40.052869 > HCI Event: Command Status (0x0f) plen 4
        Disconnect (0x01|0x0006) status 0x00 ncmd 1
    2013-08-05 16:57:40.104731 > HCI Event: Mode Change (0x14) plen 6
        status 0x00 handle 11 mode 0x00 interval 0
        Mode: Active
    2013-08-05 16:57:40.146935 > HCI Event: Disconn Complete (0x05) plen 4
        status 0x00 handle 11 reason 0x16
        Reason: Connection Terminated by Local Host
    Signed-off-by: default avatarSang-Ki Park <sangki79.park@samsung.com>
    Signed-off-by: default avatarChan-yeol Park <chanyeol.park@samsung.com>
    Signed-off-by: default avatarJaganath Kanakkassery <jaganath.k@samsung.com>
    Signed-off-by: default avatarSzymon Janc <szymon.janc@tieto.com>
    Signed-off-by: default avatarSyam Sidhardhan <s.syam@samsung.com>
    Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
    330b6c15
l2cap_core.c 159 KB