Bluetooth: controller: consider host ctrl feature bits in feat exchange

Host controlled feature bits were not considered in feature exchange
procedure. This is fixed.

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
This commit is contained in:
Erik Brockhoff 2022-12-15 09:55:37 +01:00 committed by Carles Cufí
commit 2f61771948
5 changed files with 41 additions and 6 deletions

View file

@ -529,7 +529,7 @@ void ull_llcp_init(struct ll_conn *conn)
/* Reset the feature exchange fields */
memset(&conn->llcp.fex, 0, sizeof(conn->llcp.fex));
conn->llcp.fex.features_used = LL_FEAT;
conn->llcp.fex.features_used = ll_feat_get();
#if defined(CONFIG_BT_CTLR_LE_ENC)
/* Reset encryption related state */

View file

@ -133,13 +133,13 @@ void llcp_pdu_encode_feature_req(struct ll_conn *conn, struct pdu_data *pdu)
#endif /* CONFIG_BT_CTLR_PER_INIT_FEAT_XCHG && CONFIG_BT_PERIPHERAL */
p = &pdu->llctrl.feature_req;
sys_put_le64(LL_FEAT, p->features);
sys_put_le64(ll_feat_get(), p->features);
}
void llcp_pdu_encode_feature_rsp(struct ll_conn *conn, struct pdu_data *pdu)
{
struct pdu_data_llctrl_feature_rsp *p;
uint64_t feature_rsp = LL_FEAT;
uint64_t feature_rsp = ll_feat_get();
pdu->ll_id = PDU_DATA_LLID_CTRL;
pdu->len = PDU_DATA_LLCTRL_LEN(feature_rsp);
@ -173,7 +173,7 @@ void llcp_pdu_decode_feature_req(struct ll_conn *conn, struct pdu_data *pdu)
uint64_t featureset;
feature_filter(pdu->llctrl.feature_req.features, &featureset);
conn->llcp.fex.features_used = LL_FEAT & featureset;
conn->llcp.fex.features_used = ll_feat_get() & featureset;
featureset &= (FEAT_FILT_OCTET0 | conn->llcp.fex.features_used);
conn->llcp.fex.features_peer = featureset;
@ -186,7 +186,7 @@ void llcp_pdu_decode_feature_rsp(struct ll_conn *conn, struct pdu_data *pdu)
uint64_t featureset;
feature_filter(pdu->llctrl.feature_rsp.features, &featureset);
conn->llcp.fex.features_used = LL_FEAT & featureset;
conn->llcp.fex.features_used = ll_feat_get() & featureset;
conn->llcp.fex.features_peer = featureset;
conn->llcp.fex.valid = 1;