From 822b20eb405e563a91950f9d31a6fb0fd4b46a21 Mon Sep 17 00:00:00 2001 From: lly Date: Tue, 26 May 2020 11:42:10 +0800 Subject: [PATCH] ble_mesh: Transport tx fields overflow [Zephyr] The transport segmented TX nack and seg_pending fields must be at least 6 bits to avoid overflow for 32 segment messages. This change rearranges the seg_tx fields to gather all state flag fields in one byte, while making the counter fields whole bytes. --- components/bt/esp_ble_mesh/mesh_core/transport.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/bt/esp_ble_mesh/mesh_core/transport.c b/components/bt/esp_ble_mesh/mesh_core/transport.c index bc3d69bd1..b69caccc5 100644 --- a/components/bt/esp_ble_mesh/mesh_core/transport.c +++ b/components/bt/esp_ble_mesh/mesh_core/transport.c @@ -80,8 +80,8 @@ static struct seg_tx { new_key:1; /* New/old key */ u8_t nack_count; /* Number of unacked segs */ u8_t ttl; - u8_t seg_pending:5, /* Number of segments pending */ - attempts:3; + u8_t seg_pending; /* Number of segments pending */ + u8_t attempts; /* Transmit attempts */ const struct bt_mesh_send_cb *cb; void *cb_data; struct k_delayed_work retransmit; /* Retransmit timer */