Message ID | 56ABA73C.1060504@lwfinger.net (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Johannes Berg |
Headers | show |
On Fri, Jan 29, 2016 at 9:54 AM, Larry Finger <Larry.Finger@lwfinger.net> wrote: > > The test patch that Johannes sent earlier was close. The section needed to > add VHT rates is: Hmm. This looks pretty much exactly like what I already tried (I had fixed Johannes' patch to use "vht_cap" already, since it didn't compile otherwise). So the only difference is that it only checks WIRELESS_MODE_AC_5G. But it worked for me this time. I have no idea why. Maybe Johannes' patch actually always worked for me, but I just had a transient problem that made me think it didn't. I think I only booted it once, and went "oh, ok, no network, that didn't work". Linus -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 01/29/2016 12:39 PM, Linus Torvalds wrote: > On Fri, Jan 29, 2016 at 9:54 AM, Larry Finger <Larry.Finger@lwfinger.net> wrote: >> >> The test patch that Johannes sent earlier was close. The section needed to >> add VHT rates is: > > Hmm. This looks pretty much exactly like what I already tried (I had > fixed Johannes' patch to use "vht_cap" already, since it didn't > compile otherwise). > > So the only difference is that it only checks WIRELESS_MODE_AC_5G. > > But it worked for me this time. I have no idea why. > > Maybe Johannes' patch actually always worked for me, but I just had a > transient problem that made me think it didn't. I think I only booted > it once, and went "oh, ok, no network, that didn't work". Thanks for testing. Upon reflection, it really should check the other WIRELESS_MODE_AC_x bits. Johannes' patch was indeed correct. With my AP setup changed, I get about 100 Mb/s RX using netperf. TX is still bad. @Johannes: OK if I make you the author of the final version of the patch? Larry -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Jan 29, 2016 at 11:42 AM, Larry Finger <Larry.Finger@lwfinger.net> wrote: > > Thanks for testing. > > Upon reflection, it really should check the other WIRELESS_MODE_AC_x bits. > Johannes' patch was indeed correct. I just retested with this incremental (and whitespace-damaged) patch: @@ -139,7 +139,9 @@ static void _rtl_rc_rate_set_series(struct rtl_priv *rtlpriv, (wireless_mode == WIRELESS_MODE_N_24G))) rate->flags |= IEEE80211_TX_RC_MCS; if (sta && sta->vht_cap.vht_supported && - (wireless_mode == WIRELESS_MODE_AC_5G)) + ((wireless_mode == WIRELESS_MODE_AC_5G) || + (wireless_mode == WIRELESS_MODE_AC_24G) || + (wireless_mode == WIRELESS_MODE_AC_ONLY))) rate->flags |= IEEE80211_TX_RC_VHT_MCS; } } which brings it in line with Johannes' patch, and it does indeed still work. I think marking it for stable is also the right thing to do - the driver clearly doesn't work well in a wide-channel AC environment otherwise, and I assume it's going to be more and more common.. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From bd34ac0c3caa9ff982194256b0e96772a17e719d Mon Sep 17 00:00:00 2001 From: Larry Finger <Larry.Finger@lwfinger.net> Date: Fri, 29 Jan 2016 11:29:10 -0600 Subject: [PATCH] rtlwifi: Fix warning from ieee80211_get_tx_rates() when using 5G To: kvalo@codeaurora.org Cc: linux-wireless@vger.kernel.org, devel@driverdev.osuosl.org When using a 5G-capable device with VHT rates enabled, the following warning results: WARNING: CPU: 3 PID: 2253 at net/mac80211/rate.c:625 ieee80211_get_tx_rates+0x22e/0x620 [mac80211]() Modules linked in: rtl8821ae btcoexist rtl_pci rtlwifi fuse drbg ansi_cprng ctr ccm bnep bluetooth af_packet nfs fscache vboxpci(O) vboxnetadp(O) vboxne tflt(O) vboxdrv(O) arc4 snd_hda_codec_generic x86_pkg_temp_thermal rtsx_pci_sdmmc mmc_core rtsx_pci_ms kvm_intel memstick iwlmvm kvm mac80211 snd_hda_intel snd_hda_cod ec snd_hwdep snd_hda_core irqbypass snd_pcm iwlwifi crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 snd_timer lrw gf128mul glue_h elper ablk_helper cryptd snd cfg80211 pcspkr serio_raw e1000e rtsx_pci lpc_ich ptp xhci_pci mfd_core pps_core xhci_hcd soundcore toshiba_acpi thermal sparse_keymap wmi toshiba_bluetooth rfkill acpi_cpufreq battery ac processor dm_mod i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm sr_mod cdrom video button sg autofs4 [last unloaded: rtlwifi] CPU: 3 PID: 2253 Comm: Timer Tainted: G W O 4.5.0-rc1-wl+ #79 Hardware name: TOSHIBA TECRA A50-A/TECRA A50-A, BIOS Version 4.20 04/17/2014 ffffffffa05c4be6 ffff8802262036d8 ffffffff813d7912 0000000000000000 ffff880226203710 ffffffff8106bcb6 ffff8800c6831300 ffff8800c6831330 0000000000000000 ffff8800c683133c ffff880065923638 ffff880226203720 Call Trace: <IRQ> [<ffffffff813d7912>] dump_stack+0x4b/0x79 [<ffffffff8106bcb6>] warn_slowpath_common+0x86/0xc0 [<ffffffff8106bdaa>] warn_slowpath_null+0x1a/0x20 [<ffffffffa05511ee>] ieee80211_get_tx_rates+0x22e/0x620 [mac80211] [<ffffffffa0782232>] ? rtl_is_special_data+0x32/0x240 [rtlwifi] [<ffffffffa055209e>] ? rate_control_get_rate+0xce/0x150 [mac80211] [<ffffffff810bfc7d>] ? trace_hardirqs_on+0xd/0x10 [<ffffffff81071cc5>] ? __local_bh_enable_ip+0x65/0xd0 --- traceback terminated here --- The problem is that IEEE80211_TX_RC_VHT_MCS is not set in the rate flags. Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Cc: Stable <stable@vger.kernel.org> --- drivers/net/wireless/realtek/rtlwifi/rc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/wireless/realtek/rtlwifi/rc.c b/drivers/net/wireless/realtek/rtlwifi/rc.c index 74c14ce..e7eae63 100644 --- a/drivers/net/wireless/realtek/rtlwifi/rc.c +++ b/drivers/net/wireless/realtek/rtlwifi/rc.c @@ -138,6 +138,9 @@ static void _rtl_rc_rate_set_series(struct rtl_priv *rtlpriv, ((wireless_mode == WIRELESS_MODE_N_5G) || (wireless_mode == WIRELESS_MODE_N_24G))) rate->flags |= IEEE80211_TX_RC_MCS; + if (sta && sta->vht_cap.vht_supported && + (wireless_mode == WIRELESS_MODE_AC_5G)) + rate->flags |= IEEE80211_TX_RC_VHT_MCS; } } -- 2.1.4