Bluetooth: controller: Fix accept scan en/disable if already en/disabled
Conform to Bluetooth Specification, if the LE_Scan_Enable parameter is set to 0x01 and scanning is already enabled, any change to the Filter_Duplicates setting shall take effect. Disabling scanning when it is disabled has no effect. Fixes #31019. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
30de4b5dd9
commit
1afbe0770c
2 changed files with 17 additions and 0 deletions
|
@ -201,6 +201,13 @@ config BT_CTLR_SCAN_SYNC_ISO_SET
|
||||||
help
|
help
|
||||||
Maximum supported broadcast isochronous groups (BIGs) sync sets.
|
Maximum supported broadcast isochronous groups (BIGs) sync sets.
|
||||||
|
|
||||||
|
config BT_CTLR_SCAN_ENABLE_STRICT
|
||||||
|
bool "Enforce Strict Scan Enable/Disable"
|
||||||
|
depends on BT_OBSERVER
|
||||||
|
help
|
||||||
|
Enforce returning HCI Error Command Disallowed on enabling/disabling
|
||||||
|
already enabled/disabled scanning.
|
||||||
|
|
||||||
config BT_CTLR_ZLI
|
config BT_CTLR_ZLI
|
||||||
bool "Use Zero Latency IRQs"
|
bool "Use Zero Latency IRQs"
|
||||||
depends on ZERO_LATENCY_IRQS
|
depends on ZERO_LATENCY_IRQS
|
||||||
|
|
|
@ -1502,6 +1502,11 @@ static void le_set_scan_enable(struct net_buf *buf, struct net_buf **evt)
|
||||||
status = ll_scan_enable(cmd->enable);
|
status = ll_scan_enable(cmd->enable);
|
||||||
#endif /* !CONFIG_BT_CTLR_ADV_EXT */
|
#endif /* !CONFIG_BT_CTLR_ADV_EXT */
|
||||||
|
|
||||||
|
if (!IS_ENABLED(CONFIG_BT_CTLR_SCAN_ENABLE_STRICT) &&
|
||||||
|
(status == BT_HCI_ERR_CMD_DISALLOWED)) {
|
||||||
|
status = BT_HCI_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
*evt = cmd_complete_status(status);
|
*evt = cmd_complete_status(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2973,6 +2978,11 @@ static void le_set_ext_scan_enable(struct net_buf *buf, struct net_buf **evt)
|
||||||
|
|
||||||
status = ll_scan_enable(cmd->enable, cmd->duration, cmd->period);
|
status = ll_scan_enable(cmd->enable, cmd->duration, cmd->period);
|
||||||
|
|
||||||
|
if (!IS_ENABLED(CONFIG_BT_CTLR_SCAN_ENABLE_STRICT) &&
|
||||||
|
(status == BT_HCI_ERR_CMD_DISALLOWED)) {
|
||||||
|
status = BT_HCI_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
*evt = cmd_complete_status(status);
|
*evt = cmd_complete_status(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue