avdtp: limit l2cap mtu to largest br/edr packet

This commit is contained in:
Matthias Ringwald 2023-09-12 14:58:21 +02:00
parent 42c7a7b810
commit 8366bc41ba
3 changed files with 6 additions and 2 deletions

View File

@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- HFP AG: fix setup of audio connection in service level established event
- HFP AG: fix BCM WBS setup
- HID Device: set Report Mode as default
- AVDTP: limit L2CAP MTU to largest BR/EDR packet, fixes A2DP Sink role for some Samsung TV
- AVRCP: reject incoming second l2cap connection
- AVRCP: generate command for avrcp_controller_get_element_attributes dynamically
- GATT Client: ignore notifications/indications until re-encrypted for bonded device without ENABLE_LE_PROACTIVE_AUTHENTICATION

View File

@ -688,7 +688,7 @@ static void avdtp_handle_sdp_query_succeeded(avdtp_connection_t * connection){
break;
default:
connection->state = AVDTP_SIGNALING_CONNECTION_W4_L2CAP_CONNECTED;
l2cap_create_channel(avdtp_packet_handler, connection->remote_addr, connection->avdtp_l2cap_psm, l2cap_max_mtu(), NULL);
l2cap_create_channel(avdtp_packet_handler, connection->remote_addr, connection->avdtp_l2cap_psm, AVDTP_L2CAP_MTU, NULL);
break;
}
}
@ -1621,7 +1621,7 @@ uint8_t is_avdtp_remote_seid_registered(avdtp_stream_endpoint_t * stream_endpoin
void avdtp_init(void){
if (!avdtp_l2cap_registered){
avdtp_l2cap_registered = true;
l2cap_register_service(&avdtp_packet_handler, BLUETOOTH_PSM_AVDTP, 0xffff, gap_get_security_level());
l2cap_register_service(&avdtp_packet_handler, BLUETOOTH_PSM_AVDTP, AVDTP_L2CAP_MTU, gap_get_security_level());
}
}

View File

@ -56,6 +56,9 @@
extern "C" {
#endif
// Limit L2CAP MTU to fit largest packet for BR/EDR
#define AVDTP_L2CAP_MTU (HCI_ACL_3DH5_SIZE - L2CAP_HEADER_SIZE)
#define AVDTP_MAX_NUM_SEPS 10
#define AVDTP_MAX_CSRC_NUM 15
#define AVDTP_MAX_CONTENT_PROTECTION_TYPE_VALUE_LEN 10