mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
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:
commit
1d83a2125a
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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 */
|
||||||
};
|
};
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user