Bluetooth: host: Fix stuck OOB get local functions SC is not supported
Fix bt_le_oob_get_local and bt_le_ext_adv_oob_get_local stuck forever waiting for the sc_local_pkey_ready semaphore when SC HCI commands are not supported in the controller. By using the le_sc_supported helper function the runtime check of HCI commands and the feature check of CONFIG_BT_SMP_OOB_LEGACY_PAIR_ONLY is combined to be handled int the same way. Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
This commit is contained in:
parent
214175483b
commit
407411f1af
2 changed files with 8 additions and 8 deletions
|
@ -9164,10 +9164,9 @@ int bt_le_oob_get_local(uint8_t id, struct bt_le_oob *oob)
|
|||
bt_addr_le_copy(&oob->addr, &bt_dev.id_addr[id]);
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_BT_SMP) &&
|
||||
!IS_ENABLED(CONFIG_BT_SMP_OOB_LEGACY_PAIR_ONLY)) {
|
||||
if (IS_ENABLED(CONFIG_BT_SMP)) {
|
||||
err = bt_smp_le_oob_generate_sc_data(&oob->le_sc_data);
|
||||
if (err) {
|
||||
if (err && err != -ENOTSUP) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
@ -9220,10 +9219,9 @@ int bt_le_ext_adv_oob_get_local(struct bt_le_ext_adv *adv,
|
|||
bt_addr_le_copy(&oob->addr, &bt_dev.id_addr[adv->id]);
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_BT_SMP) &&
|
||||
!IS_ENABLED(CONFIG_BT_SMP_OOB_LEGACY_PAIR_ONLY)) {
|
||||
if (IS_ENABLED(CONFIG_BT_SMP)) {
|
||||
err = bt_smp_le_oob_generate_sc_data(&oob->le_sc_data);
|
||||
if (err) {
|
||||
if (err && err != -ENOTSUP) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5130,11 +5130,14 @@ int bt_smp_le_oob_set_tk(struct bt_conn *conn, const uint8_t *tk)
|
|||
}
|
||||
#endif /* !defined(CONFIG_BT_SMP_SC_PAIR_ONLY) */
|
||||
|
||||
#if !defined(CONFIG_BT_SMP_OOB_LEGACY_PAIR_ONLY)
|
||||
int bt_smp_le_oob_generate_sc_data(struct bt_le_oob_sc_data *le_sc_oob)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!le_sc_supported()) {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
if (!sc_public_key) {
|
||||
err = k_sem_take(&sc_local_pkey_ready, K_FOREVER);
|
||||
if (err) {
|
||||
|
@ -5164,7 +5167,6 @@ int bt_smp_le_oob_generate_sc_data(struct bt_le_oob_sc_data *le_sc_oob)
|
|||
|
||||
return 0;
|
||||
}
|
||||
#endif /* !defined(CONFIG_BT_SMP_OOB_LEGACY_PAIR_ONLY) */
|
||||
|
||||
#if !defined(CONFIG_BT_SMP_OOB_LEGACY_PAIR_ONLY)
|
||||
static bool le_sc_oob_data_check(struct bt_smp *smp, bool oobd_local_present,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue