Record successful BLE ACK loads in both connection roles

This commit is contained in:
evgeny committed 2026-10-29 22:39:54 +01:00
1 parent 552f7b31b0
commit dd80f589fa
2 files changed
+20 -15

No files matched your search

+9
View File
@@ -460,3 +460,12 @@ WinRT backend с ACK проходит MinGW/C++WinRT cross-build, физичес
С HCI сопоставлены1220 TX/1057 RX кадров по seq/размеру/отпечатку:
local completion→HCI TX <=0.174s, HCI RX→callback0.6..2.9ms.
Это успешный полный проход, не прежняя незавершённая проба на183/512.
- /tmp/ble-ready-ack16-fair-android-central-v3-*: Android central, Linux peripheral.
512/512 echo, по768000байт в каждую сторону за115.141s, суммарно13340B/s.
Максимум DATA flight:10204байта desktop,4411 Android, оба меньше12500.
Минимальный интервал отправок ACK:59.451ms desktop,44.817ms Android.
С HCI сопоставлены1148 TX/899 RX кадров: local completion→HCI TX <=0.358s,
HCI RX→callback0.4..1.7ms. В обоих запусках подтверждены MTU517/PHY2M/15ms.
Скорость указана суммарно для echo; это не полезная скорость2Мбит/с.
После обеих проб обычный desktop GUI перезапущен новой сборкой, Android-политика
восстановлена instrumentation finally. Настройки KDE Connect не менялись.
+11 -15
View File
@@ -4,21 +4,17 @@
## Текущие задачи
[ ] **BLE/ETCP: ограничить очередь ниже локального completion Write Without Response** — 29.10.2026.
HCI и desktop trace: 882 кадра совпали по seq/размеру/отпечатку, но local completion → HCI TX
занимает 3.548..20.167 с. ETCP RTO ограничен 1 с и повторяет ещё не переданные кадры.
Raw BLE без ETCP также дал очередь до 26 с: 96/96 echo, 3309 B/s; tx_limit ограничивает только свою очередь.
Найдены и исправлены преждевременная готовность BlueZ и отсутствие HIGH для incoming Android.
HCI подтвердил interval=15ms/timeout=5s/PHY2M; TX-очередь сократилась до 1.713s, но остаточная просадка есть.
Потолок DATA RTO=1s снят; регрессия RTT2s/ACK1.5s проходит, полного устранения очереди это не даёт.
После фикса desktop central:183/512 за71.328s, HCI TX queue до4.583s; до первого ответа ушло24 INIT.
Android central:475/512 за76.272s, TX queue до1.497s; обе пробы остановлены по окну80s, complete=0.
Следующий этап: выбрать ограничение стартовых INIT/нижней TX-очереди; сборщик не показывает потерь кадров.
Дополнительный фактор: KDE Connect запускает непрерывный классический inquiry; он не единственная причина.
Старые DATA Write/Indicate соседи изолированы объявлением VC/version=2; scan prefix Android приходит из C.
GetManagedObjects больше не освежает старый ManufacturerData/RPA; обе BlueZ-регрессии проходят.
Ошибки Android/JNI/BlueZ/WinRT/ETCP дополнены статусами/контекстом; полный список в диагностике.
Android central: 512/512 echo и приглашения в обе стороны, суммарный goodput 24897 B/s.
[+] **BLE/ETCP: ограничить очередь удалёнными ACK GATT-фрагментов** — 29.10.2026.
BLE version3: циклический ID16bit каждого DATA GATT-value, отдельная ACK Write/Indicate характеристика.
Окно12500байт на направление = фиксированные2Мбит/с ×50ms; локальный completion не возвращает кредит.
Следующий ACK не раньше15ms после completion предыдущего; DATA/INVITE получают время даже при медленном ATT.
Третья подписка обязательна до HELLO. Дубликаты/старые ACK игнорируются, неверный ACK и15s без прогресса логируются/закрывают link.
Новые регрессии: строгий duplex byte bound, ACK>=15ms,70000 IDs, медленный20ms ACK completion, timeout и lifecycle.
Desktop central:512/512 echo за72.344s, суммарно21232B/s; Android central:512/512 за115.141s,13340B/s.
По768000 проверенных байт в каждом направлении в каждой роли. HCI TX queue <=0.174s/0.358s, ранее до20..26s.
Максимум DATA flight8713/10204байт на desktop и4442/4411 на Android, ниже12500 во всех пробах.
C-ядро230/230 + proxy/burst/load, BLE/BlueZ/identity, GUI/ETCP/packet-link, Android unit tasks PASS.
ASAN/UBSan3/3 без ошибок/утечек; desktop/APK и WinRT cross-build PASS. Физический Windows не проверен.
Результаты, параметры проб и пути диагностических журналов: [ble_etcp.txt](ble_etcp.txt).
[+] **ETCP: учитывать измеренный RTT больше секунды в RTO** — 29.10.2026.