Bluetooth: Controller: Fix DLE to check supported rx length

When the Controller is configured to support less than 251
as the supported maximum data length, missing check caused
the Controller to incorrectly re-initialize its rx buffers
causing assert during the DLE procedure. This commit fixes
the procedure to correctly use the supported maximum length
if the peer requests a transmit length that exceeds the
supported receive length.

Change-id: I6ad7196e3db44b303ddf2ec06e0ae579bf2eb774
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
This commit is contained in:
Vinayak Chettimada 2016-11-29 04:37:04 +01:00 committed by Johan Hedberg
commit f0186d716d

View file

@ -1266,8 +1266,12 @@ static inline void isr_rx_conn_pkt_ctrl_dle(struct pdu_data *pdu_data_rx,
eff_tx_octets = lr->max_rx_octets;
}
/* use the peer tx as eff rx octets */
if (lr->max_tx_octets != _radio.conn_curr->max_rx_octets) {
/* use the minimal of our max supported and
* peer max_tx_octets
*/
if (lr->max_tx_octets > RADIO_LL_LENGTH_OCTETS_RX_MAX) {
eff_rx_octets = RADIO_LL_LENGTH_OCTETS_RX_MAX;
} else {
eff_rx_octets = lr->max_tx_octets;
}