2024-04-03 18:27:07

by Pauli Virtanen

[permalink] [raw]
Subject: [PATCH BlueZ v6 4/7] btdev: set nonzero SCO mtu & max pkt

Set nonzero max pkt count, so that kernel can transmit data.
The request & accept/reject flow is not emulated yet.
---
emulator/btdev.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/emulator/btdev.c b/emulator/btdev.c
index d64827fc7..5752a2fb0 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -148,6 +148,8 @@ struct btdev {
uint8_t feat_page_2[8];
uint16_t acl_mtu;
uint16_t acl_max_pkt;
+ uint16_t sco_mtu;
+ uint16_t sco_max_pkt;
uint16_t iso_mtu;
uint16_t iso_max_pkt;
uint8_t country_code;
@@ -653,9 +655,9 @@ static int cmd_read_buffer_size(struct btdev *dev, const void *data,

rsp.status = BT_HCI_ERR_SUCCESS;
rsp.acl_mtu = cpu_to_le16(dev->acl_mtu);
- rsp.sco_mtu = 0;
+ rsp.sco_mtu = cpu_to_le16(dev->sco_mtu);
rsp.acl_max_pkt = cpu_to_le16(dev->acl_max_pkt);
- rsp.sco_max_pkt = cpu_to_le16(0);
+ rsp.sco_max_pkt = cpu_to_le16(dev->sco_max_pkt);

cmd_complete(dev, BT_HCI_CMD_READ_BUFFER_SIZE, &rsp, sizeof(rsp));

@@ -2764,6 +2766,8 @@ static int cmd_enhanced_setup_sync_conn_complete(struct btdev *dev,
goto done;
}

+ /* TODO: HCI_Connection_Request connection flow */
+
cc.status = BT_HCI_ERR_SUCCESS;
memcpy(cc.bdaddr, conn->link->dev->bdaddr, 6);

@@ -7173,6 +7177,9 @@ struct btdev *btdev_create(enum btdev_type type, uint16_t id)
btdev->acl_mtu = 192;
btdev->acl_max_pkt = 1;

+ btdev->sco_mtu = 72;
+ btdev->sco_max_pkt = 1;
+
btdev->iso_mtu = 251;
btdev->iso_max_pkt = 1;
btdev->big_handle = 0xff;
--
2.44.0