diff mbox series

Bluetooth: MGMT: add CIS feature bits to controller information

Message ID 229cb2a6ecc8f182471f87ed527883c1a8353af5.1675103818.git.pav@iki.fi
State Accepted
Commit d2e9c401579a6500af2c8d71c8cecd6f4e52f2c4
Headers show
Series Bluetooth: MGMT: add CIS feature bits to controller information | expand

Commit Message

Pauli Virtanen Jan. 30, 2023, 6:37 p.m. UTC
Userspace needs to know whether the adapter has feature support for
Connected Isochronous Stream - Central/Peripheral, so it can set up
LE Audio features accordingly.

Expose these feature bits as settings in MGMT controller info.

Signed-off-by: Pauli Virtanen <pav@iki.fi>
---

Notes:
    In BlueZ doc/mgmt-api.txt, it says bit 18 is for Quality Report,
    but that's not implemented on kernel side. I'm assuming here the docs
    are not correct, since it's not implemented on kernel side.
    
    In principle the Isochronous Broadcaster / Synchronized Receiver feature
    bits may be similarly needed. These probably can be added later when
    there's a clear use case.

 include/net/bluetooth/mgmt.h |  2 ++
 net/bluetooth/mgmt.c         | 12 ++++++++++++
 2 files changed, 14 insertions(+)

Comments

patchwork-bot+bluetooth@kernel.org Feb. 1, 2023, 12:10 a.m. UTC | #1
Hello:

This patch was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Mon, 30 Jan 2023 20:37:01 +0200 you wrote:
> Userspace needs to know whether the adapter has feature support for
> Connected Isochronous Stream - Central/Peripheral, so it can set up
> LE Audio features accordingly.
> 
> Expose these feature bits as settings in MGMT controller info.
> 
> Signed-off-by: Pauli Virtanen <pav@iki.fi>
> 
> [...]

Here is the summary with links:
  - Bluetooth: MGMT: add CIS feature bits to controller information
    https://git.kernel.org/bluetooth/bluetooth-next/c/d2e9c401579a

You are awesome, thank you!
diff mbox series

Patch

diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
index 743f6f59dff8..e18a927669c0 100644
--- a/include/net/bluetooth/mgmt.h
+++ b/include/net/bluetooth/mgmt.h
@@ -109,6 +109,8 @@  struct mgmt_rp_read_index_list {
 #define MGMT_SETTING_STATIC_ADDRESS	0x00008000
 #define MGMT_SETTING_PHY_CONFIGURATION	0x00010000
 #define MGMT_SETTING_WIDEBAND_SPEECH	0x00020000
+#define MGMT_SETTING_CIS_CENTRAL	0x00040000
+#define MGMT_SETTING_CIS_PERIPHERAL	0x00080000
 
 #define MGMT_OP_READ_INFO		0x0004
 #define MGMT_READ_INFO_SIZE		0
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 0dd30a3beb77..a8d23770d469 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -859,6 +859,12 @@  static u32 get_supported_settings(struct hci_dev *hdev)
 	    hdev->set_bdaddr)
 		settings |= MGMT_SETTING_CONFIGURATION;
 
+	if (cis_central_capable(hdev))
+		settings |= MGMT_SETTING_CIS_CENTRAL;
+
+	if (cis_peripheral_capable(hdev))
+		settings |= MGMT_SETTING_CIS_PERIPHERAL;
+
 	settings |= MGMT_SETTING_PHY_CONFIGURATION;
 
 	return settings;
@@ -932,6 +938,12 @@  static u32 get_current_settings(struct hci_dev *hdev)
 	if (hci_dev_test_flag(hdev, HCI_WIDEBAND_SPEECH_ENABLED))
 		settings |= MGMT_SETTING_WIDEBAND_SPEECH;
 
+	if (cis_central_capable(hdev))
+		settings |= MGMT_SETTING_CIS_CENTRAL;
+
+	if (cis_peripheral_capable(hdev))
+		settings |= MGMT_SETTING_CIS_PERIPHERAL;
+
 	return settings;
 }