• Marcel Holtmann's avatar
    Bluetooth: Add helper for serialized HCI command execution · 6a98e383
    Marcel Holtmann authored
    The usage of __hci_cmd_sync() within the hdev->setup() callback allows for
    a nice and simple serialized execution of HCI commands. More importantly
    it allows for result processing before issueing the next command.
    
    With the current usage of hci_req_run() it is possible to batch up
    commands and execute them, but it is impossible to react to their
    results or errors.
    
    This is an attempt to generalize the hdev->setup() handling and provide
    a simple way of running multiple HCI commands from a single function
    context.
    
    There are multiple struct work that are decdicated to certain tasks
    already used right now. It is add a lot of bloat to hci_dev struct and
    extra handling code. So it might be possible to put all of these behind
    a common HCI command infrastructure and just execute the HCI commands
    from the same work context in a serialized fashion.
    
    For example updating the white list and resolving list can be done now
    without having to know the list size ahead of time. Also preparing for
    suspend or resume shouldn't require a state machine anymore. There are
    other tasks that should be simplified as well.
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    6a98e383
hci_sync.h 1.64 KB