mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/btdm_gatts_notify_stress_test_crash' into 'master'
component/bt: fix bug for gatts notify stress test crash See merge request !1245
This commit is contained in:
commit
b70329040d
@ -37,7 +37,7 @@ esp_err_t esp_ble_gatt_set_local_mtu (uint16_t mtu)
|
||||
ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED);
|
||||
|
||||
if ((mtu < ESP_GATT_DEF_BLE_MTU_SIZE) || (mtu > ESP_GATT_MAX_MTU_SIZE)) {
|
||||
return ESP_GATT_ILLEGAL_PARAMETER;
|
||||
return ESP_ERR_INVALID_SIZE;
|
||||
}
|
||||
|
||||
msg.sig = BTC_SIG_API_CALL;
|
||||
|
@ -363,8 +363,16 @@ static void fragmenter_transmit_finished(BT_HDR *packet, bool all_fragments_sent
|
||||
// This is kind of a weird case, since we're dispatching a partially sent packet
|
||||
// up to a higher layer.
|
||||
// TODO(zachoverflow): rework upper layer so this isn't necessary.
|
||||
buffer_allocator->free(packet);
|
||||
//dispatch_reassembled(packet);
|
||||
//buffer_allocator->free(packet);
|
||||
|
||||
/* dispatch_reassembled(packet) will send the packet back to the higher layer
|
||||
when controller buffer is not enough. hci will send the remain packet back
|
||||
to the l2cap layer and saved in the Link Queue (p_lcb->link_xmit_data_q).
|
||||
The l2cap layer will resend the packet to lower layer when controller buffer
|
||||
can be used.
|
||||
*/
|
||||
|
||||
dispatch_reassembled(packet);
|
||||
//data_dispatcher_dispatch(interface.event_dispatcher, packet->event & MSG_EVT_MASK, packet);
|
||||
}
|
||||
}
|
||||
|
@ -111,6 +111,13 @@ static void fragment_and_dispatch(BT_HDR *packet)
|
||||
packet->layer_specific--;
|
||||
if (packet->layer_specific == 0) {
|
||||
packet->event = MSG_HC_TO_STACK_L2C_SEG_XMIT;
|
||||
|
||||
/* The remain packet will send back to the l2cap layer when controller buffer is not enough
|
||||
current_fragment_packet must be NULL, otherwise hci_host_thread_handler() will
|
||||
connitue handle the remain packet. then the remain packet will be freed.
|
||||
*/
|
||||
|
||||
current_fragment_packet = NULL;
|
||||
callbacks->transmit_finished(packet, false);
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user