[PATCH] wifi: ath10k: consistently use kstrtoX_from_user() functions
Use 'kstrtoul_from_user()', 'kstrtobool_from_user()' and 'kstrtoint_from_user()' where appropriate and thus avoid some code duplication. Signed-off-by: Dmitry Antipov --- Hopefully this doesn't violate "if it isn't broke, don't fix it" rule (the same thing was recently accepted for ath9k). --- drivers/net/wireless/ath/ath10k/debug.c| 47 +++--- drivers/net/wireless/ath/ath10k/spectral.c | 26 2 files changed, 22 insertions(+), 51 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c index f9518e1c9903..ea6e0d50e933 100644 --- a/drivers/net/wireless/ath/ath10k/debug.c +++ b/drivers/net/wireless/ath/ath10k/debug.c @@ -1964,20 +1964,13 @@ static ssize_t ath10k_write_btcoex(struct file *file, size_t count, loff_t *ppos) { struct ath10k *ar = file->private_data; - char buf[32]; - size_t buf_size; - int ret; + ssize_t ret; bool val; u32 pdev_param; - buf_size = min(count, (sizeof(buf) - 1)); - if (copy_from_user(buf, ubuf, buf_size)) - return -EFAULT; - - buf[buf_size] = '\0'; - - if (kstrtobool(buf, &val) != 0) - return -EINVAL; + ret = kstrtobool_from_user(ubuf, count, &val); + if (ret) + return ret; if (!ar->coex_support) return -EOPNOTSUPP; @@ -2000,7 +1993,7 @@ static ssize_t ath10k_write_btcoex(struct file *file, ar->running_fw->fw_file.fw_features)) { ret = ath10k_wmi_pdev_set_param(ar, pdev_param, val); if (ret) { - ath10k_warn(ar, "failed to enable btcoex: %d\n", ret); + ath10k_warn(ar, "failed to enable btcoex: %ld\n", ret); ret = count; goto exit; } @@ -2103,19 +2096,12 @@ static ssize_t ath10k_write_peer_stats(struct file *file, size_t count, loff_t *ppos) { struct ath10k *ar = file->private_data; - char buf[32]; - size_t buf_size; - int ret; + ssize_t ret; bool val; - buf_size = min(count, (sizeof(buf) - 1)); - if (copy_from_user(buf, ubuf, buf_size)) - return -EFAULT; - - buf[buf_size] = '\0'; - - if (kstrtobool(buf, &val) != 0) - return -EINVAL; + ret = kstrtobool_from_user(ubuf, count, &val); + if (ret) + return ret; mutex_lock(&ar->conf_mutex); @@ -2239,21 +2225,16 @@ static ssize_t ath10k_sta_tid_stats_mask_write(struct file *file, size_t count, loff_t *ppos) { struct ath10k *ar = file->private_data; - char buf[32]; - ssize_t len; + ssize_t ret; u32 mask; - len = min(count, sizeof(buf) - 1); - if (copy_from_user(buf, user_buf, len)) - return -EFAULT; - - buf[len] = '\0'; - if (kstrtoint(buf, 0, &mask)) - return -EINVAL; + ret = kstrtoint_from_user(user_buf, count, 0, &mask); + if (ret) + return ret; ar->sta_tid_stats_mask = mask; - return len; + return count; } static const struct file_operations fops_sta_tid_stats_mask = { diff --git a/drivers/net/wireless/ath/ath10k/spectral.c b/drivers/net/wireless/ath/ath10k/spectral.c index 68254a967ccb..2240994390ed 100644 --- a/drivers/net/wireless/ath/ath10k/spectral.c +++ b/drivers/net/wireless/ath/ath10k/spectral.c @@ -384,16 +384,11 @@ static ssize_t write_file_spectral_count(struct file *file, { struct ath10k *ar = file->private_data; unsigned long val; - char buf[32]; - ssize_t len; - - len = min(count, sizeof(buf) - 1); - if (copy_from_user(buf, user_buf, len)) - return -EFAULT; + ssize_t ret; - buf[len] = '\0'; - if (kstrtoul(buf, 0, &val)) - return -EINVAL; + ret = kstrtoul_from_user(user_buf, count, 0, &val); + if (ret) + return ret; if (val > 255) return -EINVAL; @@ -440,16 +435,11 @@ static ssize_t write_file_spectral_bins(struct file *file, { struct ath10k *ar = file->private_data; unsigned long val; - char buf[32]; - ssize_t len; - - len = min(count, sizeof(buf) - 1); - if (copy_from_user(buf, user_buf, len)) - return -EFAULT; + ssize_t ret; - buf[len] = '\0'; - if (kstrtoul(buf, 0, &val)) - return -EINVAL; + ret = kstrtoul_from_user(user_buf, count, 0, &val); + if (ret) + return ret; if (val < 64 || val > SPECTRAL_ATH10K_MAX_NUM_BINS) return -EINVAL; -- 2.41.0 ___ ath10k mailing list ath10k@lists.infradead.org http://lists.
Re: [PATCH 1/6] [v3] wifi: ath10k: cleanup CE ring initialization
Dmitry Antipov writes: > Commit 25d0dbcbd5c7 ("ath10k: split ce initialization and allocation") > changes 'ath10k_ce_init_src_ring()' and 'ath10k_ce_init_dest_ring()' > so these functions can't return -ENOMEM but always returns 0. This way > both of them may be converted to 'void', and 'ath10k_ce_init_pipe()' > may be simplified accordingly. > > Found by Linux Verification Center (linuxtesting.org) with SVACE. > > Signed-off-by: Dmitry Antipov > --- > v3: split to smaller units per Jeff's suggestion > v2: change 'ath10k_ce_alloc_rri()' to return -ENOMEM in case > of 'dma_alloc_coherent()' failure and fix error handling in > 'ath10k_snoc_hif_power_up()' [...] > -static int ath10k_ce_init_src_ring(struct ath10k *ar, > -unsigned int ce_id, > -const struct ce_attr *attr) > +static void ath10k_ce_init_src_ring(struct ath10k *ar, > + unsigned int ce_id, > + const struct ce_attr *attr) I have on purpose avoided to use void functions in ath10k/ath11k/ath12k. The problem is that if some of the functions return void and some of the functions return int it's much harder to review the code. If most/all of the functions return the same error value type as int it makes a lot easier to read the code. Is there a benefit from function returning void? Why do this in the first place? -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
Re: [PATCH] wifi: ath10k: fix clang-specific fortify warning
Dmitry Antipov wrote: > When compiling with clang 16.0.6 and CONFIG_FORTIFY_SOURCE=y, I've > noticed the following (somewhat confusing due to absence of an actual > source code location): > > In file included from drivers/net/wireless/ath/ath10k/debug.c:8: > In file included from ./include/linux/module.h:13: > In file included from ./include/linux/stat.h:19: > In file included from ./include/linux/time.h:60: > In file included from ./include/linux/time32.h:13: > In file included from ./include/linux/timex.h:67: > In file included from ./arch/x86/include/asm/timex.h:5: > In file included from ./arch/x86/include/asm/processor.h:23: > In file included from ./arch/x86/include/asm/msr.h:11: > In file included from ./arch/x86/include/asm/cpumask.h:5: > In file included from ./include/linux/cpumask.h:12: > In file included from ./include/linux/bitmap.h:11: > In file included from ./include/linux/string.h:254: > ./include/linux/fortify-string.h:592:4: warning: call to > '__read_overflow2_field' > declared with 'warning' attribute: detected read beyond size of field (2nd > parameter); maybe use struct_group()? [-Wattribute-warning] > __read_overflow2_field(q_size_field, size); > > The compiler actually complains on 'ath10k_debug_get_et_strings()' where > fortification logic inteprets call to 'memcpy()' as an attempt to copy > the whole 'ath10k_gstrings_stats' array from it's first member and so > issues an overread warning. This warning may be silenced by passing > an address of the whole array and not the first member to 'memcpy()'. > > Signed-off-by: Dmitry Antipov > Acked-by: Jeff Johnson > Signed-off-by: Kalle Valo Patch applied to ath-next branch of ath.git, thanks. cb4c132ebfea wifi: ath10k: fix clang-specific fortify warning -- https://patchwork.kernel.org/project/linux-wireless/patch/20230829093652.234537-1-dmanti...@yandex.ru/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
Re: [PATCH] wifi: ath10k: consistently use kstrtoX_from_user() functions
Hi Dmitry, kernel test robot noticed the following build warnings: [auto build test WARNING on kvalo-ath/ath-next] [also build test WARNING on wireless-next/main wireless/main linus/master v6.6-rc2 next-20230920] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Dmitry-Antipov/wifi-ath10k-consistently-use-kstrtoX_from_user-functions/20230920-195625 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next patch link: https://lore.kernel.org/r/20230920115249.38296-1-dmantipov%40yandex.ru patch subject: [PATCH] wifi: ath10k: consistently use kstrtoX_from_user() functions config: parisc-allyesconfig (https://download.01.org/0day-ci/archive/20230920/202309202242.glxozks6-...@intel.com/config) compiler: hppa-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230920/202309202242.glxozks6-...@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-kbuild-all/202309202242.glxozks6-...@intel.com/ All warnings (new ones prefixed by >>): drivers/net/wireless/ath/ath10k/debug.c: In function 'ath10k_write_btcoex': >> drivers/net/wireless/ath/ath10k/debug.c:1996:69: warning: format '%ld' >> expects argument of type 'long int', but argument 3 has type 'ssize_t' {aka >> 'int'} [-Wformat=] 1996 | ath10k_warn(ar, "failed to enable btcoex: %ld\n", ret); | ~~^ ~~~ | | | | | ssize_t {aka int} | long int | %d vim +1996 drivers/net/wireless/ath/ath10k/debug.c 1961 1962 static ssize_t ath10k_write_btcoex(struct file *file, 1963 const char __user *ubuf, 1964 size_t count, loff_t *ppos) 1965 { 1966 struct ath10k *ar = file->private_data; 1967 ssize_t ret; 1968 bool val; 1969 u32 pdev_param; 1970 1971 ret = kstrtobool_from_user(ubuf, count, &val); 1972 if (ret) 1973 return ret; 1974 1975 if (!ar->coex_support) 1976 return -EOPNOTSUPP; 1977 1978 mutex_lock(&ar->conf_mutex); 1979 1980 if (ar->state != ATH10K_STATE_ON && 1981 ar->state != ATH10K_STATE_RESTARTED) { 1982 ret = -ENETDOWN; 1983 goto exit; 1984 } 1985 1986 if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags) ^ val)) { 1987 ret = count; 1988 goto exit; 1989 } 1990 1991 pdev_param = ar->wmi.pdev_param->enable_btcoex; 1992 if (test_bit(ATH10K_FW_FEATURE_BTCOEX_PARAM, 1993 ar->running_fw->fw_file.fw_features)) { 1994 ret = ath10k_wmi_pdev_set_param(ar, pdev_param, val); 1995 if (ret) { > 1996 ath10k_warn(ar, "failed to enable btcoex: > %ld\n", ret); 1997 ret = count; 1998 goto exit; 1999 } 2000 } else { 2001 ath10k_info(ar, "restarting firmware due to btcoex change"); 2002 ath10k_core_start_recovery(ar); 2003 } 2004 2005 if (val) 2006 set_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags); 2007 else 2008 clear_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags); 2009 2010 ret = count; 2011 2012 exit: 2013 mutex_unlock(&ar->conf_mutex); 2014 2015 return ret; 2016 } 2017 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
[PATCH] [v2] wifi: ath10k: consistently use kstrtoX_from_user() functions
Use 'kstrtoul_from_user()', 'kstrtobool_from_user()' and 'kstrtoint_from_user()' where appropriate and thus avoid some code duplication. Signed-off-by: Dmitry Antipov --- v2: fix ath10k_warn() format specifier (kernel test robot) --- drivers/net/wireless/ath/ath10k/debug.c| 47 +++--- drivers/net/wireless/ath/ath10k/spectral.c | 26 2 files changed, 22 insertions(+), 51 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c index f9518e1c9903..5a8c74db974d 100644 --- a/drivers/net/wireless/ath/ath10k/debug.c +++ b/drivers/net/wireless/ath/ath10k/debug.c @@ -1964,20 +1964,13 @@ static ssize_t ath10k_write_btcoex(struct file *file, size_t count, loff_t *ppos) { struct ath10k *ar = file->private_data; - char buf[32]; - size_t buf_size; - int ret; + ssize_t ret; bool val; u32 pdev_param; - buf_size = min(count, (sizeof(buf) - 1)); - if (copy_from_user(buf, ubuf, buf_size)) - return -EFAULT; - - buf[buf_size] = '\0'; - - if (kstrtobool(buf, &val) != 0) - return -EINVAL; + ret = kstrtobool_from_user(ubuf, count, &val); + if (ret) + return ret; if (!ar->coex_support) return -EOPNOTSUPP; @@ -2000,7 +1993,7 @@ static ssize_t ath10k_write_btcoex(struct file *file, ar->running_fw->fw_file.fw_features)) { ret = ath10k_wmi_pdev_set_param(ar, pdev_param, val); if (ret) { - ath10k_warn(ar, "failed to enable btcoex: %d\n", ret); + ath10k_warn(ar, "failed to enable btcoex: %zd\n", ret); ret = count; goto exit; } @@ -2103,19 +2096,12 @@ static ssize_t ath10k_write_peer_stats(struct file *file, size_t count, loff_t *ppos) { struct ath10k *ar = file->private_data; - char buf[32]; - size_t buf_size; - int ret; + ssize_t ret; bool val; - buf_size = min(count, (sizeof(buf) - 1)); - if (copy_from_user(buf, ubuf, buf_size)) - return -EFAULT; - - buf[buf_size] = '\0'; - - if (kstrtobool(buf, &val) != 0) - return -EINVAL; + ret = kstrtobool_from_user(ubuf, count, &val); + if (ret) + return ret; mutex_lock(&ar->conf_mutex); @@ -2239,21 +2225,16 @@ static ssize_t ath10k_sta_tid_stats_mask_write(struct file *file, size_t count, loff_t *ppos) { struct ath10k *ar = file->private_data; - char buf[32]; - ssize_t len; + ssize_t ret; u32 mask; - len = min(count, sizeof(buf) - 1); - if (copy_from_user(buf, user_buf, len)) - return -EFAULT; - - buf[len] = '\0'; - if (kstrtoint(buf, 0, &mask)) - return -EINVAL; + ret = kstrtoint_from_user(user_buf, count, 0, &mask); + if (ret) + return ret; ar->sta_tid_stats_mask = mask; - return len; + return count; } static const struct file_operations fops_sta_tid_stats_mask = { diff --git a/drivers/net/wireless/ath/ath10k/spectral.c b/drivers/net/wireless/ath/ath10k/spectral.c index 68254a967ccb..2240994390ed 100644 --- a/drivers/net/wireless/ath/ath10k/spectral.c +++ b/drivers/net/wireless/ath/ath10k/spectral.c @@ -384,16 +384,11 @@ static ssize_t write_file_spectral_count(struct file *file, { struct ath10k *ar = file->private_data; unsigned long val; - char buf[32]; - ssize_t len; - - len = min(count, sizeof(buf) - 1); - if (copy_from_user(buf, user_buf, len)) - return -EFAULT; + ssize_t ret; - buf[len] = '\0'; - if (kstrtoul(buf, 0, &val)) - return -EINVAL; + ret = kstrtoul_from_user(user_buf, count, 0, &val); + if (ret) + return ret; if (val > 255) return -EINVAL; @@ -440,16 +435,11 @@ static ssize_t write_file_spectral_bins(struct file *file, { struct ath10k *ar = file->private_data; unsigned long val; - char buf[32]; - ssize_t len; - - len = min(count, sizeof(buf) - 1); - if (copy_from_user(buf, user_buf, len)) - return -EFAULT; + ssize_t ret; - buf[len] = '\0'; - if (kstrtoul(buf, 0, &val)) - return -EINVAL; + ret = kstrtoul_from_user(user_buf, count, 0, &val); + if (ret) + return ret; if (val < 64 || val > SPECTRAL_ATH10K_MAX_NUM_BINS) return -EINVAL; -- 2.41.0 ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
Re: [PATCH 5/5] ath10k: reduce invalid ht params rate message noise
On 2/26/21 10:01 AM, Shuah Khan wrote: On 2/11/21 4:24 AM, Kalle Valo wrote: Shuah Khan writes: On 2/10/21 1:28 AM, Kalle Valo wrote: Wen Gong writes: On 2021-02-10 08:42, Shuah Khan wrote: ath10k_mac_get_rate_flags_ht() floods dmesg with the following messages, when it fails to find a match for mcs=7 and rate=1440. supported_ht_mcs_rate_nss2: {7, {1300, 2700, 1444, 3000} } ath10k_pci :02:00.0: invalid ht params rate 1440 100kbps nss 2 mcs 7 dev_warn_ratelimited() isn't helping the noise. Use dev_warn_once() instead. Signed-off-by: Shuah Khan --- drivers/net/wireless/ath/ath10k/mac.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 3545ce7dce0a..276321f0cfdd 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -8970,8 +8970,9 @@ static void ath10k_mac_get_rate_flags_ht(struct ath10k *ar, u32 rate, u8 nss, u8 *bw |= RATE_INFO_BW_40; *flags |= RATE_INFO_FLAGS_SHORT_GI; } else { - ath10k_warn(ar, "invalid ht params rate %d 100kbps nss %d mcs %d", - rate, nss, mcs); + dev_warn_once(ar->dev, + "invalid ht params rate %d 100kbps nss %d mcs %d", + rate, nss, mcs); } } The {7, {1300, 2700, 1444, 3000} } is a correct value. The 1440 is report from firmware, its a wrong value, it has fixed in firmware. In what version? Here is the info: ath10k_pci :02:00.0: qca6174 hw3.2 target 0x0503 chip_id 0x00340aff sub 17aa:0827 ath10k_pci :02:00.0: firmware ver WLAN.RM.4.4.1-00140-QCARMSWPZ-1 api 6 features wowlan,ignore-otp,mfp crc32 29eb8ca1 ath10k_pci :02:00.0: board_file api 2 bmi_id N/A crc32 4ac0889b ath10k_pci :02:00.0: htt-ver 3.60 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1 If change it to dev_warn_once, then it will have no chance to find the other wrong values which report by firmware, and it indicate a wrong value to mac80211/cfg80211 and lead "iw wlan0 station dump" get a wrong bitrate. Agreed. I agree, we should keep this warning. If the firmware still keeps sending invalid rates we should add a specific check to ignore the known invalid values, but not all of them. Would it be helpful to adjust the default rate limits and set the to a higher value instead. It might be difficult to account all possible invalid values? Something like, ath10k_warn_ratelimited() to adjust the DEFAULT_RATELIMIT_INTERVAL and DEFAULT_RATELIMIT_BURST using DEFINE_RATELIMIT_STATE Let me know if you like this idea. I can send a patch in to do this. I will hang on to this firmware version for a little but longer, so we have a test case. :) I would rather first try to fix the root cause, which is the firmware sending invalid rates. Wen, you mentioned there's a fix in firmware. Do you know which firmware version (and branch) has the fix? Picking this back up. Wen, which firmware version has this fix? I can test this on my system and get rid of the noisy messages. :) thanks, -- Shuah I know its been years, but reading through this Wen mentioned there is a fix in the firmware? I haven't tried all of the firmware binaries in Kalle's tree but the most recent definitely still spam the logs with this message. Is there a specific version I can use to get rid of these? One thing to note is the older "firmware-4.bin" did not have this problem, but was met with worse problems like driver/firmware crashes. Thanks, James ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
Re: [PATCH v2 wireless-next 6/9] wifi: ath10k: Remove unnecessary (void*) conversions
On 9/18/2023 9:50 PM, Wu Yunchuan wrote: No need cast (void*) to (struct htt_rx_ring_setup_ring32 *), (struct htt_rx_ring_setup_ring64 *). Change the prototype to remove the local variable. Signed-off-by: Wu Yunchuan Suggested-by: Jeff Johnson Ideally your Signed-off-by: should be the last tag you add, but in this context I don't think it matters. Acked-by: Jeff Johnson ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
Re: [PATCH] [v2] wifi: ath10k: consistently use kstrtoX_from_user() functions
On 9/20/2023 8:39 AM, Dmitry Antipov wrote: Use 'kstrtoul_from_user()', 'kstrtobool_from_user()' and 'kstrtoint_from_user()' where appropriate and thus avoid some code duplication. Signed-off-by: Dmitry Antipov ... + ssize_t ret; curious why you changed this, especially given that you were bitten by the format change required. I would have left this as int and just let it promote to size_t or ssize_t as needed. That said: Acked-by: Jeff Johnson P.S.: > Hopefully this doesn't violate "if it isn't broke, don't fix > it" rule (the same thing was recently accepted for ath9k). Patches that are very self-contained are more likely to be reviewed and accepted. But the maintainers don't have infinite bandwidth... /jeff ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
Re: [PATCH 5/5] ath10k: reduce invalid ht params rate message noise
(just a resend with Wen's current e-mail address, no further comments) On 9/20/2023 11:27 AM, James Prestwood wrote: On 2/26/21 10:01 AM, Shuah Khan wrote: On 2/11/21 4:24 AM, Kalle Valo wrote: Shuah Khan writes: On 2/10/21 1:28 AM, Kalle Valo wrote: Wen Gong writes: On 2021-02-10 08:42, Shuah Khan wrote: ath10k_mac_get_rate_flags_ht() floods dmesg with the following messages, when it fails to find a match for mcs=7 and rate=1440. supported_ht_mcs_rate_nss2: {7, {1300, 2700, 1444, 3000} } ath10k_pci :02:00.0: invalid ht params rate 1440 100kbps nss 2 mcs 7 dev_warn_ratelimited() isn't helping the noise. Use dev_warn_once() instead. Signed-off-by: Shuah Khan --- drivers/net/wireless/ath/ath10k/mac.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 3545ce7dce0a..276321f0cfdd 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -8970,8 +8970,9 @@ static void ath10k_mac_get_rate_flags_ht(struct ath10k *ar, u32 rate, u8 nss, u8 *bw |= RATE_INFO_BW_40; *flags |= RATE_INFO_FLAGS_SHORT_GI; } else { - ath10k_warn(ar, "invalid ht params rate %d 100kbps nss %d mcs %d", - rate, nss, mcs); + dev_warn_once(ar->dev, + "invalid ht params rate %d 100kbps nss %d mcs %d", + rate, nss, mcs); } } The {7, {1300, 2700, 1444, 3000} } is a correct value. The 1440 is report from firmware, its a wrong value, it has fixed in firmware. In what version? Here is the info: ath10k_pci :02:00.0: qca6174 hw3.2 target 0x0503 chip_id 0x00340aff sub 17aa:0827 ath10k_pci :02:00.0: firmware ver WLAN.RM.4.4.1-00140-QCARMSWPZ-1 api 6 features wowlan,ignore-otp,mfp crc32 29eb8ca1 ath10k_pci :02:00.0: board_file api 2 bmi_id N/A crc32 4ac0889b ath10k_pci :02:00.0: htt-ver 3.60 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1 If change it to dev_warn_once, then it will have no chance to find the other wrong values which report by firmware, and it indicate a wrong value to mac80211/cfg80211 and lead "iw wlan0 station dump" get a wrong bitrate. Agreed. I agree, we should keep this warning. If the firmware still keeps sending invalid rates we should add a specific check to ignore the known invalid values, but not all of them. Would it be helpful to adjust the default rate limits and set the to a higher value instead. It might be difficult to account all possible invalid values? Something like, ath10k_warn_ratelimited() to adjust the DEFAULT_RATELIMIT_INTERVAL and DEFAULT_RATELIMIT_BURST using DEFINE_RATELIMIT_STATE Let me know if you like this idea. I can send a patch in to do this. I will hang on to this firmware version for a little but longer, so we have a test case. :) I would rather first try to fix the root cause, which is the firmware sending invalid rates. Wen, you mentioned there's a fix in firmware. Do you know which firmware version (and branch) has the fix? Picking this back up. Wen, which firmware version has this fix? I can test this on my system and get rid of the noisy messages. :) thanks, -- Shuah I know its been years, but reading through this Wen mentioned there is a fix in the firmware? I haven't tried all of the firmware binaries in Kalle's tree but the most recent definitely still spam the logs with this message. Is there a specific version I can use to get rid of these? One thing to note is the older "firmware-4.bin" did not have this problem, but was met with worse problems like driver/firmware crashes. ___ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
[kvalo-ath:ath-next] BUILD SUCCESS cb4c132ebfeac5962f7258ffc831caa0c4dada1a
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next branch HEAD: cb4c132ebfeac5962f7258ffc831caa0c4dada1a wifi: ath10k: fix clang-specific fortify warning elapsed time: 722m configs tested: 135 configs skipped: 2 The following configs have been built successfully. More configs may be tested in the coming days. tested configs: alpha allnoconfig gcc alphaallyesconfig gcc alpha defconfig gcc arc allmodconfig gcc arc allnoconfig gcc arc allyesconfig gcc arc defconfig gcc arc randconfig-001-20230921 gcc arm allmodconfig gcc arm allnoconfig gcc arm allyesconfig gcc arm defconfig gcc arm randconfig-001-20230921 gcc arm64allmodconfig gcc arm64 allnoconfig gcc arm64allyesconfig gcc arm64 defconfig gcc csky allmodconfig gcc csky allnoconfig gcc csky allyesconfig gcc cskydefconfig gcc i386 allmodconfig gcc i386 allnoconfig gcc i386 allyesconfig gcc i386 buildonly-randconfig-001-20230921 gcc i386 buildonly-randconfig-002-20230921 gcc i386 buildonly-randconfig-003-20230921 gcc i386 buildonly-randconfig-004-20230921 gcc i386 buildonly-randconfig-005-20230921 gcc i386 buildonly-randconfig-006-20230921 gcc i386 debian-10.3 gcc i386defconfig gcc i386 randconfig-001-20230921 gcc i386 randconfig-002-20230921 gcc i386 randconfig-003-20230921 gcc i386 randconfig-004-20230921 gcc i386 randconfig-005-20230921 gcc i386 randconfig-006-20230921 gcc i386 randconfig-011-20230921 gcc i386 randconfig-012-20230921 gcc i386 randconfig-013-20230921 gcc i386 randconfig-014-20230921 gcc i386 randconfig-015-20230921 gcc i386 randconfig-016-20230921 gcc loongarchallmodconfig gcc loongarch allnoconfig gcc loongarchallyesconfig gcc loongarch defconfig gcc loongarch randconfig-001-20230921 gcc m68k allmodconfig gcc m68k allnoconfig gcc m68k allyesconfig gcc m68kdefconfig gcc microblaze allmodconfig gcc microblazeallnoconfig gcc microblaze allyesconfig gcc microblaze defconfig gcc mips allmodconfig gcc mips allnoconfig gcc mips allyesconfig gcc nios2allmodconfig gcc nios2 allnoconfig gcc nios2allyesconfig gcc nios2 defconfig gcc openrisc allmodconfig gcc openrisc allnoconfig gcc openrisc allyesconfig gcc openriscdefconfig gcc parisc allmodconfig gcc pariscallnoconfig gcc parisc allyesconfig gcc parisc defconfig gcc parisc64defconfig gcc powerpc allmodconfig gcc powerpc allnoconfig gcc powerpc allyesconfig gcc riscvallmodconfig gcc riscv allnoconfig gcc riscvallyesconfig gcc riscv defconfig gcc riscv randconfig-001-20230921 gcc riscv rv32_defconfig gcc s390 allmodconfig gcc s390 allnoconfig gcc s390 allyesconfig gcc s390
[kvalo-ath:master] BUILD SUCCESS 928e3d18bf568970b23d53c9c7ae8d56952352ff
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git master branch HEAD: 928e3d18bf568970b23d53c9c7ae8d56952352ff Revert "PCI: Release resource invalidated by coalescing" elapsed time: 722m configs tested: 135 configs skipped: 2 The following configs have been built successfully. More configs may be tested in the coming days. tested configs: alpha allnoconfig gcc alphaallyesconfig gcc alpha defconfig gcc arc allmodconfig gcc arc allnoconfig gcc arc allyesconfig gcc arc defconfig gcc arc randconfig-001-20230921 gcc arm allmodconfig gcc arm allnoconfig gcc arm allyesconfig gcc arm defconfig gcc arm64allmodconfig gcc arm64 allnoconfig gcc arm64allyesconfig gcc arm64 defconfig gcc csky allmodconfig gcc csky allnoconfig gcc csky allyesconfig gcc cskydefconfig gcc i386 allmodconfig gcc i386 allnoconfig gcc i386 allyesconfig gcc i386 buildonly-randconfig-001-20230921 gcc i386 buildonly-randconfig-002-20230921 gcc i386 buildonly-randconfig-003-20230921 gcc i386 buildonly-randconfig-004-20230921 gcc i386 buildonly-randconfig-005-20230921 gcc i386 buildonly-randconfig-006-20230921 gcc i386 debian-10.3 gcc i386defconfig gcc i386 randconfig-001-20230921 gcc i386 randconfig-002-20230921 gcc i386 randconfig-003-20230921 gcc i386 randconfig-004-20230921 gcc i386 randconfig-005-20230921 gcc i386 randconfig-006-20230921 gcc i386 randconfig-011-20230921 gcc i386 randconfig-012-20230921 gcc i386 randconfig-013-20230921 gcc i386 randconfig-014-20230921 gcc i386 randconfig-015-20230921 gcc i386 randconfig-016-20230921 gcc loongarchallmodconfig gcc loongarch allnoconfig gcc loongarchallyesconfig gcc loongarch defconfig gcc loongarch randconfig-001-20230921 gcc m68k allmodconfig gcc m68k allnoconfig gcc m68k allyesconfig gcc m68kdefconfig gcc microblaze allmodconfig gcc microblazeallnoconfig gcc microblaze allyesconfig gcc microblaze defconfig gcc mips allmodconfig gcc mips allnoconfig gcc mips allyesconfig gcc nios2allmodconfig gcc nios2 allnoconfig gcc nios2allyesconfig gcc nios2 defconfig gcc openrisc allmodconfig gcc openrisc allnoconfig gcc openrisc allyesconfig gcc openriscdefconfig gcc parisc allmodconfig gcc pariscallnoconfig gcc parisc allyesconfig gcc parisc defconfig gcc parisc64defconfig gcc powerpc allmodconfig gcc powerpc allnoconfig gcc powerpc allyesconfig gcc riscvallmodconfig gcc riscv allnoconfig gcc riscvallyesconfig gcc riscv defconfig gcc riscv randconfig-001-20230921 gcc riscv rv32_defconfig gcc s390 allmodconfig gcc s390 allnoconfig gcc s390 allyesconfig gcc s390defconfig gcc s390 randconf
[kvalo-ath:ath-qca] BUILD SUCCESS 7d0675450235eb3d930483ca565d56aaad751edd
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-qca branch HEAD: 7d0675450235eb3d930483ca565d56aaad751edd Merge branch 'ath-next' into ath-qca elapsed time: 722m configs tested: 136 configs skipped: 2 The following configs have been built successfully. More configs may be tested in the coming days. tested configs: alpha allnoconfig gcc alphaallyesconfig gcc alpha defconfig gcc arc allmodconfig gcc arc allnoconfig gcc arc allyesconfig gcc arc defconfig gcc arc randconfig-001-20230921 gcc arm allmodconfig gcc arm allnoconfig gcc arm allyesconfig gcc arm defconfig gcc arm randconfig-001-20230921 gcc arm64allmodconfig gcc arm64 allnoconfig gcc arm64allyesconfig gcc arm64 defconfig gcc csky allmodconfig gcc csky allnoconfig gcc csky allyesconfig gcc cskydefconfig gcc i386 allmodconfig gcc i386 allnoconfig gcc i386 allyesconfig gcc i386 buildonly-randconfig-001-20230921 gcc i386 buildonly-randconfig-002-20230921 gcc i386 buildonly-randconfig-003-20230921 gcc i386 buildonly-randconfig-004-20230921 gcc i386 buildonly-randconfig-005-20230921 gcc i386 buildonly-randconfig-006-20230921 gcc i386 debian-10.3 gcc i386defconfig gcc i386 randconfig-001-20230921 gcc i386 randconfig-002-20230921 gcc i386 randconfig-003-20230921 gcc i386 randconfig-004-20230921 gcc i386 randconfig-005-20230921 gcc i386 randconfig-006-20230921 gcc i386 randconfig-011-20230921 gcc i386 randconfig-012-20230921 gcc i386 randconfig-013-20230921 gcc i386 randconfig-014-20230921 gcc i386 randconfig-015-20230921 gcc i386 randconfig-016-20230921 gcc loongarchallmodconfig gcc loongarch allnoconfig gcc loongarchallyesconfig gcc loongarch defconfig gcc loongarch randconfig-001-20230921 gcc m68k allmodconfig gcc m68k allnoconfig gcc m68k allyesconfig gcc m68kdefconfig gcc microblaze allmodconfig gcc microblazeallnoconfig gcc microblaze allyesconfig gcc microblaze defconfig gcc mips allmodconfig gcc mips allnoconfig gcc mips allyesconfig gcc nios2allmodconfig gcc nios2 allnoconfig gcc nios2allyesconfig gcc nios2 defconfig gcc openrisc allmodconfig gcc openrisc allnoconfig gcc openrisc allyesconfig gcc openriscdefconfig gcc parisc allmodconfig gcc pariscallnoconfig gcc parisc allyesconfig gcc parisc defconfig gcc parisc64defconfig gcc powerpc allmodconfig gcc powerpc allnoconfig gcc powerpc allyesconfig gcc riscvallmodconfig gcc riscv allnoconfig gcc riscvallyesconfig gcc riscv defconfig gcc riscv randconfig-001-20230921 gcc riscv rv32_defconfig gcc s390 allmodconfig gcc s390 allnoconfig gcc s390 allyesconfig gcc s390defconfig g
[kvalo-ath:pending] BUILD SUCCESS ddd71f306b9f6fd663cf260be6534651d13bc504
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git pending branch HEAD: ddd71f306b9f6fd663cf260be6534651d13bc504 wifi: ath11k: drop NULL pointer check in ath11k_update_per_peer_tx_stats() elapsed time: 741m configs tested: 130 configs skipped: 2 The following configs have been built successfully. More configs may be tested in the coming days. tested configs: alpha allnoconfig gcc alphaallyesconfig gcc alpha defconfig gcc arc allmodconfig gcc arc allnoconfig gcc arc allyesconfig gcc arc defconfig gcc arc randconfig-001-20230921 gcc arm allmodconfig gcc arm allnoconfig gcc arm allyesconfig gcc arm defconfig gcc arm randconfig-001-20230921 gcc arm64allmodconfig gcc arm64 allnoconfig gcc arm64allyesconfig gcc arm64 defconfig gcc csky allmodconfig gcc csky allnoconfig gcc csky allyesconfig gcc cskydefconfig gcc i386 allmodconfig gcc i386 allnoconfig gcc i386 allyesconfig gcc i386 buildonly-randconfig-001-20230921 gcc i386 buildonly-randconfig-002-20230921 gcc i386 buildonly-randconfig-003-20230921 gcc i386 buildonly-randconfig-004-20230921 gcc i386 buildonly-randconfig-005-20230921 gcc i386 buildonly-randconfig-006-20230921 gcc i386 debian-10.3 gcc i386defconfig gcc i386 randconfig-001-20230921 gcc i386 randconfig-002-20230921 gcc i386 randconfig-003-20230921 gcc i386 randconfig-004-20230921 gcc i386 randconfig-005-20230921 gcc i386 randconfig-006-20230921 gcc i386 randconfig-011-20230921 gcc i386 randconfig-012-20230921 gcc i386 randconfig-013-20230921 gcc i386 randconfig-014-20230921 gcc i386 randconfig-015-20230921 gcc i386 randconfig-016-20230921 gcc loongarchallmodconfig gcc loongarch allnoconfig gcc loongarchallyesconfig gcc loongarch defconfig gcc loongarch randconfig-001-20230921 gcc m68k allmodconfig gcc m68k allnoconfig gcc m68k allyesconfig gcc m68kdefconfig gcc microblaze allmodconfig gcc microblazeallnoconfig gcc microblaze allyesconfig gcc microblaze defconfig gcc mips allmodconfig gcc mips allnoconfig gcc mips allyesconfig gcc nios2allmodconfig gcc nios2 allnoconfig gcc nios2allyesconfig gcc nios2 defconfig gcc openrisc allmodconfig gcc openrisc allnoconfig gcc openrisc allyesconfig gcc openriscdefconfig gcc parisc allmodconfig gcc pariscallnoconfig gcc parisc allyesconfig gcc parisc defconfig gcc parisc64defconfig gcc powerpc allmodconfig gcc powerpc allnoconfig gcc powerpc allyesconfig gcc riscvallmodconfig gcc riscv allnoconfig gcc riscvallyesconfig gcc riscv defconfig gcc riscv randconfig-001-20230921 gcc riscv rv32_defconfig gcc s390 allmodconfig gcc s390 allnoconfig gcc s390 allyesconfig gcc s390
[kvalo-ath:master-pending] BUILD SUCCESS 34f71f7b0f654f5d381fa89d5f56cdd03bfd4bd0
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git master-pending branch HEAD: 34f71f7b0f654f5d381fa89d5f56cdd03bfd4bd0 Merge branch 'pending' into master-pending elapsed time: 777m configs tested: 136 configs skipped: 2 The following configs have been built successfully. More configs may be tested in the coming days. tested configs: alpha allnoconfig gcc alphaallyesconfig gcc alpha defconfig gcc arc allmodconfig gcc arc allnoconfig gcc arc allyesconfig gcc arc defconfig gcc arc randconfig-001-20230921 gcc arm allmodconfig gcc arm allnoconfig gcc arm allyesconfig gcc arm defconfig gcc arm randconfig-001-20230921 gcc arm64allmodconfig gcc arm64 allnoconfig gcc arm64allyesconfig gcc arm64 defconfig gcc csky allmodconfig gcc csky allnoconfig gcc csky allyesconfig gcc cskydefconfig gcc i386 allmodconfig gcc i386 allnoconfig gcc i386 allyesconfig gcc i386 buildonly-randconfig-001-20230921 gcc i386 buildonly-randconfig-002-20230921 gcc i386 buildonly-randconfig-003-20230921 gcc i386 buildonly-randconfig-004-20230921 gcc i386 buildonly-randconfig-005-20230921 gcc i386 buildonly-randconfig-006-20230921 gcc i386 debian-10.3 gcc i386defconfig gcc i386 randconfig-001-20230921 gcc i386 randconfig-002-20230921 gcc i386 randconfig-003-20230921 gcc i386 randconfig-004-20230921 gcc i386 randconfig-005-20230921 gcc i386 randconfig-006-20230921 gcc i386 randconfig-011-20230921 gcc i386 randconfig-012-20230921 gcc i386 randconfig-013-20230921 gcc i386 randconfig-014-20230921 gcc i386 randconfig-015-20230921 gcc i386 randconfig-016-20230921 gcc loongarchallmodconfig gcc loongarch allnoconfig gcc loongarchallyesconfig gcc loongarch defconfig gcc loongarch randconfig-001-20230921 gcc m68k allmodconfig gcc m68k allnoconfig gcc m68k allyesconfig gcc m68kdefconfig gcc microblaze allmodconfig gcc microblazeallnoconfig gcc microblaze allyesconfig gcc microblaze defconfig gcc mips allmodconfig gcc mips allnoconfig gcc mips allyesconfig gcc nios2allmodconfig gcc nios2 allnoconfig gcc nios2allyesconfig gcc nios2 defconfig gcc openrisc allmodconfig gcc openrisc allnoconfig gcc openrisc allyesconfig gcc openriscdefconfig gcc parisc allmodconfig gcc pariscallnoconfig gcc parisc allyesconfig gcc parisc defconfig gcc parisc64defconfig gcc powerpc allmodconfig gcc powerpc allnoconfig gcc powerpc allyesconfig gcc riscvallmodconfig gcc riscv allnoconfig gcc riscvallyesconfig gcc riscv defconfig gcc riscv randconfig-001-20230921 gcc riscv rv32_defconfig gcc s390 allmodconfig gcc s390 allnoconfig gcc s390 allyesconfig gcc s390