Message ID | 747adb1a5f2a6b7b25e823bf22f8795f4c7c6322.1741370367.git.pav@iki.fi (mailing list archive) |
---|---|
State | Accepted |
Commit | 86d6b74ff002fa84973188565ebfd2780d828a8f |
Headers | show |
Series | [BlueZ,v3,1/6] btdev: Add support for Sync Flow Control | expand |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
tedd_an/BuildEll | success | Build ELL PASS |
tedd_an/BluezMake | success | Bluez Make PASS |
tedd_an/MakeCheck | success | Bluez Make Check PASS |
tedd_an/MakeDistcheck | success | Make Distcheck PASS |
tedd_an/CheckValgrind | success | Check Valgrind PASS |
tedd_an/CheckSmatch | warning | CheckSparse WARNING emulator/btdev.c:451:29: warning: Variable length array is used.emulator/btdev.c:451:29: warning: Variable length array is used.emulator/bthost.c:628:28: warning: Variable length array is used.emulator/bthost.c:826:28: warning: Variable length array is used.tools/sco-tester.c: note: in included file:./lib/bluetooth.h:232:15: warning: array of flexible structures./lib/bluetooth.h:237:31: warning: array of flexible structuresemulator/btdev.c:451:29: warning: Variable length array is used.tools/sco-tester.c: note: in included file:./lib/bluetooth.h:232:15: warning: array of flexible structures./lib/bluetooth.h:237:31: warning: array of flexible structures |
tedd_an/bluezmakeextell | success | Make External ELL PASS |
tedd_an/ScanBuild | success | Scan Build PASS |
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=941624 ---Test result--- Test Summary: CheckPatch PENDING 0.19 seconds GitLint PENDING 0.19 seconds BuildEll PASS 20.73 seconds BluezMake PASS 1566.30 seconds MakeCheck PASS 13.29 seconds MakeDistcheck PASS 162.45 seconds CheckValgrind PASS 218.72 seconds CheckSmatch WARNING 288.73 seconds bluezmakeextell PASS 100.09 seconds IncrementalBuild PENDING 0.24 seconds ScanBuild PASS 895.97 seconds Details ############################## Test: CheckPatch - PENDING Desc: Run checkpatch.pl script Output: ############################## Test: GitLint - PENDING Desc: Run gitlint Output: ############################## Test: CheckSmatch - WARNING Desc: Run smatch tool with source Output: emulator/btdev.c:451:29: warning: Variable length array is used.emulator/btdev.c:451:29: warning: Variable length array is used.emulator/bthost.c:628:28: warning: Variable length array is used.emulator/bthost.c:826:28: warning: Variable length array is used.tools/sco-tester.c: note: in included file:./lib/bluetooth.h:232:15: warning: array of flexible structures./lib/bluetooth.h:237:31: warning: array of flexible structuresemulator/btdev.c:451:29: warning: Variable length array is used.tools/sco-tester.c: note: in included file:./lib/bluetooth.h:232:15: warning: array of flexible structures./lib/bluetooth.h:237:31: warning: array of flexible structures ############################## Test: IncrementalBuild - PENDING Desc: Incremental build with the patches in the series Output: --- Regards, Linux Bluetooth
Hello: This series was applied to bluetooth/bluez.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Fri, 7 Mar 2025 20:00:54 +0200 you wrote: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > This adds support for Sync Flow Control by supporting command > Write Sync Flow Control Enable: > > < HCI Command: Write Sync Fl.. (0x03|0x002f) plen 1 > Flow control: Enabled (0x01) > > HCI Event: Command Complete (0x0e) plen 4 > Write Sync Flow Control Enable (0x03|0x002f) ncmd 1 > Status: Success (0x00) > > [...] Here is the summary with links: - [BlueZ,v3,1/6] btdev: Add support for Sync Flow Control https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=86d6b74ff002 - [BlueZ,v3,2/6] btdev: send SCO setup events to bthost https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=b7ef134eb978 - [BlueZ,v3,3/6] bthost: add hooks receiving SCO connections and data https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=ce1abc32b3fc - [BlueZ,v3,4/6] sco-tester: check sent SCO data is received at bthost https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=87d4f95dc312 - [BlueZ,v3,5/6] btdev: support disabling commands https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=7da93164f483 - [BlueZ,v3,6/6] sco-tester: add tests for different SCO flow control modes https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=95055def8cd2 You are awesome, thank you!
diff --git a/emulator/btdev.c b/emulator/btdev.c index 77d44ad84..713ec7acb 100644 --- a/emulator/btdev.c +++ b/emulator/btdev.c @@ -203,6 +203,7 @@ struct btdev { uint8_t ssp_debug_mode; uint8_t secure_conn_support; uint8_t host_flow_control; + uint8_t sco_flowctl; uint8_t le_supported; uint8_t le_simultaneous; uint8_t le_event_mask[8]; @@ -2398,6 +2399,20 @@ static int cmd_read_tx_power_level(struct btdev *dev, const void *data, return 0; } +static int cmd_write_sync_flowctl(struct btdev *dev, const void *data, + uint8_t len) +{ + const struct bt_hci_cmd_write_sync_flow_control *cmd = data; + uint8_t status = BT_HCI_ERR_SUCCESS; + + dev->sco_flowctl = cmd->enable; + + cmd_complete(dev, BT_HCI_CMD_WRITE_SYNC_FLOW_CONTROL, &status, + sizeof(status)); + + return 0; +} + static int cmd_read_num_iac(struct btdev *dev, const void *data, uint8_t len) { struct bt_hci_rsp_read_num_supported_iac rsp; @@ -2676,6 +2691,7 @@ static int cmd_enable_dut_mode(struct btdev *dev, const void *data, CMD(BT_HCI_CMD_READ_VOICE_SETTING, cmd_read_voice, NULL), \ CMD(BT_HCI_CMD_WRITE_VOICE_SETTING, cmd_write_voice, NULL), \ CMD(BT_HCI_CMD_READ_TX_POWER, cmd_read_tx_power_level, NULL), \ + CMD(BT_HCI_CMD_WRITE_SYNC_FLOW_CONTROL, cmd_write_sync_flowctl, NULL), \ CMD(BT_HCI_CMD_READ_NUM_SUPPORTED_IAC, cmd_read_num_iac, NULL), \ CMD(BT_HCI_CMD_READ_CURRENT_IAC_LAP, cmd_read_current_iac_lap, \ NULL), \ @@ -2739,6 +2755,7 @@ static void set_common_commands_bredr20(struct btdev *btdev) btdev->commands[9] |= 0x04; /* Read Voice Setting */ btdev->commands[9] |= 0x08; /* Write Voice Setting */ btdev->commands[10] |= 0x04; /* Read TX Power Level */ + btdev->commands[10] |= BIT(4); /* Write Sync Flow Control */ btdev->commands[11] |= 0x04; /* Read Number of Supported IAC */ btdev->commands[11] |= 0x08; /* Read Current IAC LAP */ btdev->commands[11] |= 0x10; /* Write Current IAC LAP */ @@ -7655,6 +7672,31 @@ static void send_acl(struct btdev *dev, const void *data, uint16_t len) send_packet(conn->link->dev, iov, 3); } +static void send_sco(struct btdev *dev, const void *data, uint16_t len) +{ + struct bt_hci_acl_hdr *hdr; + struct iovec iov[2]; + struct btdev_conn *conn; + uint8_t pkt_type = BT_H4_SCO_PKT; + + /* Packet type */ + iov[0].iov_base = &pkt_type; + iov[0].iov_len = sizeof(pkt_type); + + iov[1].iov_base = hdr = (void *) (data); + iov[1].iov_len = len; + + conn = queue_find(dev->conns, match_handle, + UINT_TO_PTR(acl_handle(hdr->handle))); + if (!conn) + return; + + if (dev->sco_flowctl) + num_completed_packets(dev, conn->handle); + + send_packet(conn->link->dev, iov, 2); +} + static void send_iso(struct btdev *dev, const void *data, uint16_t len) { struct bt_hci_acl_hdr *hdr; @@ -7702,6 +7744,9 @@ void btdev_receive_h4(struct btdev *btdev, const void *data, uint16_t len) case BT_H4_ACL_PKT: send_acl(btdev, data + 1, len - 1); break; + case BT_H4_SCO_PKT: + send_sco(btdev, data + 1, len - 1); + break; case BT_H4_ISO_PKT: send_iso(btdev, data + 1, len - 1); break;