Search Linux Wireless

Re: Bug/Regression - Ralink RT2800 kernel deference issue since kernel 5.14

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2021-11-12 22:21, Robert W wrote:
Hi,

I have recently tried to upgrade a system to run the 5.14 kernel and
noticed that I was getting hangs on the system which seem to relate to
this wireless dongle which I am running hostapd against to provide a
small AP. Since that time kernel 5.15 was released and I have tested
that kernel as well and the problem persists.  The issue sometimes
occurs within an hour and other times it takes a few hours. I have tried
to narrow down what is causing the issue.  I thought it might be a
change elsewhere outside the mac80211/driver area so I tried to run the
wireless backports 5.15-rc6 on top of the last stable kernel of 5.13 so
as to have the smallest number of changes on the system. The backports
crashes with the same error.  I have included below the netconsole
output and the gdb of the kernel module in question. The capture was
from when I was using the backports, but the error  is the same.  I hope
the pastebins are okay to use on the list.  I did try to get some
assistance on linux-wireless IRC and some one asked for the outputs I
had for the information so I am reusing them here.

The following pastebin is the data sent to a netconsole instance.

https://pastebin.com/UxRrTtUh

The gdb debug of the kernel module suggests this section of code.

https://pastebin.com/iMzxWEVU

I am able to run further tests if required.  I am not a programmer, but
I can usually apply code patches and build the resulting code. Please
let me know if require any further information.

Please try this patch:

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 278945e3e08a..e19f6e246642 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1822,15 +1822,15 @@ static int invoke_tx_handlers_late(struct ieee80211_tx_data *tx)
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb);
 	ieee80211_tx_result res = TX_CONTINUE;
+ if (!ieee80211_hw_check(&tx->local->hw, HAS_RATE_CONTROL))
+		CALL_TXH(ieee80211_tx_h_rate_ctrl);
+
 	if (unlikely(info->flags & IEEE80211_TX_INTFL_RETRANSMISSION)) {
 		__skb_queue_tail(&tx->skbs, tx->skb);
 		tx->skb = NULL;
 		goto txh_done;
 	}
- if (!ieee80211_hw_check(&tx->local->hw, HAS_RATE_CONTROL))
-		CALL_TXH(ieee80211_tx_h_rate_ctrl);
-
 	CALL_TXH(ieee80211_tx_h_michael_mic_add);
 	CALL_TXH(ieee80211_tx_h_sequence);
 	CALL_TXH(ieee80211_tx_h_fragment);




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux