Merge branch 'fix/ble_mesh_friend_send_seg_msg_failed_v5.2' into 'release/v5.2'

fix(ble_mesh): fix Friend queue losing segmented messages for LPN (5.2)

See merge request espressif/esp-idf!47932
This commit is contained in:
Jiang Jiang Jian
2026-05-22 17:42:53 +08:00
+5 -6
View File
@@ -1270,12 +1270,11 @@ static void enqueue_friend_pdu(struct bt_mesh_friend *frnd,
net_buf_slist_put(&seg->queue, buf); net_buf_slist_put(&seg->queue, buf);
if (type == BLE_MESH_FRIEND_PDU_COMPLETE) { if (type == BLE_MESH_FRIEND_PDU_COMPLETE) {
struct net_buf *sbuf; /* First merge segments into the main queue (preserves the slist chain),
while ((sbuf = (void *)sys_slist_get(&seg->queue))) { * then clear frags/flags. Note: net_buf.frags and net_buf.node.next
sbuf->frags = NULL; * share the same memory (union), so clearing frags before merge would
sbuf->flags &= ~NET_BUF_FRAGS; * break the slist chain.
} */
sys_slist_merge_slist(&frnd->queue, &seg->queue); sys_slist_merge_slist(&frnd->queue, &seg->queue);
frnd->queue_size += seg->seg_count; frnd->queue_size += seg->seg_count;