diff options
author | Miao-chen Chou <mcchou@chromium.org> | 2021-09-09 14:10:23 -0700 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2021-09-10 09:27:13 +0200 |
commit | 5031ffcc79b81776ac8f7f8b1a585aed8818e3d1 (patch) | |
tree | 18345b9a0686eb451ec79a5bc6bdeb3f6901f9cb /net/bluetooth/msft.h | |
parent | 9682d36c21196c4019d84e77eae3921128927ce2 (diff) | |
download | linux-stable-5031ffcc79b81776ac8f7f8b1a585aed8818e3d1.tar.gz linux-stable-5031ffcc79b81776ac8f7f8b1a585aed8818e3d1.tar.bz2 linux-stable-5031ffcc79b81776ac8f7f8b1a585aed8818e3d1.zip |
Bluetooth: Keep MSFT ext info throughout a hci_dev's life cycle
This splits the msft_do_{open/close} to msft_do_{open/close} and
msft_{register/unregister}. With this change it is possible to retain
the MSFT extension info irrespective of controller power on/off state.
This helps bluetoothd to report correct 'supported features' of the
controller to the D-Bus clients event if the controller is off. It also
re-reads the MSFT info upon every msft_do_open().
The following test steps were performed.
1. Boot the test device and verify the MSFT support debug log in syslog.
2. Power off the controller and read the 'supported features', power on
and read again.
3. Restart the bluetoothd and verify the 'supported features' value.
Signed-off-by: Miao-chen Chou <mcchou@chromium.org>
Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Reviewed-by: Archie Pusaka <apusaka@chromium.org>
Reviewed-by: Alain Michaud <alainm@chromium.org>
Signed-off-by: Manish Mandlik <mmandlik@google.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/msft.h')
-rw-r--r-- | net/bluetooth/msft.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/bluetooth/msft.h b/net/bluetooth/msft.h index 6e56d94b88d8..8018948c5975 100644 --- a/net/bluetooth/msft.h +++ b/net/bluetooth/msft.h @@ -13,6 +13,8 @@ #if IS_ENABLED(CONFIG_BT_MSFTEXT) bool msft_monitor_supported(struct hci_dev *hdev); +void msft_register(struct hci_dev *hdev); +void msft_unregister(struct hci_dev *hdev); void msft_do_open(struct hci_dev *hdev); void msft_do_close(struct hci_dev *hdev); void msft_vendor_evt(struct hci_dev *hdev, struct sk_buff *skb); @@ -31,6 +33,8 @@ static inline bool msft_monitor_supported(struct hci_dev *hdev) return false; } +static inline void msft_register(struct hci_dev *hdev) {} +static inline void msft_unregister(struct hci_dev *hdev) {} static inline void msft_do_open(struct hci_dev *hdev) {} static inline void msft_do_close(struct hci_dev *hdev) {} static inline void msft_vendor_evt(struct hci_dev *hdev, struct sk_buff *skb) {} |