diff mbox series

[BlueZ,1/2] bthost: Add callback to accept ISO connections

Message ID 20221207013546.4162481-1-luiz.dentz@gmail.com
State New
Headers show
Series [BlueZ,1/2] bthost: Add callback to accept ISO connections | expand

Commit Message

Luiz Augusto von Dentz Dec. 7, 2022, 1:35 a.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This enables setting an accept callback which can return reject
reason if the connection shall not be accepted.
---
 emulator/bthost.c  | 21 ++++++++++++++++++---
 emulator/bthost.h  |  5 +++--
 tools/iso-tester.c |  2 +-
 3 files changed, 22 insertions(+), 6 deletions(-)

Comments

bluez.test.bot@gmail.com Dec. 7, 2022, 3:38 a.m. UTC | #1
This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=702365

---Test result---

Test Summary:
CheckPatch                    FAIL      1.18 seconds
GitLint                       PASS      0.58 seconds
BuildEll                      PASS      26.21 seconds
BluezMake                     PASS      754.78 seconds
MakeCheck                     PASS      11.29 seconds
MakeDistcheck                 PASS      145.20 seconds
CheckValgrind                 PASS      238.68 seconds
bluezmakeextell               PASS      93.16 seconds
IncrementalBuild              PASS      1219.62 seconds
ScanBuild                     PASS      967.01 seconds

Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script
Output:
[BlueZ,2/2] iso-tester: Add test when peer rejects CIS
WARNING:ENOSYS: ENOSYS means 'invalid syscall nr' and nothing else
#141: FILE: tools/iso-tester.c:547:
+	.expect_err = -ENOSYS

/github/workspace/src/src/13066515.patch total: 0 errors, 1 warnings, 93 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

/github/workspace/src/src/13066515.patch has style problems, please review.

NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.




---
Regards,
Linux Bluetooth
patchwork-bot+bluetooth@kernel.org Dec. 7, 2022, 11:50 p.m. UTC | #2
Hello:

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

On Tue,  6 Dec 2022 17:35:45 -0800 you wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> This enables setting an accept callback which can return reject
> reason if the connection shall not be accepted.
> ---
>  emulator/bthost.c  | 21 ++++++++++++++++++---
>  emulator/bthost.h  |  5 +++--
>  tools/iso-tester.c |  2 +-
>  3 files changed, 22 insertions(+), 6 deletions(-)

Here is the summary with links:
  - [BlueZ,1/2] bthost: Add callback to accept ISO connections
    (no matching commit)
  - [BlueZ,2/2] iso-tester: Add test when peer rejects CIS
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=758161c422e6

You are awesome, thank you!
diff mbox series

Patch

diff --git a/emulator/bthost.c b/emulator/bthost.c
index b05198953506..3cce4666c4e7 100644
--- a/emulator/bthost.c
+++ b/emulator/bthost.c
@@ -224,6 +224,7 @@  struct bthost {
 	void *cmd_complete_data;
 	bthost_new_conn_cb new_conn_cb;
 	void *new_conn_data;
+	bthost_accept_conn_cb accept_iso_cb;
 	bthost_new_conn_cb new_iso_cb;
 	void *new_iso_data;
 	struct rfcomm_connection_data *rfcomm_conn_data;
@@ -1465,12 +1466,25 @@  static void evt_le_cis_req(struct bthost *bthost, const void *data, uint8_t len)
 {
 	const struct bt_hci_evt_le_cis_req *ev = data;
 	struct bt_hci_cmd_le_accept_cis cmd;
+	struct bt_hci_cmd_le_reject_cis rej;
 
 	if (len < sizeof(*ev))
 		return;
 
-	memset(&cmd, 0, sizeof(cmd));
+	if (bthost->accept_iso_cb) {
+		memset(&rej, 0, sizeof(rej));
 
+		rej.reason = bthost->accept_iso_cb(le16_to_cpu(ev->cis_handle),
+							bthost->new_iso_data);
+		if (rej.reason) {
+			rej.handle = ev->cis_handle;
+			send_command(bthost, BT_HCI_CMD_LE_REJECT_CIS,
+						     &rej, sizeof(rej));
+			return;
+		}
+	}
+
+	memset(&cmd, 0, sizeof(cmd));
 	cmd.handle = ev->cis_handle;
 
 	send_command(bthost, BT_HCI_CMD_LE_ACCEPT_CIS, &cmd, sizeof(cmd));
@@ -2893,9 +2907,10 @@  void bthost_set_connect_cb(struct bthost *bthost, bthost_new_conn_cb cb,
 	bthost->new_conn_data = user_data;
 }
 
-void bthost_set_iso_cb(struct bthost *bthost, bthost_new_conn_cb cb,
-							void *user_data)
+void bthost_set_iso_cb(struct bthost *bthost, bthost_accept_conn_cb accept,
+				bthost_new_conn_cb cb, void *user_data)
 {
+	bthost->accept_iso_cb = accept;
 	bthost->new_iso_cb = cb;
 	bthost->new_iso_data = user_data;
 }
diff --git a/emulator/bthost.h b/emulator/bthost.h
index 2cfdef766e4d..c424444763c4 100644
--- a/emulator/bthost.h
+++ b/emulator/bthost.h
@@ -44,13 +44,14 @@  typedef void (*bthost_cmd_complete_cb) (uint16_t opcode, uint8_t status,
 void bthost_set_cmd_complete_cb(struct bthost *bthost,
 				bthost_cmd_complete_cb cb, void *user_data);
 
+typedef uint8_t (*bthost_accept_conn_cb) (uint16_t handle, void *user_data);
 typedef void (*bthost_new_conn_cb) (uint16_t handle, void *user_data);
 
 void bthost_set_connect_cb(struct bthost *bthost, bthost_new_conn_cb cb,
 							void *user_data);
 
-void bthost_set_iso_cb(struct bthost *bthost, bthost_new_conn_cb cb,
-							void *user_data);
+void bthost_set_iso_cb(struct bthost *bthost, bthost_accept_conn_cb accept,
+				bthost_new_conn_cb cb, void *user_data);
 
 void bthost_hci_connect(struct bthost *bthost, const uint8_t *bdaddr,
 							uint8_t addr_type);
diff --git a/tools/iso-tester.c b/tools/iso-tester.c
index 269fbe2d6c62..d29f35695a00 100644
--- a/tools/iso-tester.c
+++ b/tools/iso-tester.c
@@ -752,7 +752,7 @@  static void setup_powered_callback(uint8_t status, uint16_t length,
 			continue;
 
 		if (isodata->send || isodata->recv || isodata->disconnect)
-			bthost_set_iso_cb(host, iso_new_conn, data);
+			bthost_set_iso_cb(host, NULL, iso_new_conn, data);
 
 		if (isodata->bcast) {
 			bthost_set_pa_params(host);