mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
rtw88: add led locking patch to resolve dropped connections
This commit is contained in:
@@ -20,20 +20,20 @@ case "${LINUX}" in
|
||||
PKG_SHA256="008b00968a8bfc0627580b82a2d30c7304336a4f92a58e80cdbc2d4723e01840"
|
||||
PKG_URL="https://github.com/torvalds/linux/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz"
|
||||
PKG_PATCH_DIRS="default"
|
||||
PKG_PATCH_DIRS="default rtlwifi/6.17"
|
||||
;;
|
||||
raspberrypi)
|
||||
PKG_VERSION="5a72e3ae00ecdd02244e867c2880a3ac0653ee25" # 6.12.40
|
||||
PKG_SHA256="ef92cb35db68978a76f527988a11046c8598d2a512a03de67c8cde5467ddcecb"
|
||||
PKG_URL="https://github.com/raspberrypi/linux/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz"
|
||||
PKG_PATCH_DIRS="raspberrypi rtlwifi/6.13 rtlwifi/6.14 rtlwifi/6.15"
|
||||
PKG_PATCH_DIRS="raspberrypi rtlwifi/6.13 rtlwifi/6.14 rtlwifi/6.15 rtlwifi/6.17"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="6.16"
|
||||
PKG_SHA256="1a4be2fe6b5246aa4ac8987a8a4af34c42a8dd7d08b46ab48516bcc1befbcd83"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/v${PKG_VERSION/.*/}.x/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_PATCH_DIRS="default"
|
||||
PKG_PATCH_DIRS="default rtlwifi/6.17"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
From 26a8bf978ae9cd7688af1d08bc8760674d372e22 Mon Sep 17 00:00:00 2001
|
||||
From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Date: Fri, 1 Aug 2025 23:08:24 +0300
|
||||
Subject: [PATCH] wifi: rtw88: Lock rtwdev->mutex before setting the LED
|
||||
|
||||
Some users report that the LED blinking breaks AP mode somehow. Most
|
||||
likely the LED code and the dynamic mechanism are trying to access the
|
||||
hardware registers at the same time. Fix it by locking rtwdev->mutex
|
||||
before setting the LED and unlocking it after.
|
||||
|
||||
Fixes: 4b6652bc6d8d ("wifi: rtw88: Add support for LED blinking")
|
||||
Closes: https://github.com/lwfinger/rtw88/issues/305
|
||||
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Link: https://patch.msgid.link/ed69fa07-8678-4a40-af44-65e7b1862197@gmail.com
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/led.c | 16 +++++++++++++---
|
||||
1 file changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/led.c b/drivers/net/wireless/realtek/rtw88/led.c
|
||||
index 25aa6cbaa728..7f9ace351a5b 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/led.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/led.c
|
||||
@@ -6,13 +6,23 @@
|
||||
#include "debug.h"
|
||||
#include "led.h"
|
||||
|
||||
-static int rtw_led_set_blocking(struct led_classdev *led,
|
||||
- enum led_brightness brightness)
|
||||
+static void rtw_led_set(struct led_classdev *led,
|
||||
+ enum led_brightness brightness)
|
||||
{
|
||||
struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
|
||||
|
||||
+ mutex_lock(&rtwdev->mutex);
|
||||
+
|
||||
rtwdev->chip->ops->led_set(led, brightness);
|
||||
|
||||
+ mutex_unlock(&rtwdev->mutex);
|
||||
+}
|
||||
+
|
||||
+static int rtw_led_set_blocking(struct led_classdev *led,
|
||||
+ enum led_brightness brightness)
|
||||
+{
|
||||
+ rtw_led_set(led, brightness);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -37,7 +47,7 @@ void rtw_led_init(struct rtw_dev *rtwdev)
|
||||
return;
|
||||
|
||||
if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE)
|
||||
- led->brightness_set = rtwdev->chip->ops->led_set;
|
||||
+ led->brightness_set = rtw_led_set;
|
||||
else
|
||||
led->brightness_set_blocking = rtw_led_set_blocking;
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
Reference in New Issue
Block a user