Merge branch 'master' of http://git.syqiq.tech/jeka/utun2
This commit is contained in:
commit
ae1d149545
3 files changed
+73
-17
No files matched your search
@@ -423,3 +423,49 @@ local completion→HCI до1.497s; у1111 RX кадров HCI→callback0.3..2.6
|
||||
test_etcp_windows63 сценария и исправленный server_lifecycle PASS. Desktop GUI/probe
|
||||
и Android APK/instrumentation arm64/x86_64 пересобраны; APK установлен на A52.
|
||||
Обычный desktop VibeChat и Android-политика после проб восстановлены.
|
||||
|
||||
BLE version3: ACK и ограничение очереди (29.10.2026)
|
||||
---------------------------------------------------
|
||||
Общий C-драйвер добавляет flow_id BE16 к каждому DATA GATT-value и отдельную
|
||||
ACK-характеристику f61a9024-4abc-45ac-98e1-761df4c13811 (Write Request/Indication).
|
||||
ACK содержит только последний полученный flow_id BE16. Public DATA/INVITE API
|
||||
сохраняет владение ll_entry; backend имеет отдельный внутренний wire-канал ACK.
|
||||
До opened обязательны все три подписки; ранний HELLO отвергается с WARN.
|
||||
Все DATA, включая INIT/keepalive/bootstrap, расходуют одно окно12500байт на направление.
|
||||
Кредит возвращает только удалённый ACK; ring хранит размеры, не payload.
|
||||
При полном окне TX останавливается, ACK продолжает работать; подтверждение будит writable.
|
||||
Без прогресса ACK15s действует самостоятельный watchdog, не зависящий от native pending.
|
||||
|
||||
ACK объединяется до последнего ID, следующий разрешён через15ms после completion
|
||||
предыдущего. Это также гарантирует >=15ms между отправками и даёт DATA/INVITE время
|
||||
между ACK даже при медленном ATT. Первоначальный безусловный приоритет ACK давал
|
||||
голодание DATA: /tmp/ble-ready-ack16-desktop-v3-* получил0/512 за233.032s,
|
||||
хотя окно строго соблюдалось, HCI TX queue была <=0.753s. Raw-проба до исправления
|
||||
планировщика /tmp/ble-ready-raw-ack16-v3-* дала64/96, complete=0.
|
||||
Новая точная регрессия20ms ACK completion + непрерывный RX падала до исправления;
|
||||
после него встречный DATA приходит примерно за21ms. Изменения ETCP для этого не нужны.
|
||||
|
||||
Проверки: общий transport (MTU23/247/517, дуплексное окно, ACK>=15ms,70000 IDs,
|
||||
повторы/неверный ACK, ранний HELLO, настоящий15s watchdog), identity, private-bus BlueZ,
|
||||
ETCP/packet-link/UI проходят. ASAN/UBSan с detect_leaks=1:3/3 PASS.
|
||||
./check.sh230/230 + proxy/burst/load PASS (180s). Android APK/instrumentation
|
||||
arm64-v8a/x86_64, app/router unit tasks и desktop GUI/probes собираются;
|
||||
WinRT backend с ACK проходит MinGW/C++WinRT cross-build, физического Win radio нет.
|
||||
|
||||
Аппаратная проверка после исправления планировщика:
|
||||
- /tmp/ble-ready-ack16-fair-desktop-v3-*: Linux central, Android A52 peripheral.
|
||||
512/512 echo, по768000байт в каждую сторону за72.344s, суммарно21232B/s.
|
||||
Максимум DATA flight:8713байт desktop,4442 Android, оба меньше12500.
|
||||
Минимальный интервал отправок ACK:27.958ms desktop,31.561ms Android.
|
||||
С 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 не менялись.
|
||||
+16
-2
@@ -304,8 +304,10 @@ Instrumentation временно включает echo, возвращает с
|
||||
Запрос не гарантирует смену PHY: onPhyUpdate/onPhyRead логируют фактические TX/RX.
|
||||
При отсутствии поддержки остаётся согласованный PHY. S2/S8 — параметры только
|
||||
LE Coded PHY (дальность/скорость), с выбранным 2M применяется NO_PREFERRED.
|
||||
У Android BluetoothGattServer нет public requestConnectionPriority; интервал
|
||||
для входящего подключения согласует central. Сам UUID/advertising остаётся legacy
|
||||
У Android BluetoothGattServer нет public requestConnectionPriority; входящий link
|
||||
использует дополнительный BluetoothGatt handle того же ACL только для HIGH.
|
||||
Запрос/результат логируются, handle закрывается при teardown; нового ACL для настройки нет.
|
||||
Сам UUID/advertising остаётся legacy
|
||||
1M для обнаружения; PHY 2M относится к установленному соединению.
|
||||
|
||||
Проверка 2026-10-29
|
||||
@@ -320,3 +322,15 @@ Q8 сообщает isLe2MPhySupported=false; readPhy возвращает statu
|
||||
Общий C codec/transport и BlueZ mock: ASAN+UBSAN, leak detection — 3/3 PASS.
|
||||
Сборки Android arm64-v8a/x86_64, desktop GUI Linux и WinRT cross-build проходят.
|
||||
Физический Windows radio и несколько одновременных Android-клиентов не проверены.
|
||||
|
||||
Проверки ACK version3
|
||||
---------------------
|
||||
test_ble_transport: MTU23/247/517, duplex12500-byte bound при задержанных удалённых ACK,
|
||||
completion сам не освобождает окно, дубликаты/неверный ACK, переход65535→0
|
||||
на70000 GATT-values, интервал ACK>=15ms и настоящий15s ACK watchdog без native pending.
|
||||
Отдельная регрессия имитирует20ms completion ACK при непрерывном входящем DATA:
|
||||
до исправления планировщика встречный DATA не приходил за250ms; после — примерно21ms.
|
||||
Таймер отсчитывается после completion ACK, чтобы новый ACK не вытеснял DATA/INVITE.
|
||||
Private-bus BlueZ проверяет обязательность третьей подписки, адресные ACK indications
|
||||
двух клиентов и ACK Write Request в исходящей роли. test_ble_etcp проверяет настоящий
|
||||
ETCP/crypto, потери DATA и INVITE, NCD/BGP и lifecycle через новый flow prefix.
|
||||
+11
-15
@@ -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.
|
||||
|
||||
Reference in new issue
Block a user