2022-12-07 01:44:26

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ 1/2] bthost: Add callback to accept ISO connections

From: Luiz Augusto von Dentz <[email protected]>

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(-)

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);
--
2.37.3


2022-12-07 03:47:58

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ,1/2] bthost: Add callback to accept ISO connections

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

2022-12-07 23:59:45

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH BlueZ 1/2] bthost: Add callback to accept ISO connections

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Tue, 6 Dec 2022 17:35:45 -0800 you wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> 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!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html