This patch encloses the `CHECK_BW` macro inside a do while as
preferred by the guidelines.
This change is purely stylistic and do not affect the functionality
of the code.
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
---
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 1a210d0c22b3..b7a12c52a95d 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -1043,10 +1043,13 @@ iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC);
#define CHECK_BW(bw) \
- BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \
- RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS); \
- BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_ ## bw ## MHZ != \
- RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS)
+ do { \
+ BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \
+ RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS); \
+ BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_ ## bw ## MHZ != \
+ RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS) \
+ while (0);
+
CHECK_BW(20);
CHECK_BW(40);
CHECK_BW(80);
--
2.46.0
Hi Juan,
kernel test robot noticed the following build errors:
[auto build test ERROR on wireless-next/main]
[also build test ERROR on wireless/main linus/master v6.11-rc3 next-20240816]
[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/Juan-Jos-Arboleda/iwlwifi-mvm-Improve-code-style-in-pointer-declarations/20240818-145152
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/959e76da152811a723415545a3cf6ab1d8e17fbc.1723963126.git.soyjuanarbol%40gmail.com
patch subject: [PATCH 2/3] iwlwifi: mvm: Enclose multi-statement macro in a do while
config: um-allmodconfig (https://download.01.org/0day-ci/archive/20240819/202408190201.maHKSVvI-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 26670e7fa4f032a019d23d56c6a02926e854e8af)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240819/202408190201.maHKSVvI-lkp@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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408190201.maHKSVvI-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:7:
In file included from include/linux/etherdevice.h:20:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:8:
In file included from include/linux/cacheflush.h:5:
In file included from arch/um/include/asm/cacheflush.h:4:
In file included from arch/um/include/asm/tlbflush.h:9:
In file included from include/linux/mm.h:2228:
include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
In file included from drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:7:
In file included from include/linux/etherdevice.h:20:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from arch/um/include/asm/hardirq.h:5:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/um/include/asm/io.h:24:
include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
548 | val = __raw_readb(PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
561 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
| ^
In file included from drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:7:
In file included from include/linux/etherdevice.h:20:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from arch/um/include/asm/hardirq.h:5:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/um/include/asm/io.h:24:
include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
574 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
| ^
In file included from drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:7:
In file included from include/linux/etherdevice.h:20:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from arch/um/include/asm/hardirq.h:5:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/um/include/asm/io.h:24:
include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
585 | __raw_writeb(value, PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
595 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
605 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:693:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
693 | readsb(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:701:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
701 | readsw(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:709:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
709 | readsl(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:718:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
718 | writesb(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:727:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
727 | writesw(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:736:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
736 | writesl(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1053:2: error: expected ';' after do/while statement
1053 | CHECK_BW(20);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:2: note: expanded from macro 'CHECK_BW'
1051 | while (0);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1054:2: error: expected ';' after do/while statement
1054 | CHECK_BW(40);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:2: note: expanded from macro 'CHECK_BW'
1051 | while (0);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1055:2: error: expected ';' after do/while statement
1055 | CHECK_BW(80);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:2: note: expanded from macro 'CHECK_BW'
1051 | while (0);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1056:2: error: expected ';' after do/while statement
1056 | CHECK_BW(160);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:2: note: expanded from macro 'CHECK_BW'
1051 | while (0);
| ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1071:1: error: expected 'while' in do/while loop
1071 | static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1056:2: note: to match this 'do'
1056 | CHECK_BW(160);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1046:2: note: expanded from macro 'CHECK_BW'
1046 | do { \
| ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1902:1: error: function definition is not allowed here
1902 | {
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1921:1: error: function definition is not allowed here
1921 | {
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2040:1: error: function definition is not allowed here
2040 | {
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2372:1: error: function definition is not allowed here
2372 | {
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2505:1: error: function definition is not allowed here
2505 | {
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2519:1: error: function definition is not allowed here
2519 | {
| ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:2: error: expected '}'
2561 | }
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1055:2: note: to match this '{'
1055 | CHECK_BW(80);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1046:5: note: expanded from macro 'CHECK_BW'
1046 | do { \
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:2: error: expected 'while' in do/while loop
2561 | }
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1055:2: note: to match this 'do'
1055 | CHECK_BW(80);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1046:2: note: expanded from macro 'CHECK_BW'
1046 | do { \
| ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:2: error: expected '}'
2561 | }
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1054:2: note: to match this '{'
1054 | CHECK_BW(40);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1046:5: note: expanded from macro 'CHECK_BW'
1046 | do { \
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:2: error: expected 'while' in do/while loop
2561 | }
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1054:2: note: to match this 'do'
1054 | CHECK_BW(40);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1046:2: note: expanded from macro 'CHECK_BW'
1046 | do { \
| ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:2: error: expected '}'
2561 | }
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1053:2: note: to match this '{'
1053 | CHECK_BW(20);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1046:5: note: expanded from macro 'CHECK_BW'
1046 | do { \
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:2: error: expected 'while' in do/while loop
2561 | }
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1053:2: note: to match this 'do'
1053 | CHECK_BW(20);
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1046:2: note: expanded from macro 'CHECK_BW'
1046 | do { \
| ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:2: error: expected '}'
2561 | }
| ^
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:991:1: note: to match this '{'
991 | {
| ^
13 warnings and 18 errors generated.
vim +1053 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
dabf9844385885 Johannes Berg 2018-04-26 985
ffe9d734b8b556 Johannes Berg 2018-06-14 986 static void
bdf180c8d375ee Shaul Triebitz 2018-07-02 987 iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
ffe9d734b8b556 Johannes Berg 2018-06-14 988 struct ieee80211_radiotap_he *he,
ffe9d734b8b556 Johannes Berg 2018-06-14 989 struct ieee80211_radiotap_he_mu *he_mu,
ffe9d734b8b556 Johannes Berg 2018-06-14 990 struct ieee80211_rx_status *rx_status)
ffe9d734b8b556 Johannes Berg 2018-06-14 991 {
ffe9d734b8b556 Johannes Berg 2018-06-14 992 /*
ffe9d734b8b556 Johannes Berg 2018-06-14 993 * Unfortunately, we have to leave the mac80211 data
ffe9d734b8b556 Johannes Berg 2018-06-14 994 * incorrect for the case that we receive an HE-MU
ffe9d734b8b556 Johannes Berg 2018-06-14 995 * transmission and *don't* have the HE phy data (due
ffe9d734b8b556 Johannes Berg 2018-06-14 996 * to the bits being used for TSF). This shouldn't
ffe9d734b8b556 Johannes Berg 2018-06-14 997 * happen though as management frames where we need
ffe9d734b8b556 Johannes Berg 2018-06-14 998 * the TSF/timers are not be transmitted in HE-MU.
ffe9d734b8b556 Johannes Berg 2018-06-14 999 */
bdf180c8d375ee Shaul Triebitz 2018-07-02 1000 u8 ru = le32_get_bits(phy_data->d1, IWL_RX_PHY_DATA1_HE_RU_ALLOC_MASK);
f1490546bec933 Johannes Berg 2022-09-06 1001 u32 rate_n_flags = phy_data->rate_n_flags;
48c6ebc13c1ce1 Miri Korenblit 2021-10-17 1002 u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK_V1;
ffe9d734b8b556 Johannes Berg 2018-06-14 1003 u8 offs = 0;
ffe9d734b8b556 Johannes Berg 2018-06-14 1004
ffe9d734b8b556 Johannes Berg 2018-06-14 1005 rx_status->bw = RATE_INFO_BW_HE_RU;
ffe9d734b8b556 Johannes Berg 2018-06-14 1006
ffe9d734b8b556 Johannes Berg 2018-06-14 1007 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN);
ffe9d734b8b556 Johannes Berg 2018-06-14 1008
ffe9d734b8b556 Johannes Berg 2018-06-14 1009 switch (ru) {
ffe9d734b8b556 Johannes Berg 2018-06-14 1010 case 0 ... 36:
ffe9d734b8b556 Johannes Berg 2018-06-14 1011 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_26;
ffe9d734b8b556 Johannes Berg 2018-06-14 1012 offs = ru;
ffe9d734b8b556 Johannes Berg 2018-06-14 1013 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1014 case 37 ... 52:
ffe9d734b8b556 Johannes Berg 2018-06-14 1015 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_52;
ffe9d734b8b556 Johannes Berg 2018-06-14 1016 offs = ru - 37;
ffe9d734b8b556 Johannes Berg 2018-06-14 1017 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1018 case 53 ... 60:
ffe9d734b8b556 Johannes Berg 2018-06-14 1019 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_106;
ffe9d734b8b556 Johannes Berg 2018-06-14 1020 offs = ru - 53;
ffe9d734b8b556 Johannes Berg 2018-06-14 1021 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1022 case 61 ... 64:
ffe9d734b8b556 Johannes Berg 2018-06-14 1023 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_242;
ffe9d734b8b556 Johannes Berg 2018-06-14 1024 offs = ru - 61;
ffe9d734b8b556 Johannes Berg 2018-06-14 1025 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1026 case 65 ... 66:
ffe9d734b8b556 Johannes Berg 2018-06-14 1027 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_484;
ffe9d734b8b556 Johannes Berg 2018-06-14 1028 offs = ru - 65;
ffe9d734b8b556 Johannes Berg 2018-06-14 1029 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1030 case 67:
ffe9d734b8b556 Johannes Berg 2018-06-14 1031 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_996;
ffe9d734b8b556 Johannes Berg 2018-06-14 1032 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1033 case 68:
ffe9d734b8b556 Johannes Berg 2018-06-14 1034 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_2x996;
ffe9d734b8b556 Johannes Berg 2018-06-14 1035 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1036 }
ffe9d734b8b556 Johannes Berg 2018-06-14 1037 he->data2 |= le16_encode_bits(offs,
ffe9d734b8b556 Johannes Berg 2018-06-14 1038 IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET);
ffe9d734b8b556 Johannes Berg 2018-06-14 1039 he->data2 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_KNOWN |
ffe9d734b8b556 Johannes Berg 2018-06-14 1040 IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET_KNOWN);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1041 if (phy_data->d1 & cpu_to_le32(IWL_RX_PHY_DATA1_HE_RU_ALLOC_SEC80))
ffe9d734b8b556 Johannes Berg 2018-06-14 1042 he->data2 |=
ffe9d734b8b556 Johannes Berg 2018-06-14 1043 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC);
ffe9d734b8b556 Johannes Berg 2018-06-14 1044
ffe9d734b8b556 Johannes Berg 2018-06-14 1045 #define CHECK_BW(bw) \
ff8cfabb6d457b Juan José Arboleda 2024-08-18 1046 do { \
ffe9d734b8b556 Johannes Berg 2018-06-14 1047 BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \
74cf15cb69c0be Johannes Berg 2018-12-03 1048 RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS); \
74cf15cb69c0be Johannes Berg 2018-12-03 1049 BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_ ## bw ## MHZ != \
ff8cfabb6d457b Juan José Arboleda 2024-08-18 1050 RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS) \
ff8cfabb6d457b Juan José Arboleda 2024-08-18 1051 while (0);
ff8cfabb6d457b Juan José Arboleda 2024-08-18 1052
ffe9d734b8b556 Johannes Berg 2018-06-14 @1053 CHECK_BW(20);
ffe9d734b8b556 Johannes Berg 2018-06-14 1054 CHECK_BW(40);
ffe9d734b8b556 Johannes Berg 2018-06-14 1055 CHECK_BW(80);
ffe9d734b8b556 Johannes Berg 2018-06-14 1056 CHECK_BW(160);
74cf15cb69c0be Johannes Berg 2018-12-03 1057
74cf15cb69c0be Johannes Berg 2018-12-03 1058 if (he_mu)
ffe9d734b8b556 Johannes Berg 2018-06-14 1059 he_mu->flags2 |=
48c6ebc13c1ce1 Miri Korenblit 2021-10-17 1060 le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1,
ffe9d734b8b556 Johannes Berg 2018-06-14 1061 rate_n_flags),
ffe9d734b8b556 Johannes Berg 2018-06-14 1062 IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW);
48c6ebc13c1ce1 Miri Korenblit 2021-10-17 1063 else if (he_type == RATE_MCS_HE_TYPE_TRIG_V1)
74cf15cb69c0be Johannes Berg 2018-12-03 1064 he->data6 |=
74cf15cb69c0be Johannes Berg 2018-12-03 1065 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN) |
48c6ebc13c1ce1 Miri Korenblit 2021-10-17 1066 le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1,
74cf15cb69c0be Johannes Berg 2018-12-03 1067 rate_n_flags),
74cf15cb69c0be Johannes Berg 2018-12-03 1068 IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW);
ffe9d734b8b556 Johannes Berg 2018-06-14 1069 }
ffe9d734b8b556 Johannes Berg 2018-06-14 1070
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 @1071 static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1072 struct iwl_mvm_rx_phy_data *phy_data,
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1073 struct ieee80211_radiotap_he *he,
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1074 struct ieee80211_radiotap_he_mu *he_mu,
ffe9d734b8b556 Johannes Berg 2018-06-14 1075 struct ieee80211_rx_status *rx_status,
f1490546bec933 Johannes Berg 2022-09-06 1076 int queue)
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1077 {
6721039d5b8adf Shaul Triebitz 2018-07-02 1078 switch (phy_data->info_type) {
bdf180c8d375ee Shaul Triebitz 2018-07-02 1079 case IWL_RX_PHY_INFO_TYPE_NONE:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1080 case IWL_RX_PHY_INFO_TYPE_CCK:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1081 case IWL_RX_PHY_INFO_TYPE_OFDM_LGCY:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1082 case IWL_RX_PHY_INFO_TYPE_HT:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1083 case IWL_RX_PHY_INFO_TYPE_VHT_SU:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1084 case IWL_RX_PHY_INFO_TYPE_VHT_MU:
0ac93c06dca70f Mordechay Goodstein 2023-01-27 1085 case IWL_RX_PHY_INFO_TYPE_EHT_MU:
0ac93c06dca70f Mordechay Goodstein 2023-01-27 1086 case IWL_RX_PHY_INFO_TYPE_EHT_TB:
0ac93c06dca70f Mordechay Goodstein 2023-01-27 1087 case IWL_RX_PHY_INFO_TYPE_EHT_MU_EXT:
0ac93c06dca70f Mordechay Goodstein 2023-01-27 1088 case IWL_RX_PHY_INFO_TYPE_EHT_TB_EXT:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1089 return;
bdf180c8d375ee Shaul Triebitz 2018-07-02 1090 case IWL_RX_PHY_INFO_TYPE_HE_TB_EXT:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1091 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN |
bdf180c8d375ee Shaul Triebitz 2018-07-02 1092 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE2_KNOWN |
bdf180c8d375ee Shaul Triebitz 2018-07-02 1093 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE3_KNOWN |
bdf180c8d375ee Shaul Triebitz 2018-07-02 1094 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE4_KNOWN);
a197e6d10ce26b Emmanuel Grumbach 2019-01-16 1095 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1096 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE1),
bdf180c8d375ee Shaul Triebitz 2018-07-02 1097 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1);
a197e6d10ce26b Emmanuel Grumbach 2019-01-16 1098 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1099 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE2),
bdf180c8d375ee Shaul Triebitz 2018-07-02 1100 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2);
a197e6d10ce26b Emmanuel Grumbach 2019-01-16 1101 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1102 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE3),
bdf180c8d375ee Shaul Triebitz 2018-07-02 1103 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3);
a197e6d10ce26b Emmanuel Grumbach 2019-01-16 1104 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1105 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE4),
bdf180c8d375ee Shaul Triebitz 2018-07-02 1106 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE4);
5a2abdcadc3bd7 Gustavo A. R. Silva 2020-11-17 1107 fallthrough;
bdf180c8d375ee Shaul Triebitz 2018-07-02 1108 case IWL_RX_PHY_INFO_TYPE_HE_SU:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1109 case IWL_RX_PHY_INFO_TYPE_HE_MU:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1110 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1111 case IWL_RX_PHY_INFO_TYPE_HE_TB:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1112 /* HE common */
bdf180c8d375ee Shaul Triebitz 2018-07-02 1113 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN |
69f3ca8ed33dd3 Johannes Berg 2018-06-19 1114 IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN |
bdf180c8d375ee Shaul Triebitz 2018-07-02 1115 IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1116 he->data2 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN |
69f3ca8ed33dd3 Johannes Berg 2018-06-19 1117 IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN |
bdf180c8d375ee Shaul Triebitz 2018-07-02 1118 IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN |
bdf180c8d375ee Shaul Triebitz 2018-07-02 1119 IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1120 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1121 IWL_RX_PHY_DATA0_HE_BSS_COLOR_MASK),
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1122 IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR);
7969454b37f25d Shaul Triebitz 2018-07-25 1123 if (phy_data->info_type != IWL_RX_PHY_INFO_TYPE_HE_TB &&
7969454b37f25d Shaul Triebitz 2018-07-25 1124 phy_data->info_type != IWL_RX_PHY_INFO_TYPE_HE_TB_EXT) {
7969454b37f25d Shaul Triebitz 2018-07-25 1125 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1126 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1127 IWL_RX_PHY_DATA0_HE_UPLINK),
69f3ca8ed33dd3 Johannes Berg 2018-06-19 1128 IEEE80211_RADIOTAP_HE_DATA3_UL_DL);
7969454b37f25d Shaul Triebitz 2018-07-25 1129 }
bdf180c8d375ee Shaul Triebitz 2018-07-02 1130 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1131 IWL_RX_PHY_DATA0_HE_LDPC_EXT_SYM),
69f3ca8ed33dd3 Johannes Berg 2018-06-19 1132 IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1133 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1134 IWL_RX_PHY_DATA0_HE_PRE_FEC_PAD_MASK),
69f3ca8ed33dd3 Johannes Berg 2018-06-19 1135 IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1136 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1137 IWL_RX_PHY_DATA0_HE_PE_DISAMBIG),
69f3ca8ed33dd3 Johannes Berg 2018-06-19 1138 IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1139 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d1,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1140 IWL_RX_PHY_DATA1_HE_LTF_NUM_MASK),
bdf180c8d375ee Shaul Triebitz 2018-07-02 1141 IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1142 he->data6 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1143 IWL_RX_PHY_DATA0_HE_TXOP_DUR_MASK),
2b1476345fb6c8 Johannes Berg 2018-06-14 1144 IEEE80211_RADIOTAP_HE_DATA6_TXOP);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1145 he->data6 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1146 IWL_RX_PHY_DATA0_HE_DOPPLER),
69f3ca8ed33dd3 Johannes Berg 2018-06-19 1147 IEEE80211_RADIOTAP_HE_DATA6_DOPPLER);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1148 break;
bdf180c8d375ee Shaul Triebitz 2018-07-02 1149 }
2b1476345fb6c8 Johannes Berg 2018-06-14 1150
2286a99c32344c Johannes Berg 2019-01-11 1151 switch (phy_data->info_type) {
2286a99c32344c Johannes Berg 2019-01-11 1152 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT:
2286a99c32344c Johannes Berg 2019-01-11 1153 case IWL_RX_PHY_INFO_TYPE_HE_MU:
2286a99c32344c Johannes Berg 2019-01-11 1154 case IWL_RX_PHY_INFO_TYPE_HE_SU:
2286a99c32344c Johannes Berg 2019-01-11 1155 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN);
2286a99c32344c Johannes Berg 2019-01-11 1156 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d0,
2286a99c32344c Johannes Berg 2019-01-11 1157 IWL_RX_PHY_DATA0_HE_SPATIAL_REUSE_MASK),
2286a99c32344c Johannes Berg 2019-01-11 1158 IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE);
2286a99c32344c Johannes Berg 2019-01-11 1159 break;
2286a99c32344c Johannes Berg 2019-01-11 1160 default:
2286a99c32344c Johannes Berg 2019-01-11 1161 /* nothing here */
2286a99c32344c Johannes Berg 2019-01-11 1162 break;
2286a99c32344c Johannes Berg 2019-01-11 1163 }
2286a99c32344c Johannes Berg 2019-01-11 1164
6721039d5b8adf Shaul Triebitz 2018-07-02 1165 switch (phy_data->info_type) {
bdf180c8d375ee Shaul Triebitz 2018-07-02 1166 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT:
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1167 he_mu->flags1 |=
bdf180c8d375ee Shaul Triebitz 2018-07-02 1168 le16_encode_bits(le16_get_bits(phy_data->d4,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1169 IWL_RX_PHY_DATA4_HE_MU_EXT_SIGB_DCM),
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1170 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM);
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1171 he_mu->flags1 |=
bdf180c8d375ee Shaul Triebitz 2018-07-02 1172 le16_encode_bits(le16_get_bits(phy_data->d4,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1173 IWL_RX_PHY_DATA4_HE_MU_EXT_SIGB_MCS_MASK),
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1174 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS);
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1175 he_mu->flags2 |=
bdf180c8d375ee Shaul Triebitz 2018-07-02 1176 le16_encode_bits(le16_get_bits(phy_data->d4,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1177 IWL_RX_PHY_DATA4_HE_MU_EXT_PREAMBLE_PUNC_TYPE_MASK),
bdf180c8d375ee Shaul Triebitz 2018-07-02 1178 IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW);
f1490546bec933 Johannes Berg 2022-09-06 1179 iwl_mvm_decode_he_mu_ext(mvm, phy_data, he_mu);
5a2abdcadc3bd7 Gustavo A. R. Silva 2020-11-17 1180 fallthrough;
bdf180c8d375ee Shaul Triebitz 2018-07-02 1181 case IWL_RX_PHY_INFO_TYPE_HE_MU:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1182 he_mu->flags2 |=
bdf180c8d375ee Shaul Triebitz 2018-07-02 1183 le16_encode_bits(le32_get_bits(phy_data->d1,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1184 IWL_RX_PHY_DATA1_HE_MU_SIBG_SYM_OR_USER_NUM_MASK),
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1185 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS);
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1186 he_mu->flags2 |=
bdf180c8d375ee Shaul Triebitz 2018-07-02 1187 le16_encode_bits(le32_get_bits(phy_data->d1,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1188 IWL_RX_PHY_DATA1_HE_MU_SIGB_COMPRESSION),
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1189 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP);
5a2abdcadc3bd7 Gustavo A. R. Silva 2020-11-17 1190 fallthrough;
bdf180c8d375ee Shaul Triebitz 2018-07-02 1191 case IWL_RX_PHY_INFO_TYPE_HE_TB:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1192 case IWL_RX_PHY_INFO_TYPE_HE_TB_EXT:
f1490546bec933 Johannes Berg 2022-09-06 1193 iwl_mvm_decode_he_phy_ru_alloc(phy_data, he, he_mu, rx_status);
fed3c4ea6f8f12 Johannes Berg 2018-06-14 1194 break;
bdf180c8d375ee Shaul Triebitz 2018-07-02 1195 case IWL_RX_PHY_INFO_TYPE_HE_SU:
bdf180c8d375ee Shaul Triebitz 2018-07-02 1196 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BEAM_CHANGE_KNOWN);
bdf180c8d375ee Shaul Triebitz 2018-07-02 1197 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
bdf180c8d375ee Shaul Triebitz 2018-07-02 1198 IWL_RX_PHY_DATA0_HE_BEAM_CHNG),
fed3c4ea6f8f12 Johannes Berg 2018-06-14 1199 IEEE80211_RADIOTAP_HE_DATA3_BEAM_CHANGE);
fed3c4ea6f8f12 Johannes Berg 2018-06-14 1200 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1201 default:
ffe9d734b8b556 Johannes Berg 2018-06-14 1202 /* nothing */
ffe9d734b8b556 Johannes Berg 2018-06-14 1203 break;
ffe9d734b8b556 Johannes Berg 2018-06-14 1204 }
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1205 }
59b8cf0cfb5ac5 Johannes Berg 2018-06-14 1206
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Juan,
kernel test robot noticed the following build errors:
[auto build test ERROR on wireless-next/main]
[also build test ERROR on wireless/main linus/master v6.11-rc3 next-20240816]
[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/Juan-Jos-Arboleda/iwlwifi-mvm-Improve-code-style-in-pointer-declarations/20240818-145152
base: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link: https://lore.kernel.org/r/959e76da152811a723415545a3cf6ab1d8e17fbc.1723963126.git.soyjuanarbol%40gmail.com
patch subject: [PATCH 2/3] iwlwifi: mvm: Enclose multi-statement macro in a do while
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20240819/202408190044.FGyKKgGE-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240819/202408190044.FGyKKgGE-lkp@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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408190044.FGyKKgGE-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_decode_he_phy_ru_alloc':
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while'
1051 | while (0);
| ^~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1053:9: note: in expansion of macro 'CHECK_BW'
1053 | CHECK_BW(20);
| ^~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while'
1051 | while (0);
| ^~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1054:9: note: in expansion of macro 'CHECK_BW'
1054 | CHECK_BW(40);
| ^~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while'
1051 | while (0);
| ^~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1055:9: note: in expansion of macro 'CHECK_BW'
1055 | CHECK_BW(80);
| ^~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1051:9: error: expected ';' before 'while'
1051 | while (0);
| ^~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1056:9: note: in expansion of macro 'CHECK_BW'
1056 | CHECK_BW(160);
| ^~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1071:1: error: expected 'while' before 'static'
1071 | static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
| ^~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1252:13: error: invalid storage class for function 'iwl_mvm_decode_eht_ext_mu'
1252 | static void iwl_mvm_decode_eht_ext_mu(struct iwl_mvm *mvm,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1362:13: error: invalid storage class for function 'iwl_mvm_decode_eht_ext_tb'
1362 | static void iwl_mvm_decode_eht_ext_tb(struct iwl_mvm *mvm,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1409:13: error: invalid storage class for function 'iwl_mvm_decode_eht_ru'
1409 | static void iwl_mvm_decode_eht_ru(struct iwl_mvm *mvm,
| ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1478:13: error: invalid storage class for function 'iwl_mvm_decode_eht_phy_data'
1478 | static void iwl_mvm_decode_eht_phy_data(struct iwl_mvm *mvm,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1595:13: error: invalid storage class for function 'iwl_mvm_rx_eht'
1595 | static void iwl_mvm_rx_eht(struct iwl_mvm *mvm, struct sk_buff *skb,
| ^~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1738:13: error: invalid storage class for function 'iwl_mvm_rx_he'
1738 | static void iwl_mvm_rx_he(struct iwl_mvm *mvm, struct sk_buff *skb,
| ^~~~~~~~~~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_rx_he':
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1784:17: error: implicit declaration of function 'iwl_mvm_decode_he_phy_data'; did you mean 'iwl_mvm_decode_eht_phy_data'? [-Werror=implicit-function-declaration]
1784 | iwl_mvm_decode_he_phy_data(mvm, phy_data, he, he_mu, rx_status,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| iwl_mvm_decode_eht_phy_data
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: In function 'iwl_mvm_decode_he_phy_ru_alloc':
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1865:13: error: invalid storage class for function 'iwl_mvm_decode_lsig'
1865 | static void iwl_mvm_decode_lsig(struct sk_buff *skb,
| ^~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1901:13: error: invalid storage class for function 'iwl_mvm_rx_get_sta_block_tx'
1901 | static void iwl_mvm_rx_get_sta_block_tx(void *data, struct ieee80211_sta *sta)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:1917:13: error: invalid storage class for function 'iwl_mvm_rx_fill_status'
1917 | static void iwl_mvm_rx_fill_status(struct iwl_mvm *mvm,
| ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input
2561 | }
| ^
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2561:1: error: expected declaration or statement at end of input
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c: At top level:
>> drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2517:6: warning: 'iwl_mvm_rx_bar_frame_release' defined but not used [-Wunused-function]
2517 | void iwl_mvm_rx_bar_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2503:6: warning: 'iwl_mvm_rx_frame_release' defined but not used [-Wunused-function]
2503 | void iwl_mvm_rx_frame_release(struct iwl_mvm *mvm, struct napi_struct *napi,
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2370:6: warning: 'iwl_mvm_rx_monitor_no_data' defined but not used [-Wunused-function]
2370 | void iwl_mvm_rx_monitor_no_data(struct iwl_mvm *mvm, struct napi_struct *napi,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:2038:6: warning: 'iwl_mvm_rx_mpdu_mq' defined but not used [-Wunused-function]
2038 | void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
| ^~~~~~~~~~~~~~~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:987:1: warning: 'iwl_mvm_decode_he_phy_ru_alloc' defined but not used [-Wunused-function]
987 | iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c:935:13: warning: 'iwl_mvm_decode_he_mu_ext' defined but not used [-Wunused-function]
935 | static void iwl_mvm_decode_he_mu_ext(struct iwl_mvm *mvm,
| ^~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +1051 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
934
> 935 static void iwl_mvm_decode_he_mu_ext(struct iwl_mvm *mvm,
936 struct iwl_mvm_rx_phy_data *phy_data,
937 struct ieee80211_radiotap_he_mu *he_mu)
938 {
939 u32 phy_data2 = le32_to_cpu(phy_data->d2);
940 u32 phy_data3 = le32_to_cpu(phy_data->d3);
941 u16 phy_data4 = le16_to_cpu(phy_data->d4);
942 u32 rate_n_flags = phy_data->rate_n_flags;
943
944 if (FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH1_CRC_OK, phy_data4)) {
945 he_mu->flags1 |=
946 cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_RU_KNOWN |
947 IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU_KNOWN);
948
949 he_mu->flags1 |=
950 le16_encode_bits(FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH1_CTR_RU,
951 phy_data4),
952 IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU);
953
954 he_mu->ru_ch1[0] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH1_RU0,
955 phy_data2);
956 he_mu->ru_ch1[1] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH1_RU1,
957 phy_data3);
958 he_mu->ru_ch1[2] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH1_RU2,
959 phy_data2);
960 he_mu->ru_ch1[3] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH1_RU3,
961 phy_data3);
962 }
963
964 if (FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH2_CRC_OK, phy_data4) &&
965 (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK_V1) != RATE_MCS_CHAN_WIDTH_20) {
966 he_mu->flags1 |=
967 cpu_to_le16(IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN |
968 IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN);
969
970 he_mu->flags2 |=
971 le16_encode_bits(FIELD_GET(IWL_RX_PHY_DATA4_HE_MU_EXT_CH2_CTR_RU,
972 phy_data4),
973 IEEE80211_RADIOTAP_HE_MU_FLAGS2_CH2_CTR_26T_RU);
974
975 he_mu->ru_ch2[0] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH2_RU0,
976 phy_data2);
977 he_mu->ru_ch2[1] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH2_RU1,
978 phy_data3);
979 he_mu->ru_ch2[2] = FIELD_GET(IWL_RX_PHY_DATA2_HE_MU_EXT_CH2_RU2,
980 phy_data2);
981 he_mu->ru_ch2[3] = FIELD_GET(IWL_RX_PHY_DATA3_HE_MU_EXT_CH2_RU3,
982 phy_data3);
983 }
984 }
985
986 static void
> 987 iwl_mvm_decode_he_phy_ru_alloc(struct iwl_mvm_rx_phy_data *phy_data,
988 struct ieee80211_radiotap_he *he,
989 struct ieee80211_radiotap_he_mu *he_mu,
990 struct ieee80211_rx_status *rx_status)
991 {
992 /*
993 * Unfortunately, we have to leave the mac80211 data
994 * incorrect for the case that we receive an HE-MU
995 * transmission and *don't* have the HE phy data (due
996 * to the bits being used for TSF). This shouldn't
997 * happen though as management frames where we need
998 * the TSF/timers are not be transmitted in HE-MU.
999 */
1000 u8 ru = le32_get_bits(phy_data->d1, IWL_RX_PHY_DATA1_HE_RU_ALLOC_MASK);
1001 u32 rate_n_flags = phy_data->rate_n_flags;
1002 u32 he_type = rate_n_flags & RATE_MCS_HE_TYPE_MSK_V1;
1003 u8 offs = 0;
1004
1005 rx_status->bw = RATE_INFO_BW_HE_RU;
1006
1007 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN);
1008
1009 switch (ru) {
1010 case 0 ... 36:
1011 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_26;
1012 offs = ru;
1013 break;
1014 case 37 ... 52:
1015 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_52;
1016 offs = ru - 37;
1017 break;
1018 case 53 ... 60:
1019 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_106;
1020 offs = ru - 53;
1021 break;
1022 case 61 ... 64:
1023 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_242;
1024 offs = ru - 61;
1025 break;
1026 case 65 ... 66:
1027 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_484;
1028 offs = ru - 65;
1029 break;
1030 case 67:
1031 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_996;
1032 break;
1033 case 68:
1034 rx_status->he_ru = NL80211_RATE_INFO_HE_RU_ALLOC_2x996;
1035 break;
1036 }
1037 he->data2 |= le16_encode_bits(offs,
1038 IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET);
1039 he->data2 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_KNOWN |
1040 IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET_KNOWN);
1041 if (phy_data->d1 & cpu_to_le32(IWL_RX_PHY_DATA1_HE_RU_ALLOC_SEC80))
1042 he->data2 |=
1043 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC);
1044
1045 #define CHECK_BW(bw) \
1046 do { \
1047 BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_ ## bw ## MHZ != \
1048 RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS); \
1049 BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_ ## bw ## MHZ != \
1050 RATE_MCS_CHAN_WIDTH_##bw >> RATE_MCS_CHAN_WIDTH_POS) \
> 1051 while (0);
1052
1053 CHECK_BW(20);
1054 CHECK_BW(40);
> 1055 CHECK_BW(80);
> 1056 CHECK_BW(160);
1057
1058 if (he_mu)
1059 he_mu->flags2 |=
1060 le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1,
1061 rate_n_flags),
1062 IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW);
1063 else if (he_type == RATE_MCS_HE_TYPE_TRIG_V1)
1064 he->data6 |=
1065 cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN) |
1066 le16_encode_bits(FIELD_GET(RATE_MCS_CHAN_WIDTH_MSK_V1,
1067 rate_n_flags),
1068 IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW);
1069 }
1070
> 1071 static void iwl_mvm_decode_he_phy_data(struct iwl_mvm *mvm,
1072 struct iwl_mvm_rx_phy_data *phy_data,
1073 struct ieee80211_radiotap_he *he,
1074 struct ieee80211_radiotap_he_mu *he_mu,
1075 struct ieee80211_rx_status *rx_status,
1076 int queue)
1077 {
1078 switch (phy_data->info_type) {
1079 case IWL_RX_PHY_INFO_TYPE_NONE:
1080 case IWL_RX_PHY_INFO_TYPE_CCK:
1081 case IWL_RX_PHY_INFO_TYPE_OFDM_LGCY:
1082 case IWL_RX_PHY_INFO_TYPE_HT:
1083 case IWL_RX_PHY_INFO_TYPE_VHT_SU:
1084 case IWL_RX_PHY_INFO_TYPE_VHT_MU:
1085 case IWL_RX_PHY_INFO_TYPE_EHT_MU:
1086 case IWL_RX_PHY_INFO_TYPE_EHT_TB:
1087 case IWL_RX_PHY_INFO_TYPE_EHT_MU_EXT:
1088 case IWL_RX_PHY_INFO_TYPE_EHT_TB_EXT:
1089 return;
1090 case IWL_RX_PHY_INFO_TYPE_HE_TB_EXT:
1091 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN |
1092 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE2_KNOWN |
1093 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE3_KNOWN |
1094 IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE4_KNOWN);
1095 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
1096 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE1),
1097 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1);
1098 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
1099 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE2),
1100 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2);
1101 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
1102 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE3),
1103 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3);
1104 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d2,
1105 IWL_RX_PHY_DATA2_HE_TB_EXT_SPTL_REUSE4),
1106 IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE4);
1107 fallthrough;
1108 case IWL_RX_PHY_INFO_TYPE_HE_SU:
1109 case IWL_RX_PHY_INFO_TYPE_HE_MU:
1110 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT:
1111 case IWL_RX_PHY_INFO_TYPE_HE_TB:
1112 /* HE common */
1113 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN |
1114 IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN |
1115 IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN);
1116 he->data2 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN |
1117 IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN |
1118 IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN |
1119 IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN);
1120 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1121 IWL_RX_PHY_DATA0_HE_BSS_COLOR_MASK),
1122 IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR);
1123 if (phy_data->info_type != IWL_RX_PHY_INFO_TYPE_HE_TB &&
1124 phy_data->info_type != IWL_RX_PHY_INFO_TYPE_HE_TB_EXT) {
1125 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN);
1126 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1127 IWL_RX_PHY_DATA0_HE_UPLINK),
1128 IEEE80211_RADIOTAP_HE_DATA3_UL_DL);
1129 }
1130 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1131 IWL_RX_PHY_DATA0_HE_LDPC_EXT_SYM),
1132 IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG);
1133 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1134 IWL_RX_PHY_DATA0_HE_PRE_FEC_PAD_MASK),
1135 IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD);
1136 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1137 IWL_RX_PHY_DATA0_HE_PE_DISAMBIG),
1138 IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG);
1139 he->data5 |= le16_encode_bits(le32_get_bits(phy_data->d1,
1140 IWL_RX_PHY_DATA1_HE_LTF_NUM_MASK),
1141 IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS);
1142 he->data6 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1143 IWL_RX_PHY_DATA0_HE_TXOP_DUR_MASK),
1144 IEEE80211_RADIOTAP_HE_DATA6_TXOP);
1145 he->data6 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1146 IWL_RX_PHY_DATA0_HE_DOPPLER),
1147 IEEE80211_RADIOTAP_HE_DATA6_DOPPLER);
1148 break;
1149 }
1150
1151 switch (phy_data->info_type) {
1152 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT:
1153 case IWL_RX_PHY_INFO_TYPE_HE_MU:
1154 case IWL_RX_PHY_INFO_TYPE_HE_SU:
1155 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN);
1156 he->data4 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1157 IWL_RX_PHY_DATA0_HE_SPATIAL_REUSE_MASK),
1158 IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE);
1159 break;
1160 default:
1161 /* nothing here */
1162 break;
1163 }
1164
1165 switch (phy_data->info_type) {
1166 case IWL_RX_PHY_INFO_TYPE_HE_MU_EXT:
1167 he_mu->flags1 |=
1168 le16_encode_bits(le16_get_bits(phy_data->d4,
1169 IWL_RX_PHY_DATA4_HE_MU_EXT_SIGB_DCM),
1170 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM);
1171 he_mu->flags1 |=
1172 le16_encode_bits(le16_get_bits(phy_data->d4,
1173 IWL_RX_PHY_DATA4_HE_MU_EXT_SIGB_MCS_MASK),
1174 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS);
1175 he_mu->flags2 |=
1176 le16_encode_bits(le16_get_bits(phy_data->d4,
1177 IWL_RX_PHY_DATA4_HE_MU_EXT_PREAMBLE_PUNC_TYPE_MASK),
1178 IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW);
1179 iwl_mvm_decode_he_mu_ext(mvm, phy_data, he_mu);
1180 fallthrough;
1181 case IWL_RX_PHY_INFO_TYPE_HE_MU:
1182 he_mu->flags2 |=
1183 le16_encode_bits(le32_get_bits(phy_data->d1,
1184 IWL_RX_PHY_DATA1_HE_MU_SIBG_SYM_OR_USER_NUM_MASK),
1185 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS);
1186 he_mu->flags2 |=
1187 le16_encode_bits(le32_get_bits(phy_data->d1,
1188 IWL_RX_PHY_DATA1_HE_MU_SIGB_COMPRESSION),
1189 IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP);
1190 fallthrough;
1191 case IWL_RX_PHY_INFO_TYPE_HE_TB:
1192 case IWL_RX_PHY_INFO_TYPE_HE_TB_EXT:
1193 iwl_mvm_decode_he_phy_ru_alloc(phy_data, he, he_mu, rx_status);
1194 break;
1195 case IWL_RX_PHY_INFO_TYPE_HE_SU:
1196 he->data1 |= cpu_to_le16(IEEE80211_RADIOTAP_HE_DATA1_BEAM_CHANGE_KNOWN);
1197 he->data3 |= le16_encode_bits(le32_get_bits(phy_data->d0,
1198 IWL_RX_PHY_DATA0_HE_BEAM_CHNG),
1199 IEEE80211_RADIOTAP_HE_DATA3_BEAM_CHANGE);
1200 break;
1201 default:
1202 /* nothing */
1203 break;
1204 }
1205 }
1206
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
© 2016 - 2026 Red Hat, Inc.