From 812edd64c819d527c630ee2355a63c4227a02524 Mon Sep 17 00:00:00 2001 From: Zhou Xiao Date: Fri, 20 Mar 2026 17:05:17 +0800 Subject: [PATCH] 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. --- components/bt/common/ble_log/Kconfig.in | 25 ------------- .../bt/common/ble_log/src/ble_log_lbm.c | 25 ------------- components/bt/common/ble_log/src/ble_log_rt.c | 2 -- .../bt/common/ble_log/src/ble_log_util.c | 35 +------------------ .../src/internal_include/ble_log_lbm.h | 8 +---- 5 files changed, 2 insertions(+), 93 deletions(-) diff --git a/components/bt/common/ble_log/Kconfig.in b/components/bt/common/ble_log/Kconfig.in index f51997225c..dc8cfc40a8 100644 --- a/components/bt/common/ble_log/Kconfig.in +++ b/components/bt/common/ble_log/Kconfig.in @@ -47,7 +47,6 @@ if BLE_LOG_ENABLED depends on SOC_ESP_NIMBLE_CONTROLLER default y select BT_LE_CONTROLLER_LOG_ENABLED - select BT_LE_CONTROLLER_LOG_MODE_BLE_LOG_V2 select BLE_LOG_LL_ENABLED help Current BLE Controller is ESP BLE Controller @@ -104,30 +103,6 @@ if BLE_LOG_ENABLED help Enable BLE Host side HCI Logging - config BLE_LOG_PAYLOAD_CHECKSUM_ENABLED - bool "Enable payload checksum for BLE Log data integrity check" - default y - help - Checksum is the default method for BLE Log data integrity check, - but for targets with slow CPU speed, it may cause significant system - performance decrease; a compromise could be made to balance the - realtime performance and log data integrity, which is calculating the - checksum of frame head and payload all together by default, or only - calculate the checksum of frame head to minimize performance decrease - - config BLE_LOG_XOR_CHECKSUM_ENABLED - bool "Enable XOR checksum for BLE Log payload integrity check" - default y - help - XOR checksum is introduced for integrity check performance optimization. - - config BLE_LOG_ENH_STAT_ENABLED - bool "Enable enhanced statistics for BLE Log" - default n - help - Enable enhanced statistics for written/lost frame/bytes count, which may - cost additional ~100kB memory - config BLE_LOG_TS_ENABLED bool "Enable BLE Log Timestamp Synchronization (TS)" default n diff --git a/components/bt/common/ble_log/src/ble_log_lbm.c b/components/bt/common/ble_log/src/ble_log_lbm.c index 8c95a815d5..55a21c7edb 100644 --- a/components/bt/common/ble_log/src/ble_log_lbm.c +++ b/components/bt/common/ble_log/src/ble_log_lbm.c @@ -30,9 +30,7 @@ BLE_LOG_STATIC void ble_log_lbm_write_trans(ble_log_prph_trans_t **trans, ble_log_src_t src_code, const uint8_t *addr, uint16_t len, const uint8_t *addr_append, uint16_t len_append, bool omdata); -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED BLE_LOG_STATIC void ble_log_stat_mgr_update(ble_log_src_t src_code, uint32_t len, bool lost); -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ /* ------------------------- */ /* PRIVATE INTERFACE */ @@ -119,22 +117,13 @@ void ble_log_lbm_write_trans(ble_log_prph_trans_t **trans, ble_log_src_t src_cod } /* Data integrity check */ -#if CONFIG_BLE_LOG_PAYLOAD_CHECKSUM_ENABLED uint32_t checksum = ble_log_fast_checksum((const uint8_t *)buf, BLE_LOG_FRAME_HEAD_LEN + payload_len); -#else /* !CONFIG_BLE_LOG_PAYLOAD_CHECKSUM_ENABLED */ - /* Note: - * Minimum data integrity check is still required for log parsing reliability, - * which can be achieved by validating the checksum of frame head only */ - uint32_t checksum = ble_log_fast_checksum((const uint8_t *)buf, BLE_LOG_FRAME_HEAD_LEN); -#endif /* CONFIG_BLE_LOG_PAYLOAD_CHECKSUM_ENABLED */ BLE_LOG_MEMCPY(buf + BLE_LOG_FRAME_HEAD_LEN + payload_len, &checksum, BLE_LOG_FRAME_TAIL_LEN); /* Update peripheral transport */ (*trans)->pos += payload_len + BLE_LOG_FRAME_OVERHEAD; -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED ble_log_stat_mgr_update(src_code, payload_len, false); -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ /* Queue trans if full */ if (BLE_LOG_TRANS_FREE_SPACE((*trans)) <= BLE_LOG_FRAME_OVERHEAD) { @@ -142,7 +131,6 @@ void ble_log_lbm_write_trans(ble_log_prph_trans_t **trans, ble_log_src_t src_cod } } -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED BLE_LOG_IRAM_ATTR BLE_LOG_STATIC void ble_log_stat_mgr_update(ble_log_src_t src_code, uint32_t len, bool lost) { @@ -159,7 +147,6 @@ void ble_log_stat_mgr_update(ble_log_src_t src_code, uint32_t len, bool lost) stat_mgr->enh_stat.written_bytes_cnt += bytes_cnt; } } -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ /* -------------------------- */ /* INTERNAL INTERFACE */ @@ -226,10 +213,8 @@ bool ble_log_lbm_init(void) } BLE_LOG_MEMSET(stat_mgr_ctx[i], 0, sizeof(ble_log_stat_mgr_t)); -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED stat_mgr_ctx[i]->enh_stat.int_src_code = BLE_LOG_INT_SRC_ENH_STAT; stat_mgr_ctx[i]->enh_stat.src_code = i; -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ } /* Initialization done */ @@ -312,7 +297,6 @@ ble_log_prph_trans_t **ble_log_lbm_get_trans(ble_log_lbm_t *lbm, size_t log_len) return NULL; } -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED void ble_log_write_enh_stat(void) { BLE_LOG_REF_COUNT_ACQUIRE(&lbm_ref_count); @@ -328,7 +312,6 @@ void ble_log_write_enh_stat(void) deref: BLE_LOG_REF_COUNT_RELEASE(&lbm_ref_count); } -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ /* ------------------------ */ /* PUBLIC INTERFACE */ @@ -349,10 +332,8 @@ void ble_log_flush(void) goto deref; } -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED /* Write enhanced statistics before module disable */ ble_log_write_enh_stat(); -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ /* Write BLE Log flush log */ ble_log_info_t ble_log_info = { @@ -408,11 +389,9 @@ void ble_log_flush(void) /* Reset statistics manager after all operations complete */ for (int i = 0; i < BLE_LOG_SRC_MAX; i++) { BLE_LOG_MEMSET(stat_mgr_ctx[i], 0, sizeof(ble_log_stat_mgr_t)); -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED /* Reinitialize enhanced statistics fields */ stat_mgr_ctx[i]->enh_stat.int_src_code = BLE_LOG_INT_SRC_ENH_STAT; stat_mgr_ctx[i]->enh_stat.src_code = i; -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ } /* Resume enable status */ @@ -452,11 +431,9 @@ bool ble_log_write_hex(ble_log_src_t src_code, const uint8_t *addr, size_t len) return true; failed: -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED if (lbm_inited) { ble_log_stat_mgr_update(src_code, payload_len, true); } -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ exit: BLE_LOG_REF_COUNT_RELEASE(&lbm_ref_count); return false; @@ -524,11 +501,9 @@ void ble_log_write_hex_ll(uint32_t len, const uint8_t *addr, return; failed: -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED if (lbm_inited) { ble_log_stat_mgr_update(src_code, payload_len, true); } -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ exit: BLE_LOG_REF_COUNT_RELEASE(&lbm_ref_count); return; diff --git a/components/bt/common/ble_log/src/ble_log_rt.c b/components/bt/common/ble_log/src/ble_log_rt.c index 951d4d2a45..8b680d0bac 100644 --- a/components/bt/common/ble_log/src/ble_log_rt.c +++ b/components/bt/common/ble_log/src/ble_log_rt.c @@ -69,9 +69,7 @@ BLE_LOG_IRAM_ATTR BLE_LOG_STATIC void ble_log_rt_task(void *pvParameters) ble_log_rt_ts_trigger(NULL); #endif /* CONFIG_BLE_LOG_TS_TRIGGER_TASK_EVENT */ -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED ble_log_write_enh_stat(); -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ } } diff --git a/components/bt/common/ble_log/src/ble_log_util.c b/components/bt/common/ble_log/src/ble_log_util.c index aac709e4e1..5c74fef0b3 100644 --- a/components/bt/common/ble_log/src/ble_log_util.c +++ b/components/bt/common/ble_log/src/ble_log_util.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -17,7 +17,6 @@ portMUX_TYPE ble_log_spin_lock = portMUX_INITIALIZER_UNLOCKED; #endif /* !UNIT_TEST */ /* INTERNAL INTERFACE */ -#if CONFIG_BLE_LOG_XOR_CHECKSUM_ENABLED #include "esp_compiler.h" BLE_LOG_IRAM_ATTR BLE_LOG_STATIC BLE_LOG_INLINE @@ -69,35 +68,3 @@ uint32_t ble_log_fast_checksum(const uint8_t *data, size_t len) /* Step 6: Rotate the final result */ return ror32(checksum, start_offset_shift); } -#else /* !CONFIG_BLE_LOG_XOR_CHECKSUM_ENABLED */ -BLE_LOG_IRAM_ATTR -uint32_t ble_log_fast_checksum(const uint8_t *data, size_t len) -{ - uint32_t sum = 0; - size_t i = 0; - - /* Step 1: Sum up until 4-byte aligned */ - while (((uintptr_t)(data + i) & 0x3) && (i < len)) { - sum += data[i++]; - } - - /* Step 2: Sum up 4-byte aligned blocks */ - const uint32_t *p32 = (const uint32_t *)(data + i); - size_t blocks = (len - i) / 4; - for (size_t b = 0; b < blocks; b++) { - uint32_t v = p32[b]; - sum += (v & 0xFF) - + ((v >> 8) & 0xFF) - + ((v >> 16) & 0xFF) - + ((v >> 24) & 0xFF); - } - i += blocks * 4; - - /* Step 3: Sum up remaining bytes */ - while (i < len) { - sum += data[i++]; - } - - return sum; -} -#endif /* CONFIG_BLE_LOG_XOR_CHECKSUM_ENABLED */ diff --git a/components/bt/common/ble_log/src/internal_include/ble_log_lbm.h b/components/bt/common/ble_log/src/internal_include/ble_log_lbm.h index 8f0e34ded0..26def47e5c 100644 --- a/components/bt/common/ble_log/src/internal_include/ble_log_lbm.h +++ b/components/bt/common/ble_log/src/internal_include/ble_log_lbm.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -124,7 +124,6 @@ typedef struct { /* ---------------------------------------- */ /* Enhanced Statistics Data Defines */ /* ---------------------------------------- */ -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED typedef struct { uint8_t int_src_code; uint8_t src_code; @@ -133,16 +132,13 @@ typedef struct { uint32_t written_bytes_cnt; uint32_t lost_bytes_cnt; } __attribute__((packed)) ble_log_enh_stat_t; -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ /* -------------------------------------- */ /* Log Statistics Manager Context */ /* -------------------------------------- */ typedef struct { uint32_t frame_sn; -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED ble_log_enh_stat_t enh_stat; -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ } ble_log_stat_mgr_t; #define BLE_LOG_GET_FRAME_SN(VAR) __atomic_fetch_add(VAR, 1, __ATOMIC_RELAXED) @@ -170,8 +166,6 @@ bool ble_log_lbm_init(void); void ble_log_lbm_deinit(void); ble_log_prph_trans_t **ble_log_lbm_get_trans(ble_log_lbm_t *lbm, size_t log_len); void ble_log_lbm_enable(bool enable); -#if CONFIG_BLE_LOG_ENH_STAT_ENABLED void ble_log_write_enh_stat(void); -#endif /* CONFIG_BLE_LOG_ENH_STAT_ENABLED */ #endif /* __BLE_LOG_LBM_H__ */