diff --git a/components/bt/bluedroid/hci/packet_fragmenter.c b/components/bt/bluedroid/hci/packet_fragmenter.c index ce4642fe7..c1d7dd791 100644 --- a/components/bt/bluedroid/hci/packet_fragmenter.c +++ b/components/bt/bluedroid/hci/packet_fragmenter.c @@ -26,7 +26,7 @@ #include "hash_map.h" #include "hash_functions.h" - +#include "bt_trace.h" #define APPLY_CONTINUATION_FLAG(handle) (((handle) & 0xCFFF) | 0x1000) @@ -91,12 +91,11 @@ static void fragment_and_dispatch(BT_HDR *packet) max_packet_size = max_data_size + HCI_ACL_PREAMBLE_SIZE; remaining_length = packet->len; - STREAM_TO_UINT16(continuation_handle, stream); continuation_handle = APPLY_CONTINUATION_FLAG(continuation_handle); - if (remaining_length > max_packet_size) { + if (remaining_length > max_data_size) { current_fragment_packet = packet; - UINT16_TO_STREAM(stream, max_packet_size); + UINT16_TO_STREAM(stream, max_data_size); packet->len = max_packet_size; callbacks->fragmented(packet, false); packet->offset += max_data_size; @@ -107,7 +106,6 @@ static void fragment_and_dispatch(BT_HDR *packet) stream = packet->data + packet->offset; UINT16_TO_STREAM(stream, continuation_handle); UINT16_TO_STREAM(stream, remaining_length - HCI_ACL_PREAMBLE_SIZE); - // Apparently L2CAP can set layer_specific to a max number of segments to transmit if (packet->layer_specific) { packet->layer_specific--; diff --git a/components/bt/bluedroid/include/bt_trace.h b/components/bt/bluedroid/include/bt_trace.h index 6324adf95..d6ded2196 100644 --- a/components/bt/bluedroid/include/bt_trace.h +++ b/components/bt/bluedroid/include/bt_trace.h @@ -54,7 +54,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len) } #ifdef BTTRC_DUMP_BUFFER -#define BTTRC_DUMP_BUFFER(_prefix, _data, _len) trc_dump_buffer(_data, _len) +#define BTTRC_DUMP_BUFFER(_prefix, _data, _len) trc_dump_buffer(_prefix, _data, _len) #else #define BTTRC_DUMP_BUFFER(_prefix, _data, _len) #endif