• Johan Hovold's avatar
    Bluetooth: fix use-bdaddr-property quirk · 6945795b
    Johan Hovold authored
    Devices that lack persistent storage for the device address can indicate
    this by setting the HCI_QUIRK_INVALID_BDADDR which causes the controller
    to be marked as unconfigured until user space has set a valid address.
    
    The related HCI_QUIRK_USE_BDADDR_PROPERTY was later added to similarly
    indicate that the device lacks a valid address but that one may be
    specified in the devicetree.
    
    As is clear from commit 7a0e5b15 ("Bluetooth: Add quirk for reading
    BD_ADDR from fwnode property") that added and documented this quirk and
    commits like de79a9df ("Bluetooth: btqcomsmd: use
    HCI_QUIRK_USE_BDADDR_PROPERTY"), the device address of controllers with
    this flag should be treated as invalid until user space has had a chance
    to configure the controller in case the devicetree property is missing.
    
    As it does not make sense to allow controllers with invalid addresses,
    restore the original semantics, which also makes sure that the
    implementation is consistent (e.g. get_missing_options() indicates that
    the address must be set) and matches the documentation (including
    comments in the code, such as, "In case any of them is set, the
    controller has to start up as unconfigured.").
    
    Fixes: e668eb1e ("Bluetooth: hci_core: Don't stop BT if the BD address missing in dts")
    Signed-off-by: default avatarJohan Hovold <johan+linaro@kernel.org>
    Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    6945795b
hci_sync.c 165 KB