Commit Graph

29013 Commits

Author SHA1 Message Date
Jiang Jiang Jian
62af48a98f Merge branch 'bugfix/oob_read_in_continue_packet_v5.3' into 'release/v5.3'
fix(bt/bluedroid): fix ACL reassembly dropping valid continuation fragments (v5.3)

See merge request espressif/esp-idf!47381
2026-04-10 10:19:06 +08:00
Tan Yan Quan
e7ef7b5246 fix(openthread): update OT upstream to b1a37932b to fix mbedtls version check 2026-04-09 19:51:22 +08:00
morris
ecf2c653cf Merge branch 'fix/fix_mmu_dirom_reserve_search_logic_v5.3' into 'release/v5.3'
mmu: fixed drom/irom reservation bus cap search logic (v5.3)

See merge request espressif/esp-idf!47392
2026-04-09 15:23:22 +08:00
Island
47e27d5d2b Merge branch 'fix/ble_mesh_bug_report_v5.3' into 'release/v5.3'
Fix/ble mesh bug report (v5.3)

See merge request espressif/esp-idf!46104
2026-04-09 11:20:30 +08:00
armando
56e0dc6f02 fix(mmu): fixed drom/irom reservation bus cap search logic 2026-04-09 11:04:24 +08:00
Jin Cheng
b40629ed55 fix(bt/bluedroid): moved L2CAP length check into start packets only 2026-04-08 20:42:17 +08:00
Jon Gilmore
54d5714190 fix(bt/bluedroid): fix ACL reassembly dropping valid continuation fragments
The minimum length check in `reassemble_and_dispatch()` applied the START packet minimum (`HCI_ACL_PREAMBLE_SIZE + L2CAP_LENGTH_SIZE` = 8 bytes) to **all** ACL packets, including continuation fragments. Continuation fragments only carry the 4-byte ACL preamble (handle + length) with no L2CAP header, so small but valid continuations (5-7 bytes) were incorrectly rejected as "too short."

This caused the first L2CAP PDU in a rapid burst of BLE GATT indications to be silently dropped. The partial reassembly was orphaned, then discarded when the next indication's START fragment arrived, producing:

```
E BT_HCI: ACL packet too short (len=5)
W BT_HCI: reassemble_and_dispatch found unfinished packet for handle with start packet. Dropping old.
```

Parse the ACL preamble first (requires only 4 bytes) to determine the boundary flag, then apply the L2CAP length check only to START packets. Continuation packets are now accepted with the correct minimum of `HCI_ACL_PREAMBLE_SIZE` (4 bytes).

- ESP32-S3 connected to a BLE peripheral that fragments indications at 40 bytes per L2CAP PDU
- Peripheral sends 8+ indications within ~200ms (burst of state changes)
- The final continuation fragment of the first indication is small (5-6 bytes after type stripping)
- 100% reproducible on every burst; confirmed on ESP-IDF 5.5.3, 5.5.4, and 6.0.0

Verified on ESP32-S3 with a Sub-Zero wall oven (SO3050PESP, firmware 8.5):
- **Before fix:** First indication in every burst lost (ACL reassembly failure)
- **After fix:** All indications in burst delivered correctly, including when the final continuation fragment is 5-6 bytes

Closes https://github.com/espressif/esp-idf/issues/18414
2026-04-08 20:42:17 +08:00
Liu Linyan
a657c4e132 fix(ble_mesh): Miscellaneous bugfixes according to our internal bug report 2026-04-08 20:02:55 +08:00
Tomas Rezucha
216c6d2ff6 fix(usb/host): Fix incorrect IAD descriptor length 2026-04-08 12:56:21 +02:00
Shu Chen
eeae3ab2fa Merge branch 'feat/update_ot_jan2026_v5.3' into 'release/v5.3'
feat(openthread): update OT to 9b887f6bd (v5.3)

See merge request espressif/esp-idf!46761
2026-04-08 09:42:51 +00:00
Wang Meng Yang
9f53b38c4c Merge branch 'bugfix/btm_sec_free_dev_v5.3' into 'release/v5.3'
fix(bt): avoid deleting device record on partial transport cleanup(v5.3)

See merge request espressif/esp-idf!47309
2026-04-08 14:51:44 +08:00
Rahul Tank
55fe468bdb Merge branch 'bugfix/fix_dtm_end_test_v5.3' into 'release/v5.3'
fix(nimble): Fix DTM test end packet count parsing (v5.3)

See merge request espressif/esp-idf!47334
2026-04-08 12:15:32 +05:30
Island
d97246a620 Merge branch 'dev/ble-log-202603_v5.3' into 'release/v5.3'
dev: BLE Log 202603 (5.3)

See merge request espressif/esp-idf!47274
2026-04-08 10:31:55 +08:00
Rahul Tank
141a5f8dab fix(nimble): Fix DTM test end packet count parsing 2026-04-07 15:39:20 +05:30
Jiang Jiang Jian
8e156f2dd5 Merge branch 'bugfix/spp_deinit_v5.3' into 'release/v5.3'
fix(bt/bluedroid): flushed all the DM PM at the end of SPP deinit (v5.3)

See merge request espressif/esp-idf!47292
2026-04-07 14:34:13 +08:00
Jiang Jiang Jian
9fc5bf7043 Merge branch 'refactor/spi_flash_private_v5.3' into 'release/v5.3'
fix(spi_flash): fixed overboundary check skipping of erase and write_encrypted (v5.3)

See merge request espressif/esp-idf!46968
2026-04-07 14:05:07 +08:00
Jiang Jiang Jian
e8f26277dd Merge branch 'feat/roaming_app_blacklist_v5.3' into 'release/v5.3'
Add blacklist logic and some fixes in roaming app (v5.3)

See merge request espressif/esp-idf!46806
2026-04-07 13:53:08 +08:00
Zhou Xiao
24a45a173f fix(ble_log_console): exclude from idf-ci pytest collection to fix CI
idf-ci discovers pyproject.toml pytest config and runs a separate
collection pass with --target all, which finds 0 target tests and
raises RuntimeError. Add to .idf_ci.toml exclude_dirs instead of
deleting tests. Restore all 227 unit tests with lint/mypy fixes.
2026-04-07 13:15:03 +08:00
Zhou Xiao
907488e323 docs(ble_log): update README for multi-buffer transport and removed modules
Reflect changes from dev/ble-log-202603: ping-pong to multi-buffer
transport (4 buffers/LBM), renamed Kconfig options (LBM_TRANS_SIZE →
LBM_TRANS_BUF_SIZE with new defaults), always-enabled checksum and
enhanced statistics, UART redirection support, UHCI Out removal,
SPI Out deprecation, and updated memory estimation.
2026-04-07 13:13:51 +08:00
Zhou Xiao
39e0143bf8 feat(bt): add BT_LOG_CRITICAL_ONLY bandwidth-optimized log mode
Add Kconfig options for bandwidth-optimized logging via the BLE Log
Async Output system. When enabled, controller log levels default to 2
and host/mesh log encoding is auto-selected.

- BT_LOG_CRITICAL_ONLY parent: selects BLE_LOG_ENABLED + compression
- BT_LOG_CRITICAL_ONLY_CTRL: supports both NimBLE and non-NimBLE (C3)
  controllers with default level override
- BT_LOG_CRITICAL_ONLY_HOST: host-agnostic, selects compressed log
  for Bluedroid conditionally
- BT_LOG_CRITICAL_ONLY_MESH: placeholder for mesh log encoding
- Guards against BT_STACK_NO_LOG conflict
2026-04-07 13:13:47 +08:00
Zhou Xiao
bf2422136d change(bt): consolidate BLE log Kconfig into common/Kconfig.in
Move per-chip BLE log Kconfig options (esp32c2/c5/c6/h2) into
components/bt/common/Kconfig.in for single-source-of-truth configuration.

Restructure menu as "BT Logs" with "Log Sources" sub-menu containing
controller log config options. Controller log output mode choice defaults
to BLE Log v2 when BLE_LOG_ENABLED, with legacy mode as deprecated
fallback. Migrate wrap_panic_handler and task_wdt_user_handler configs
as well since they depend on BT_LE_CONTROLLER_LOG_ENABLED.
2026-04-07 13:13:32 +08:00
Zhou Xiao
cc75f2ac2f change(ble_log): update ble log module description 2026-04-07 13:13:07 +08:00
Zhou Xiao
9469209c2e feat(bt/ble_log): add cross-pool buffer fallback in LBM acquire
Replace the two-step acquire() + get_trans() flow with a unified
acquire_trans() that iterates all candidate pools. When a pool's
buffers are exhausted, the lock is released and the next pool is
tried, enabling load balancing across pools instead of only
resolving lock contention.
2026-04-07 13:13:03 +08:00
Zhou Xiao
184f5d2392 fix(bt/ble_log): use atomic_load for inflight_peak in buf_util report
Replace __atomic_exchange_n with __atomic_load_n in
ble_log_emit_buf_util() so inflight_peak reports the all-time peak
since init rather than resetting to zero after each report.
2026-04-07 13:12:49 +08:00
Zhou Xiao
7539bbff9d feat(ble_log): migrate from ping-pong to multi-buffer transport
Migrate all LBM, RT, and peripheral backend code from 2-buffer
ping-pong to 4-buffer transport with bitmask index arithmetic.

LBM changes:
- Init sets owner on each transport buffer
- get_trans/flush/dump use (idx+1) & (cnt-1) instead of !idx
- get_trans/flush use __atomic_load_n(ACQUIRE) for prph_owned
- New ble_log_write_buf_util() emits BUF_UTIL telemetry frames,
  exchange peak with 0 to avoid stale baseline after bursts

RT changes:
- Queue depth uses unified BLE_LOG_TRANS_TOTAL_CNT
- rt_queue_trans uses __atomic_store_n for prph_owned, tracks
  per-LBM inflight count and peak via lock-free CAS
- ISR path captures pxHigherPriorityTaskWoken and yields

Peripheral changes:
- All tx_done callbacks: decrement inflight before releasing
  prph_owned with __atomic_store_n(RELEASE)
- SPI/UART send_trans error paths: decrement inflight and
  release prph_owned to allow retry on next get_trans pass
- Dummy send_trans: recycle buffer immediately (pos=0, decrement
  inflight, release prph_owned) since no DMA hardware to wait for
- Redir LBM upgraded to 4-buffer with owner and reset support
- All peripherals implement ble_log_prph_reset_util_counters()
2026-04-07 13:12:45 +08:00
Zhou Xiao
1fefea44a3 feat(ble_log): define multi-buffer transport types and Kconfig
Replace ping-pong (2-buffer) transport constants with configurable
multi-buffer (4-buffer) types. Add buffer utilization reporting types,
unified queue depth derivation macros, and compile-time guards.

Rename Kconfig options to total-per-LBM semantics:
- BLE_LOG_LBM_TRANS_SIZE (512) -> BLE_LOG_LBM_TRANS_BUF_SIZE (2048)
- BLE_LOG_LBM_LL_TRANS_SIZE (1024) -> BLE_LOG_LBM_LL_TRANS_BUF_SIZE (2048)

Key type changes:
- ble_log_prph_trans_t: volatile bool -> plain bool (atomic ops used),
  add void *owner back-reference
- ble_log_lbm_t: trans array sized to BLE_LOG_TRANS_BUF_CNT (4),
  add trans_inflight and trans_inflight_peak counters
- BLE_LOG_TRANS_BUF_CNT replaces BLE_LOG_TRANS_PING_PONG_BUF_CNT
- New ble_log_buf_util_t for buffer utilization telemetry
- _Static_assert guards for divisibility, power-of-2, index limits
2026-04-07 13:12:39 +08:00
Zhou Xiao
888ed2ca70 feat(ble_log): consume frame_sn on loss path and bump BLE_LOG_VERSION
Add BLE_LOG_GET_FRAME_SN() on the buffer-full loss path so the SN
counter advances even when frames are dropped. This allows the console
to detect firmware-side buffer loss via SN gaps. Bump BLE_LOG_VERSION
to reflect the semantic change.
2026-04-07 13:10:37 +08:00
Zhou Xiao
c79fba9a76 feat(bt/ble_log): implement UART redirection stream write
Introduce stream write API with deferred frame encapsulation for UART
redirection on port 0. Redirected data is now properly framed (header +
payload + checksum) instead of being sent as raw ASCII, preventing frame
parser sync oscillation on the receiver.

- Add stream_seal/stream_write/stream_flush in ble_log_lbm.c
- Add BLE_LOG_SRC_REDIR source and BLE_LOG_UART_REDIR_ENABLED gate
- Simplify redir_uart_tx_chars and timer callback to use stream API
- Flush pending stream data in ble_log_prph_deinit
- Make get_trans static (no external callers after refactor)
- Move UART wrap linker flags outside CONFIG_BT_ENABLED guard
- Default UART DMA peripheral when SOC_UHCI_SUPPORTED
- Default baud rate 921600 -> 3000000
2026-04-07 13:10:32 +08:00
Zhou Xiao
f2669b3344 fix(bt/ble_log): fix flush timer callback in UART redirect module
Fix incorrect esp_timer callback signature, replace blocking mutex
with non-blocking trylock, add prph_inited guard, correct timer
period from 100us to 1s, and remove fragile idle-based flush logic.
2026-04-07 13:10:29 +08:00
Zhou Xiao
60d8948fef fix(bt/ble_log): use aligned counters in ble_log_stat_mgr_t
Replace embedded ble_log_enh_stat_t (packed wire struct) inside
ble_log_stat_mgr_t with flat uint32_t counters. Natural 4-byte
alignment ensures each load/store compiles to a single l32i/s32i
on Xtensa/RISC-V, making individual field access atomic without
locks.

Build the packed wire format on the stack inside a critical section
in ble_log_write_enh_stat() so the full snapshot is consistent.
2026-04-07 13:10:25 +08:00
Zhou Xiao
031c9bb374 change(bt/ble_log): make checksum and enhanced statistics always enabled
Remove CONFIG_BLE_LOG_PAYLOAD_CHECKSUM_ENABLED conditional compilation
-- payload checksum is always computed over the full frame.

Remove CONFIG_BLE_LOG_XOR_CHECKSUM_ENABLED conditional -- XOR checksum
is always used; delete the sum checksum dead code path.

Remove CONFIG_BLE_LOG_ENH_STAT_ENABLED conditional -- enhanced
statistics (frame/byte counters per source) are always active.

Remove incorrect select on choice symbol
BT_LE_CONTROLLER_LOG_MODE_BLE_LOG_V2 from BLE_LOG_IS_ESP_CONTROLLER.
2026-04-07 13:10:20 +08:00
Zhou Xiao
817fd9ea7a change(bt/ble_log): deprecate legacy SPI log output module
Move ble_log_spi_out.c and ble_log_spi_out.h into a deprecated/
subdirectory under components/bt/common/ble_log/. Extract all
BT_BLE_LOG_SPI_OUT_* Kconfig options into deprecated/Kconfig.in
with an if-block to reduce depends-on repetition, sourced from
ble_log/Kconfig.in inside a "Legacy SPI Log Output (Deprecated)"
menu. Add mutual exclusion with BLE_LOG_ENABLED so that the legacy
SPI Out and the new BLE Log Module cannot be enabled simultaneously.
Update CMakeLists.txt source path and add deprecated/include to
include dirs so existing callers are unaffected. The BLE Log
Module's SPI Master DMA peripheral transport is the replacement.
2026-04-07 13:10:16 +08:00
Zhou Xiao
374b9a4a63 change(bt/ble_log): remove BLE Log UHCI Out module
Delete ble_log_uhci_out.c and its header. Remove the UHCI Out source
from CMakeLists.txt and all BT_BLE_LOG_UHCI_OUT_* Kconfig options.
Remove per-chip BT_LE_CONTROLLER_LOG_UHCI_OUT_ENABLED Kconfig and
all UHCI Out caller references in esp32c5/c6/h2 controller bt.c.
Update ble_log_console README to reference the new BLE Log Module
UART DMA config. The functionality is superseded by the BLE Log
Module's UART DMA peripheral transport.
2026-04-07 13:10:08 +08:00
Mahavir Jain
a2732a715a Merge branch 'feat/update_cjson_master_v5.3' into 'release/v5.3'
feat(cjson): update to latest master (v5.3)

See merge request espressif/esp-idf!47302
2026-04-07 10:26:07 +05:30
Island
78a04b369d Merge branch 'feat/use_common_config_to_sel_crypt_lib_v5.3' into 'release/v5.3'
Feat/use common config to sel crypt lib (v5.3)

See merge request espressif/esp-idf!46405
2026-04-07 12:12:01 +08:00
yangfeng
22405337e3 fix(bt): avoid deleting device record on partial transport cleanup 2026-04-07 12:00:24 +08:00
Ashish Sharma
b93d96fe1e feat(cjson): update to latest master 2026-04-07 10:33:59 +08:00
Kapil Gupta
80ca100f1e fix(esp_wifi): Change some defaults in roaming app 2026-04-07 10:23:54 +08:00
Kapil Gupta
4d11ccccf6 fix(esp_wifi): Check conditional compilation for roaming app features 2026-04-07 10:23:54 +08:00
Kapil Gupta
7244440a5a fix(esp_wifi): Cancel roaming_app_periodic_scan_internal_handler correctly 2026-04-07 10:23:54 +08:00
Kapil Gupta
1b63385961 fix(esp_wifi): Add some fixes in roaming app 2026-04-07 10:23:54 +08:00
tarun.kumar
af60e504cc fix(wifi) : Resetting current bssid for every roaming connection intiated 2026-04-07 10:23:54 +08:00
Kapil Gupta
900fc56c94 fix(esp_wifi): Address some review comments and issues 2026-04-07 10:23:54 +08:00
Kapil Gupta
bf055692a1 feat(roaming): ignore WPA2-only APs on transition disable
This commit introduces a new feature to the roaming logic. If the
currently connected AP has the 'transition disable' bit set in its
RSN IE, the roaming logic will now ignore any scanned APs that only
support WPA2-PSK. This prevents a security downgrade when roaming in a
mixed WPA2/WPA3 environment.

A new Kconfig option, CONFIG_ESP_WIFI_IGNORE_WPA2_ONLY_ON_TRANSITION_DISABLE,
has been added to control this feature. It is disabled by default.
2026-04-07 10:23:54 +08:00
Kapil Gupta
e7d65ec349 fix(roaming_app): resolve issues in blacklisting logic
This commit addresses several issues in the BSSID blacklisting
feature of the roaming application:

- Merged duplicate  functions into a single,
  unified function, resolving a compilation error.
- Corrected  and
  to properly access the  member of the
  struct, fixing invalid memory access.
- Introduced  in Kconfig to enable
  the manual blacklisting feature and made auto-blacklisting
  dependent on it.
- Updated  to use the
  correct BSSID from .
- Optimized the removal of expired blacklist entries by using
   for better efficiency.
2026-04-07 10:23:54 +08:00
Kapil Gupta
522c28abeb fix(esp_wifi): Add blacklist logic in roaming app 2026-04-07 10:23:54 +08:00
Jiang Jiang Jian
367a442274 Merge branch 'fix/wifi_nan_wrong_service_id_log_v5.3' into 'release/v5.3'
fix(nan): zero-init pub_id and sub_id in NAN service functions (Backport v5.3)

See merge request espressif/esp-idf!47129
2026-04-07 10:23:16 +08:00
Jiang Jiang Jian
646f651e22 Merge branch 'bugfix/wps_deauth_during_scan_v5.3' into 'release/v5.3'
fix(wifi): ignore disconnect events outside WPS handshake phase in wps (Backport v5.3)

See merge request espressif/esp-idf!47253
2026-04-07 10:22:59 +08:00
Jin Cheng
5127e6d752 fix(bt/bluedroid): flushed all the DM PM at the end of SPP deinit 2026-04-07 09:21:40 +08:00
Island
65ae6b3382 Merge branch 'bugfix/fix_privacy_callback_trigger_multipe_times_v5.3' into 'release/v5.3'
Bugfix/fix privacy callback trigger multiple times (5.3)

See merge request espressif/esp-idf!47255
2026-04-03 20:35:57 +08:00