mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #8987 from heitbaum/linux695
Linux: update to 6.9.5 and RPi 6.6.34
This commit is contained in:
commit
9696a6072f
@ -23,15 +23,15 @@ case "${LINUX}" in
|
||||
PKG_PATCH_DIRS="default rtlwifi/6.10 rtlwifi/6.11"
|
||||
;;
|
||||
raspberrypi)
|
||||
PKG_VERSION="51c5d2bb01d3a0cff31d00686f35ed8f33039f78" # 6.6.33
|
||||
PKG_SHA256="0e2ca3b34312b1527aa9d380761af2ab1ec7754ae4481b0317fa144d4b060501"
|
||||
PKG_VERSION="f54dbddefe179433c73ad6611ada5b25d452ce05" # 6.6.34
|
||||
PKG_SHA256="229cae163c76c11f85d6d952e9ac750dbf3efd312f7986d3f3f241a1f4222309"
|
||||
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.9 rtlwifi/6.10 rtlwifi/6.11"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="6.9.2"
|
||||
PKG_SHA256="d46c5bdf2c5961cc2a4dedefe0434d456865e95e4a7cd9f93fff054f9090e5f9"
|
||||
PKG_VERSION="6.9.5"
|
||||
PKG_SHA256="a51fb4ab5003a6149bd9bf4c18c9b1f0f4945c272549095ab154b9d1052f95b1"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/v${PKG_VERSION/.*/}.x/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_PATCH_DIRS="default rtlwifi/6.10 rtlwifi/6.11"
|
||||
;;
|
||||
|
@ -1,43 +0,0 @@
|
||||
From b51a3b582d9626e5b896141c9b9edbf0d49d147d Mon Sep 17 00:00:00 2001
|
||||
From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Date: Thu, 25 Apr 2024 21:09:21 +0300
|
||||
Subject: [PATCH 01/07] 6.10: wifi: rtlwifi: rtl8192de: Fix 5 GHz TX
|
||||
power
|
||||
|
||||
Different channels have different TX power settings. rtl8192de is using
|
||||
the TX power setting from the wrong channel in the 5 GHz band because
|
||||
_rtl92c_phy_get_rightchnlplace expects an array which includes all the
|
||||
channel numbers, but it's using an array which includes only the 5 GHz
|
||||
channel numbers.
|
||||
|
||||
Use the array channel_all (defined in rtl8192de/phy.c) instead of
|
||||
the incorrect channel5g (defined in core.c).
|
||||
|
||||
Tested only with rtl8192du, which will use the same TX power code.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Link: https://msgid.link/c7653517-cf88-4f57-b79a-8edb0a8b32f0@gmail.com
|
||||
---
|
||||
drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c
|
||||
index d835a27429f0..56b5cd032a9a 100644
|
||||
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c
|
||||
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/phy.c
|
||||
@@ -892,8 +892,8 @@ static u8 _rtl92c_phy_get_rightchnlplace(u8 chnl)
|
||||
u8 place = chnl;
|
||||
|
||||
if (chnl > 14) {
|
||||
- for (place = 14; place < ARRAY_SIZE(channel5g); place++) {
|
||||
- if (channel5g[place] == chnl) {
|
||||
+ for (place = 14; place < ARRAY_SIZE(channel_all); place++) {
|
||||
+ if (channel_all[place] == chnl) {
|
||||
place++;
|
||||
break;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
@ -1,83 +0,0 @@
|
||||
From 93f781bf3955bd65a73ad8878c6f76439cdd4aaf Mon Sep 17 00:00:00 2001
|
||||
From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Date: Thu, 25 Apr 2024 21:12:38 +0300
|
||||
Subject: [PATCH 02/07] 6.10: wifi: rtlwifi: rtl8192de: Fix low speed
|
||||
with WPA3-SAE
|
||||
|
||||
Some (all?) management frames are incorrectly reported to mac80211 as
|
||||
decrypted when actually the hardware did not decrypt them. This results
|
||||
in speeds 3-5 times lower than expected, 20-30 Mbps instead of 100
|
||||
Mbps.
|
||||
|
||||
Fix this by checking the encryption type field of the RX descriptor.
|
||||
rtw88 does the same thing.
|
||||
|
||||
This fix was tested only with rtl8192du, which will use the same code.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Link: https://msgid.link/4d600435-f0ea-46b0-bdb4-e60f173da8dd@gmail.com
|
||||
---
|
||||
.../net/wireless/realtek/rtlwifi/rtl8192de/trx.c | 5 ++---
|
||||
.../net/wireless/realtek/rtlwifi/rtl8192de/trx.h | 14 ++++++++++++++
|
||||
2 files changed, 16 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
|
||||
index 192982ec8152..30b262c3f6d0 100644
|
||||
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
|
||||
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
|
||||
@@ -413,7 +413,8 @@ bool rtl92de_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats,
|
||||
stats->icv = (u16)get_rx_desc_icv(pdesc);
|
||||
stats->crc = (u16)get_rx_desc_crc32(pdesc);
|
||||
stats->hwerror = (stats->crc | stats->icv);
|
||||
- stats->decrypted = !get_rx_desc_swdec(pdesc);
|
||||
+ stats->decrypted = !get_rx_desc_swdec(pdesc) &&
|
||||
+ get_rx_desc_enc_type(pdesc) != RX_DESC_ENC_NONE;
|
||||
stats->rate = (u8)get_rx_desc_rxmcs(pdesc);
|
||||
stats->shortpreamble = (u16)get_rx_desc_splcp(pdesc);
|
||||
stats->isampdu = (bool)(get_rx_desc_paggr(pdesc) == 1);
|
||||
@@ -426,8 +427,6 @@ bool rtl92de_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats,
|
||||
rx_status->band = hw->conf.chandef.chan->band;
|
||||
if (get_rx_desc_crc32(pdesc))
|
||||
rx_status->flag |= RX_FLAG_FAILED_FCS_CRC;
|
||||
- if (!get_rx_desc_swdec(pdesc))
|
||||
- rx_status->flag |= RX_FLAG_DECRYPTED;
|
||||
if (get_rx_desc_bw(pdesc))
|
||||
rx_status->bw = RATE_INFO_BW_40;
|
||||
if (get_rx_desc_rxht(pdesc))
|
||||
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h
|
||||
index 2992668c156c..f189ee2d9be2 100644
|
||||
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h
|
||||
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h
|
||||
@@ -14,6 +14,15 @@
|
||||
#define USB_HWDESC_HEADER_LEN 32
|
||||
#define CRCLENGTH 4
|
||||
|
||||
+enum rtl92d_rx_desc_enc {
|
||||
+ RX_DESC_ENC_NONE = 0,
|
||||
+ RX_DESC_ENC_WEP40 = 1,
|
||||
+ RX_DESC_ENC_TKIP_WO_MIC = 2,
|
||||
+ RX_DESC_ENC_TKIP_MIC = 3,
|
||||
+ RX_DESC_ENC_AES = 4,
|
||||
+ RX_DESC_ENC_WEP104 = 5,
|
||||
+};
|
||||
+
|
||||
/* macros to read/write various fields in RX or TX descriptors */
|
||||
|
||||
static inline void set_tx_desc_pkt_size(__le32 *__pdesc, u32 __val)
|
||||
@@ -246,6 +255,11 @@ static inline u32 get_rx_desc_drv_info_size(__le32 *__pdesc)
|
||||
return le32_get_bits(*__pdesc, GENMASK(19, 16));
|
||||
}
|
||||
|
||||
+static inline u32 get_rx_desc_enc_type(__le32 *__pdesc)
|
||||
+{
|
||||
+ return le32_get_bits(*__pdesc, GENMASK(22, 20));
|
||||
+}
|
||||
+
|
||||
static inline u32 get_rx_desc_shift(__le32 *__pdesc)
|
||||
{
|
||||
return le32_get_bits(*__pdesc, GENMASK(25, 24));
|
||||
--
|
||||
2.34.1
|
||||
|
@ -1,174 +0,0 @@
|
||||
From 91b01523927c0e78c0c53c0c8347ee9d194d34f0 Mon Sep 17 00:00:00 2001
|
||||
From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Date: Thu, 25 Apr 2024 21:13:12 +0300
|
||||
Subject: [PATCH 03/07] 6.10: wifi: rtlwifi: rtl8192de: Fix endianness
|
||||
issue in RX path
|
||||
|
||||
Structs rx_desc_92d and rx_fwinfo_92d will not work for big endian
|
||||
systems.
|
||||
|
||||
Delete rx_desc_92d because it's big and barely used, and instead use
|
||||
the get_rx_desc_rxmcs and get_rx_desc_rxht functions, which work on big
|
||||
endian systems too.
|
||||
|
||||
Fix rx_fwinfo_92d by duplicating four of its members in the correct
|
||||
order.
|
||||
|
||||
Tested only with RTL8192DU, which will use the same code.
|
||||
Tested only on a little endian system.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Link: https://msgid.link/698463da-5ef1-40c7-b744-fa51ad847caf@gmail.com
|
||||
---
|
||||
.../wireless/realtek/rtlwifi/rtl8192de/trx.c | 16 ++---
|
||||
.../wireless/realtek/rtlwifi/rtl8192de/trx.h | 65 ++-----------------
|
||||
2 files changed, 15 insertions(+), 66 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
|
||||
index 30b262c3f6d0..cbc7b4dbea9a 100644
|
||||
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
|
||||
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.c
|
||||
@@ -35,7 +35,7 @@ static long _rtl92de_translate_todbm(struct ieee80211_hw *hw,
|
||||
|
||||
static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw,
|
||||
struct rtl_stats *pstats,
|
||||
- struct rx_desc_92d *pdesc,
|
||||
+ __le32 *pdesc,
|
||||
struct rx_fwinfo_92d *p_drvinfo,
|
||||
bool packet_match_bssid,
|
||||
bool packet_toself,
|
||||
@@ -50,8 +50,10 @@ static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw,
|
||||
u8 i, max_spatial_stream;
|
||||
u32 rssi, total_rssi = 0;
|
||||
bool is_cck_rate;
|
||||
+ u8 rxmcs;
|
||||
|
||||
- is_cck_rate = RX_HAL_IS_CCK_RATE(pdesc->rxmcs);
|
||||
+ rxmcs = get_rx_desc_rxmcs(pdesc);
|
||||
+ is_cck_rate = rxmcs <= DESC_RATE11M;
|
||||
pstats->packet_matchbssid = packet_match_bssid;
|
||||
pstats->packet_toself = packet_toself;
|
||||
pstats->packet_beacon = packet_beacon;
|
||||
@@ -157,8 +159,8 @@ static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw,
|
||||
pstats->rx_pwdb_all = pwdb_all;
|
||||
pstats->rxpower = rx_pwr_all;
|
||||
pstats->recvsignalpower = rx_pwr_all;
|
||||
- if (pdesc->rxht && pdesc->rxmcs >= DESC_RATEMCS8 &&
|
||||
- pdesc->rxmcs <= DESC_RATEMCS15)
|
||||
+ if (get_rx_desc_rxht(pdesc) && rxmcs >= DESC_RATEMCS8 &&
|
||||
+ rxmcs <= DESC_RATEMCS15)
|
||||
max_spatial_stream = 2;
|
||||
else
|
||||
max_spatial_stream = 1;
|
||||
@@ -364,7 +366,7 @@ static void _rtl92de_process_phyinfo(struct ieee80211_hw *hw,
|
||||
static void _rtl92de_translate_rx_signal_stuff(struct ieee80211_hw *hw,
|
||||
struct sk_buff *skb,
|
||||
struct rtl_stats *pstats,
|
||||
- struct rx_desc_92d *pdesc,
|
||||
+ __le32 *pdesc,
|
||||
struct rx_fwinfo_92d *p_drvinfo)
|
||||
{
|
||||
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
|
||||
@@ -440,9 +442,7 @@ bool rtl92de_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats,
|
||||
if (phystatus) {
|
||||
p_drvinfo = (struct rx_fwinfo_92d *)(skb->data +
|
||||
stats->rx_bufshift);
|
||||
- _rtl92de_translate_rx_signal_stuff(hw,
|
||||
- skb, stats,
|
||||
- (struct rx_desc_92d *)pdesc,
|
||||
+ _rtl92de_translate_rx_signal_stuff(hw, skb, stats, pdesc,
|
||||
p_drvinfo);
|
||||
}
|
||||
/*rx_status->qual = stats->signal; */
|
||||
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h
|
||||
index f189ee2d9be2..2d4887490f00 100644
|
||||
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h
|
||||
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/trx.h
|
||||
@@ -394,10 +394,17 @@ struct rx_fwinfo_92d {
|
||||
u8 csi_target[2];
|
||||
u8 sigevm;
|
||||
u8 max_ex_pwr;
|
||||
+#ifdef __LITTLE_ENDIAN
|
||||
u8 ex_intf_flag:1;
|
||||
u8 sgi_en:1;
|
||||
u8 rxsc:2;
|
||||
u8 reserve:4;
|
||||
+#else
|
||||
+ u8 reserve:4;
|
||||
+ u8 rxsc:2;
|
||||
+ u8 sgi_en:1;
|
||||
+ u8 ex_intf_flag:1;
|
||||
+#endif
|
||||
} __packed;
|
||||
|
||||
struct tx_desc_92d {
|
||||
@@ -502,64 +509,6 @@ struct tx_desc_92d {
|
||||
u32 reserve_pass_pcie_mm_limit[4];
|
||||
} __packed;
|
||||
|
||||
-struct rx_desc_92d {
|
||||
- u32 length:14;
|
||||
- u32 crc32:1;
|
||||
- u32 icverror:1;
|
||||
- u32 drv_infosize:4;
|
||||
- u32 security:3;
|
||||
- u32 qos:1;
|
||||
- u32 shift:2;
|
||||
- u32 phystatus:1;
|
||||
- u32 swdec:1;
|
||||
- u32 lastseg:1;
|
||||
- u32 firstseg:1;
|
||||
- u32 eor:1;
|
||||
- u32 own:1;
|
||||
-
|
||||
- u32 macid:5;
|
||||
- u32 tid:4;
|
||||
- u32 hwrsvd:5;
|
||||
- u32 paggr:1;
|
||||
- u32 faggr:1;
|
||||
- u32 a1_fit:4;
|
||||
- u32 a2_fit:4;
|
||||
- u32 pam:1;
|
||||
- u32 pwr:1;
|
||||
- u32 moredata:1;
|
||||
- u32 morefrag:1;
|
||||
- u32 type:2;
|
||||
- u32 mc:1;
|
||||
- u32 bc:1;
|
||||
-
|
||||
- u32 seq:12;
|
||||
- u32 frag:4;
|
||||
- u32 nextpktlen:14;
|
||||
- u32 nextind:1;
|
||||
- u32 rsvd:1;
|
||||
-
|
||||
- u32 rxmcs:6;
|
||||
- u32 rxht:1;
|
||||
- u32 amsdu:1;
|
||||
- u32 splcp:1;
|
||||
- u32 bandwidth:1;
|
||||
- u32 htc:1;
|
||||
- u32 tcpchk_rpt:1;
|
||||
- u32 ipcchk_rpt:1;
|
||||
- u32 tcpchk_valid:1;
|
||||
- u32 hwpcerr:1;
|
||||
- u32 hwpcind:1;
|
||||
- u32 iv0:16;
|
||||
-
|
||||
- u32 iv1;
|
||||
-
|
||||
- u32 tsfl;
|
||||
-
|
||||
- u32 bufferaddress;
|
||||
- u32 bufferaddress64;
|
||||
-
|
||||
-} __packed;
|
||||
-
|
||||
void rtl92de_tx_fill_desc(struct ieee80211_hw *hw,
|
||||
struct ieee80211_hdr *hdr, u8 *pdesc,
|
||||
u8 *pbd_desc_tx, struct ieee80211_tx_info *info,
|
||||
--
|
||||
2.34.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user