Bluetooth: Controller: df: CP bit not cleared in DF conn mode RX

In direction finding connected mode there is a CP bit that is set
data PDU header. The bit was initialized only if CTE transmission
was enabled. In case of reception of a CTE the bit was available
in PDUs but not initialized.
That caused issues in connection maintenance if PDU memory buffers
were reused. PDU were malformed and connections were lost.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
This commit is contained in:
Piotr Pryga 2022-02-03 20:09:13 +01:00 committed by Carles Cufí
commit 4fc0bfb0e8
3 changed files with 11 additions and 11 deletions

View file

@ -2080,14 +2080,14 @@ uint16_t ull_conn_lll_max_tx_octets_get(struct lll_conn *lll)
/**
* @brief Initialize pdu_data members that are read only in lower link layer.
*
* @param pdu_tx Pointer to pdu_data object to be initialized
* @param pdu Pointer to pdu_data object to be initialized
*/
void ull_pdu_data_init(struct pdu_data *pdu_tx)
void ull_pdu_data_init(struct pdu_data *pdu)
{
#if defined(CONFIG_BT_CTLR_DF_CONN_CTE_TX)
pdu_tx->cp = 0U;
pdu_tx->resv = 0U;
#endif /* CONFIG_BT_CTLR_DF_CONN_CTE_TX */
#if defined(CONFIG_BT_CTLR_DF_CONN_CTE_TX) || defined(CONFIG_BT_CTLR_DF_CONN_CTE_RX)
pdu->cp = 0U;
pdu->resv = 0U;
#endif /* CONFIG_BT_CTLR_DF_CONN_CTE_TX || CONFIG_BT_CTLR_DF_CONN_CTE_RX */
}
static int init_reset(void)