• Marcel Holtmann's avatar
    Bluetooth: Fix issue with ADV_IND reports and auto-connection handling · 4b9e7e75
    Marcel Holtmann authored
    When adding remote devices to the kernel using the Add Device management
    command, these devices are explicitly allowed to connect. This kind of
    incoming connections are possible even when the controller itself is
    not connectable.
    
    For BR/EDR this distinction is pretty simple since there is only one
    type of incoming connections. With LE this is not that simple anymore
    since there are ADV_IND and ADV_DIRECT_IND advertising events.
    
    The ADV_DIRECT_IND advertising events are send for incoming (slave
    initiated) connections only. And this is the only thing the kernel
    should allow when adding devices using action 0x01. This meaning
    of incoming connections is coming from BR/EDR and needs to be
    mapped to LE the same way.
    
    Supporting the auto-connection of devices using ADV_IND advertising
    events is an important feature as well. However it does not map to
    incoming connections. So introduce a new action 0x02 that allows
    the kernel to connect to devices using ADV_DIRECT_IND and in addition
    ADV_IND advertising reports.
    
    This difference is represented by the new HCI_AUTO_CONN_DIRECT value
    for only connecting to ADV_DIRECT_IND. For connection to ADV_IND and
    ADV_DIRECT_IND the old value HCI_AUTO_CONN_ALWAYS is used.
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
    4b9e7e75
mgmt.c 164 KB