mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
linux: add patch to fix ath9k_htc driver, see https://bugzilla.kernel.org/show_bug.cgi?id=78581 this fixes #3519
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
2fc757b3ff
commit
081f94804f
35
packages/linux/patches/3.16.3/linux-999.05-fix_ath9k_htc.patch
vendored
Normal file
35
packages/linux/patches/3.16.3/linux-999.05-fix_ath9k_htc.patch
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
see https://bugzilla.kernel.org/show_bug.cgi?id=78581
|
||||
|
||||
I read a bit through the code and found one thing which explains
|
||||
both the issue and the random reproducibility behaviour in
|
||||
comment 14 and 16. Currently I can't reboot to fully confirm,
|
||||
only did the speed test as in comment 16. (After overhight
|
||||
hibernate I'm back to the state as in comment 14.)
|
||||
|
||||
This one change on top of v3.16 seems to fix it.
|
||||
|
||||
Another thing caught my eye, it is unrelated to this bug but
|
||||
I'm reporting it here for my convenience ;-)
|
||||
In ath9k_cmn_rx_skb_postprocess():
|
||||
|
||||
hdrlen = ieee80211_get_hdrlen_from_skb(skb);
|
||||
fc = hdr->frame_control;
|
||||
padpos = ieee80211_hdrlen(fc);
|
||||
|
||||
Now padpos == hdrlen, except ieee80211_get_hdrlen_from_skb()
|
||||
checks the skb->len and might fail. This is confused. If the
|
||||
skb->len check is needed, shouldn't it be done before calling
|
||||
ath9k_cmn_rx_accept()?
|
||||
|
||||
diff -Naur linux-3.16.3/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c linux-3.16.3.patch/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
|
||||
--- linux-3.16.3/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c 2014-09-17 19:22:16.000000000 +0200
|
||||
+++ linux-3.16.3.patch/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c 2014-09-30 02:58:30.750915927 +0200
|
||||
@@ -978,7 +978,7 @@
|
||||
struct ath_hw *ah = common->ah;
|
||||
struct ath_htc_rx_status *rxstatus;
|
||||
struct ath_rx_status rx_stats;
|
||||
- bool decrypt_error;
|
||||
+ bool decrypt_error = false;
|
||||
|
||||
if (skb->len < HTC_RX_FRAME_HEADER_SIZE) {
|
||||
ath_err(common, "Corrupted RX frame, dropping (len: %d)\n",
|
Loading…
x
Reference in New Issue
Block a user