Merge branch 'feat/ble_mesh_miscellaneous_update_v5.0' into 'release/v5.0'

feat(ble_mesh): Miscellaneous updates for mesh kconfig, relay related(v5.0)

See merge request espressif/esp-idf!28034
This commit is contained in:
Island 2024-01-31 18:29:34 +08:00
commit 1d83a2125a
4 changed files with 37 additions and 5 deletions

View File

@ -19,8 +19,8 @@ if BLE_MESH
bool "Support Duplicate Scan in BLE Mesh" bool "Support Duplicate Scan in BLE Mesh"
select BTDM_BLE_SCAN_DUPL if IDF_TARGET_ESP32 select BTDM_BLE_SCAN_DUPL if IDF_TARGET_ESP32
select BTDM_BLE_MESH_SCAN_DUPL_EN if IDF_TARGET_ESP32 select BTDM_BLE_MESH_SCAN_DUPL_EN if IDF_TARGET_ESP32
select BT_CTRL_BLE_SCAN_DUPL if IDF_TARGET_ESP32C3 select BT_CTRL_BLE_SCAN_DUPL if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3
select BT_CTRL_BLE_MESH_SCAN_DUPL_EN if IDF_TARGET_ESP32C3 select BT_CTRL_BLE_MESH_SCAN_DUPL_EN if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3
select BT_NIMBLE_VS_SUPPORT if BT_NIMBLE_ENABLED select BT_NIMBLE_VS_SUPPORT if BT_NIMBLE_ENABLED
default y default y
help help
@ -545,6 +545,20 @@ if BLE_MESH
Provisioner can provision up to 20 nodes and each node contains two elements, Provisioner can provision up to 20 nodes and each node contains two elements,
then the replay protection list size of Provisioner should be at least 40. then the replay protection list size of Provisioner should be at least 40.
config BLE_MESH_NOT_RELAY_REPLAY_MSG
bool "Not relay replayed messages in a mesh network"
depends on BLE_MESH_EXPERIMENTAL
default n
help
There may be many expired messages in a complex mesh network that would be
considered replayed messages.
Enable this option will refuse to relay such messages, which could help to
reduce invalid packets in the mesh network.
However, it should be noted that enabling this option may result in packet
loss in certain environments.
Therefore, users need to decide whether to enable this option according to
the actual usage situation.
config BLE_MESH_MSG_CACHE_SIZE config BLE_MESH_MSG_CACHE_SIZE
int "Network message cache size" int "Network message cache size"
default 10 default 10
@ -1248,4 +1262,12 @@ if BLE_MESH
endmenu endmenu
config BLE_MESH_EXPERIMENTAL
bool "Make BLE Mesh experimental features visible"
default n
help
Make BLE Mesh Experimental features visible.
Experimental features list:
- CONFIG_BLE_MESH_NOT_RELAY_REPLAY_MSG
endif # BLE_MESH endif # BLE_MESH

View File

@ -2,7 +2,7 @@
/* /*
* SPDX-FileCopyrightText: 2017 Intel Corporation * SPDX-FileCopyrightText: 2017 Intel Corporation
* SPDX-FileContributor: 2018-2021 Espressif Systems (Shanghai) CO LTD * SPDX-FileContributor: 2018-2023 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -1265,7 +1265,7 @@ static void bt_mesh_net_relay(struct net_buf_simple *sbuf,
#endif #endif
if (!buf) { if (!buf) {
BT_ERR("Out of relay buffers"); BT_INFO("Out of relay buffers");
return; return;
} }
@ -1509,7 +1509,11 @@ void bt_mesh_net_recv(struct net_buf_simple *data, int8_t rssi,
* was neither a local element nor an LPN we're Friends for. * was neither a local element nor an LPN we're Friends for.
*/ */
if (!BLE_MESH_ADDR_IS_UNICAST(rx.ctx.recv_dst) || if (!BLE_MESH_ADDR_IS_UNICAST(rx.ctx.recv_dst) ||
(!rx.local_match && !rx.friend_match)) { (!rx.local_match && !rx.friend_match
#if CONFIG_BLE_MESH_NOT_RELAY_REPLAY_MSG
&& !rx.replay_msg
#endif
)) {
net_buf_simple_restore(&buf, &state); net_buf_simple_restore(&buf, &state);
bt_mesh_net_relay(&buf, &rx); bt_mesh_net_relay(&buf, &rx);
} }

View File

@ -294,6 +294,9 @@ struct bt_mesh_net_rx {
ctl:1, /* Network Control */ ctl:1, /* Network Control */
net_if:2, /* Network interface */ net_if:2, /* Network interface */
local_match:1, /* Matched a local element */ local_match:1, /* Matched a local element */
#if CONFIG_BLE_MESH_NOT_RELAY_REPLAY_MSG
replay_msg:1, /* Replayed messages */
#endif
friend_match:1; /* Matched an LPN we're friends for */ friend_match:1; /* Matched an LPN we're friends for */
uint16_t msg_cache_idx; /* Index of entry in message cache */ uint16_t msg_cache_idx; /* Index of entry in message cache */
}; };

View File

@ -711,6 +711,9 @@ bool bt_mesh_rpl_check(struct bt_mesh_net_rx *rx, struct bt_mesh_rpl **match)
return false; return false;
} else { } else {
#if CONFIG_BLE_MESH_NOT_RELAY_REPLAY_MSG
rx->replay_msg = 1;
#endif
return true; return true;
} }
} }