Skip to content

Commit b928e7d

Browse files
committed
Merge tag 'for-net-2024-08-07' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth
Luiz Augusto von Dentz says: ==================== bluetooth pull request for net: - hci_sync: avoid dup filtering when passive scanning with adv monitor - hci_qca: don't call pwrseq_power_off() twice for QCA6390 - hci_qca: fix QCA6390 support on non-DT platforms - hci_qca: fix a NULL-pointer derefence at shutdown - l2cap: always unlock channel in l2cap_conless_channel() * tag 'for-net-2024-08-07' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth: Bluetooth: hci_sync: avoid dup filtering when passive scanning with adv monitor Bluetooth: l2cap: always unlock channel in l2cap_conless_channel() Bluetooth: hci_qca: fix a NULL-pointer derefence at shutdown Bluetooth: hci_qca: fix QCA6390 support on non-DT platforms Bluetooth: hci_qca: don't call pwrseq_power_off() twice for QCA6390 ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents bc59b55 + b5431dc commit b928e7d

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

drivers/bluetooth/hci_qca.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2160,7 +2160,7 @@ static void qca_power_shutdown(struct hci_uart *hu)
21602160
qcadev = serdev_device_get_drvdata(hu->serdev);
21612161
power = qcadev->bt_power;
21622162

2163-
if (power->pwrseq) {
2163+
if (power && power->pwrseq) {
21642164
pwrseq_power_off(power->pwrseq);
21652165
set_bit(QCA_BT_OFF, &qca->flags);
21662166
return;
@@ -2187,10 +2187,6 @@ static void qca_power_shutdown(struct hci_uart *hu)
21872187
}
21882188
break;
21892189

2190-
case QCA_QCA6390:
2191-
pwrseq_power_off(qcadev->bt_power->pwrseq);
2192-
break;
2193-
21942190
default:
21952191
gpiod_set_value_cansleep(qcadev->bt_en, 0);
21962192
}
@@ -2416,11 +2412,14 @@ static int qca_serdev_probe(struct serdev_device *serdev)
24162412
break;
24172413

24182414
case QCA_QCA6390:
2419-
qcadev->bt_power->pwrseq = devm_pwrseq_get(&serdev->dev,
2420-
"bluetooth");
2421-
if (IS_ERR(qcadev->bt_power->pwrseq))
2422-
return PTR_ERR(qcadev->bt_power->pwrseq);
2423-
break;
2415+
if (dev_of_node(&serdev->dev)) {
2416+
qcadev->bt_power->pwrseq = devm_pwrseq_get(&serdev->dev,
2417+
"bluetooth");
2418+
if (IS_ERR(qcadev->bt_power->pwrseq))
2419+
return PTR_ERR(qcadev->bt_power->pwrseq);
2420+
break;
2421+
}
2422+
fallthrough;
24242423

24252424
default:
24262425
qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",

net/bluetooth/hci_sync.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3019,6 +3019,20 @@ static int hci_passive_scan_sync(struct hci_dev *hdev)
30193019
} else if (hci_is_adv_monitoring(hdev)) {
30203020
window = hdev->le_scan_window_adv_monitor;
30213021
interval = hdev->le_scan_int_adv_monitor;
3022+
3023+
/* Disable duplicates filter when scanning for advertisement
3024+
* monitor for the following reasons.
3025+
*
3026+
* For HW pattern filtering (ex. MSFT), Realtek and Qualcomm
3027+
* controllers ignore RSSI_Sampling_Period when the duplicates
3028+
* filter is enabled.
3029+
*
3030+
* For SW pattern filtering, when we're not doing interleaved
3031+
* scanning, it is necessary to disable duplicates filter,
3032+
* otherwise hosts can only receive one advertisement and it's
3033+
* impossible to know if a peer is still in range.
3034+
*/
3035+
filter_dups = LE_SCAN_FILTER_DUP_DISABLE;
30223036
} else {
30233037
window = hdev->le_scan_window;
30243038
interval = hdev->le_scan_interval;

net/bluetooth/l2cap_core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6774,6 +6774,7 @@ static void l2cap_conless_channel(struct l2cap_conn *conn, __le16 psm,
67746774
bt_cb(skb)->l2cap.psm = psm;
67756775

67766776
if (!chan->ops->recv(chan, skb)) {
6777+
l2cap_chan_unlock(chan);
67776778
l2cap_chan_put(chan);
67786779
return;
67796780
}

0 commit comments

Comments
 (0)