* [PATCH BlueZ] rfcomm-tester: Increase amount of data from 8k to 32k
@ 2022-02-15 1:51 Luiz Augusto von Dentz
2022-02-15 3:18 ` [BlueZ] " bluez.test.bot
0 siblings, 1 reply; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2022-02-15 1:51 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This forces the behavior where not all data can be written at once so it
is able to reproduce the from [1].
[1]https://bugzilla.kernel.org/show_bug.cgi?id=215594
---
tools/rfcomm-tester.c | 90 +++++++++++++++++++++++++++++++------------
1 file changed, 66 insertions(+), 24 deletions(-)
diff --git a/tools/rfcomm-tester.c b/tools/rfcomm-tester.c
index 650d33cb6..32c0d6058 100644
--- a/tools/rfcomm-tester.c
+++ b/tools/rfcomm-tester.c
@@ -37,8 +37,10 @@ struct test_data {
struct hciemu *hciemu;
enum hciemu_type hciemu_type;
const void *test_data;
+ GIOChannel *io;
unsigned int io_id;
uint16_t conn_handle;
+ uint16_t send_len;
uint16_t recv_len;
};
@@ -198,6 +200,9 @@ static void test_post_teardown(const void *test_data)
data->io_id = 0;
}
+ if (data->io)
+ g_io_channel_unref(data->io);
+
hciemu_unref(data->hciemu);
data->hciemu = NULL;
}
@@ -301,21 +306,21 @@ const struct rfcomm_client_data connect_send_success = {
.send_data = data,
};
-const uint8_t data_8k[8192] = { [0 ... 1023] = 0x00,
- [1024 ... 2047] = 0x01,
- [2048 ... 3071] = 0x02,
- [3072 ... 4095] = 0x03,
- [4096 ... 5119] = 0x04,
- [5120 ... 6143] = 0x05,
- [6144 ... 7167] = 0x06,
- [7168 ... 8191] = 0x07,
+const uint8_t data_32k[32768] = { [0 ... 4095] = 0x00,
+ [4096 ... 8191] = 0x01,
+ [8192 ... 12287] = 0x02,
+ [12288 ... 16383] = 0x03,
+ [16384 ... 20479] = 0x04,
+ [20480 ... 24575] = 0x05,
+ [24576 ... 28671] = 0x06,
+ [28672 ... 32767] = 0x07,
};
-const struct rfcomm_client_data connect_send_8k_success = {
+const struct rfcomm_client_data connect_send_32k_success = {
.server_channel = 0x0c,
.client_channel = 0x0c,
- .data_len = sizeof(data_8k),
- .send_data = data_8k,
+ .data_len = sizeof(data_32k),
+ .send_data = data_32k,
};
const struct rfcomm_client_data connect_read_success = {
@@ -438,6 +443,44 @@ static gboolean client_received_data(GIOChannel *io, GIOCondition cond,
return false;
}
+static gboolean rc_write_data(GIOChannel *io, GIOCondition cond,
+ gpointer user_data)
+{
+ struct test_data *data = user_data;
+ const struct rfcomm_client_data *cli = data->test_data;
+ int sk;
+ ssize_t ret;
+
+ if (cond & G_IO_NVAL)
+ return false;
+
+ if (cond & (G_IO_HUP | G_IO_ERR))
+ goto done;
+
+ tester_print("Writing %u bytes of data",
+ cli->data_len - data->send_len);
+
+ sk = g_io_channel_unix_get_fd(io);
+
+ ret = write(sk, cli->send_data + data->send_len,
+ cli->data_len - data->send_len);
+ if (ret < 0) {
+ tester_warn("Failed to write %u bytes: %s (%d)",
+ cli->data_len, strerror(errno), errno);
+ tester_test_failed();
+ goto done;
+ }
+
+ data->send_len += ret;
+
+ tester_print("Written %u/%u bytes", data->send_len, cli->data_len);
+
+ /* Don't retry write since that seems to block bthost from receiving */
+done:
+ data->io_id = 0;
+ return false;
+}
+
static gboolean rc_connect_cb(GIOChannel *io, GIOCondition cond,
gpointer user_data)
{
@@ -463,16 +506,9 @@ static gboolean rc_connect_cb(GIOChannel *io, GIOCondition cond,
}
if (cli->send_data) {
- ssize_t ret;
-
- tester_print("Writing %u bytes of data", cli->data_len);
- ret = write(sk, cli->send_data, cli->data_len);
- if (cli->data_len != ret) {
- tester_warn("Failed to write %u bytes: %s (%d)",
- cli->data_len, strerror(errno), errno);
- tester_test_failed();
- }
-
+ data->io = g_io_channel_ref(io);
+ cond = G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL;
+ data->io_id = g_io_add_watch(io, cond, rc_write_data, data);
return false;
} else if (cli->read_data) {
g_io_add_watch(io, G_IO_IN, client_received_data, NULL);
@@ -517,8 +553,14 @@ static void client_hook_func(const void *data, uint16_t len,
tester_print("bthost received progress %u/%u", test_data->recv_len,
cli->data_len);
- if (cli->data_len != test_data->recv_len)
+ if (cli->data_len != test_data->recv_len) {
+ if (cli->data_len != test_data->send_len)
+ test_data->io_id = g_io_add_watch(test_data->io,
+ G_IO_OUT | G_IO_HUP |
+ G_IO_ERR | G_IO_NVAL,
+ rc_write_data, test_data);
return;
+ }
test_data->recv_len = 0;
@@ -765,8 +807,8 @@ int main(int argc, char *argv[])
test_rfcomm("Basic RFCOMM Socket Client - Write Success",
&connect_send_success, setup_powered_client,
test_connect);
- test_rfcomm("Basic RFCOMM Socket Client - Write 8k Success",
- &connect_send_8k_success, setup_powered_client,
+ test_rfcomm("Basic RFCOMM Socket Client - Write 32k Success",
+ &connect_send_32k_success, setup_powered_client,
test_connect);
test_rfcomm("Basic RFCOMM Socket Client - Read Success",
&connect_read_success, setup_powered_client,
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [BlueZ] rfcomm-tester: Increase amount of data from 8k to 32k
2022-02-15 1:51 [PATCH BlueZ] rfcomm-tester: Increase amount of data from 8k to 32k Luiz Augusto von Dentz
@ 2022-02-15 3:18 ` bluez.test.bot
2022-02-15 21:44 ` Luiz Augusto von Dentz
0 siblings, 1 reply; 3+ messages in thread
From: bluez.test.bot @ 2022-02-15 3:18 UTC (permalink / raw)
To: linux-bluetooth, luiz.dentz
[-- Attachment #1: Type: text/plain, Size: 995 bytes --]
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=614322
---Test result---
Test Summary:
CheckPatch PASS 1.46 seconds
GitLint PASS 0.98 seconds
Prep - Setup ELL PASS 41.39 seconds
Build - Prep PASS 0.69 seconds
Build - Configure PASS 8.35 seconds
Build - Make PASS 1247.51 seconds
Make Check PASS 11.71 seconds
Make Check w/Valgrind PASS 434.73 seconds
Make Distcheck PASS 223.30 seconds
Build w/ext ELL - Configure PASS 8.39 seconds
Build w/ext ELL - Make PASS 1234.66 seconds
Incremental Build with patchesPASS 0.00 seconds
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [BlueZ] rfcomm-tester: Increase amount of data from 8k to 32k
2022-02-15 3:18 ` [BlueZ] " bluez.test.bot
@ 2022-02-15 21:44 ` Luiz Augusto von Dentz
0 siblings, 0 replies; 3+ messages in thread
From: Luiz Augusto von Dentz @ 2022-02-15 21:44 UTC (permalink / raw)
To: linux-bluetooth@vger.kernel.org
Hi,
On Mon, Feb 14, 2022 at 7:18 PM <bluez.test.bot@gmail.com> wrote:
>
> 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=614322
>
> ---Test result---
>
> Test Summary:
> CheckPatch PASS 1.46 seconds
> GitLint PASS 0.98 seconds
> Prep - Setup ELL PASS 41.39 seconds
> Build - Prep PASS 0.69 seconds
> Build - Configure PASS 8.35 seconds
> Build - Make PASS 1247.51 seconds
> Make Check PASS 11.71 seconds
> Make Check w/Valgrind PASS 434.73 seconds
> Make Distcheck PASS 223.30 seconds
> Build w/ext ELL - Configure PASS 8.39 seconds
> Build w/ext ELL - Make PASS 1234.66 seconds
> Incremental Build with patchesPASS 0.00 seconds
>
>
>
> ---
> Regards,
> Linux Bluetooth
>
Pushed.
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-02-15 21:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-15 1:51 [PATCH BlueZ] rfcomm-tester: Increase amount of data from 8k to 32k Luiz Augusto von Dentz
2022-02-15 3:18 ` [BlueZ] " bluez.test.bot
2022-02-15 21:44 ` Luiz Augusto von Dentz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.