tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   fe07bfda2fb9cdef8a4d4008a409bb02f35f1bd8
commit: 7f7aa94bcaf03d0f18a6853d8f7dad6a4d25bbd6 mac80211: reduce peer HE 
MCS/NSS to own capabilities
date:   5 weeks ago
config: mips-randconfig-r011-20210301 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
b077d82b00d81934c7c27ac89dd8b0e7f448bded)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install mips cross compiling tool for clang build
        # apt-get install binutils-mips-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7f7aa94bcaf03d0f18a6853d8f7dad6a4d25bbd6
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 7f7aa94bcaf03d0f18a6853d8f7dad6a4d25bbd6
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

   In file included from net/mac80211/he.c:9:
   In file included from net/mac80211/ieee80211_i.h:16:
   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:14:
   In file included from include/linux/mm.h:33:
   In file included from include/linux/pgtable.h:6:
   arch/mips/include/asm/pgtable.h:202:3: warning: converting the result of 
'<<' to a boolean always evaluates to true [-Wtautological-constant-compare]
   arch/mips/include/asm/cmpxchg.h:220:2: note: expanded from macro 'cmpxchg64'
           cmpxchg((ptr), (o), (n));                                       \
           ^
   arch/mips/include/asm/cmpxchg.h:204:7: note: expanded from macro 'cmpxchg'
           if (!__SYNC_loongson3_war)                                      \
                ^
   arch/mips/include/asm/sync.h:147:34: note: expanded from macro 
'__SYNC_loongson3_war'
   # define __SYNC_loongson3_war   (1 << 31)
                                      ^
   In file included from net/mac80211/he.c:9:
   In file included from net/mac80211/ieee80211_i.h:16:
   In file included from include/linux/if_ether.h:19:
   In file included from include/linux/skbuff.h:28:
   In file included from include/net/checksum.h:22:
   arch/mips/include/asm/checksum.h:161:9: error: unsupported inline asm: input 
with type 'unsigned long' matching output with type '__wsum' (aka 'unsigned 
int')
           : "0" ((__force unsigned long)daddr),
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from net/mac80211/he.c:9:
   In file included from net/mac80211/ieee80211_i.h:19:
   include/linux/netdevice.h:559:11: warning: converting the result of '<<' to 
a boolean always evaluates to true [-Wtautological-constant-compare]
           } while (cmpxchg(&n->state, val, new) != val);
                    ^
   arch/mips/include/asm/cmpxchg.h:194:7: note: expanded from macro 'cmpxchg'
           if (!__SYNC_loongson3_war)                                      \
                ^
   arch/mips/include/asm/sync.h:147:34: note: expanded from macro 
'__SYNC_loongson3_war'
   # define __SYNC_loongson3_war   (1 << 31)
                                      ^
   In file included from net/mac80211/he.c:9:
   In file included from net/mac80211/ieee80211_i.h:19:
   include/linux/netdevice.h:559:11: warning: converting the result of '<<' to 
a boolean always evaluates to true [-Wtautological-constant-compare]
   arch/mips/include/asm/cmpxchg.h:204:7: note: expanded from macro 'cmpxchg'
           if (!__SYNC_loongson3_war)                                      \
                ^
   arch/mips/include/asm/sync.h:147:34: note: expanded from macro 
'__SYNC_loongson3_war'
   # define __SYNC_loongson3_war   (1 << 31)
                                      ^
   In file included from net/mac80211/he.c:9:
   In file included from net/mac80211/ieee80211_i.h:30:
   In file included from include/net/mac80211.h:22:
   In file included from include/net/codel.h:48:
   In file included from include/net/inet_ecn.h:9:
   In file included from include/net/inet_sock.h:22:
   In file included from include/net/sock.h:61:
   include/linux/poll.h:142:27: warning: division by zero is undefined 
[-Wdivision-by-zero]
                   M(RDNORM) | M(RDBAND) | M(WRNORM) | M(WRBAND) |
                                           ^~~~~~~~~
   include/linux/poll.h:140:32: note: expanded from macro 'M'
   #define M(X) (__force __poll_t)__MAP(val, POLL##X, (__force __u16)EPOLL##X)
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/poll.h:126:51: note: expanded from macro '__MAP'
           (from < to ? (v & from) * (to/from) : (v & from) / (from/to))
                                                            ^ ~~~~~~~~~
   include/linux/poll.h:142:39: warning: division by zero is undefined 
[-Wdivision-by-zero]
                   M(RDNORM) | M(RDBAND) | M(WRNORM) | M(WRBAND) |
                                                       ^~~~~~~~~
   include/linux/poll.h:140:32: note: expanded from macro 'M'
   #define M(X) (__force __poll_t)__MAP(val, POLL##X, (__force __u16)EPOLL##X)
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/poll.h:126:51: note: expanded from macro '__MAP'
           (from < to ? (v & from) * (to/from) : (v & from) / (from/to))
                                                            ^ ~~~~~~~~~
   In file included from net/mac80211/he.c:9:
   In file included from net/mac80211/ieee80211_i.h:30:
   In file included from include/net/mac80211.h:22:
   In file included from include/net/codel.h:48:
   In file included from include/net/inet_ecn.h:9:
   In file included from include/net/inet_sock.h:22:
   include/net/sock.h:1994:12: warning: converting the result of '<<' to a 
boolean always evaluates to true [-Wtautological-constant-compare]
           old_dst = xchg((__force struct dst_entry **)&sk->sk_dst_cache, dst);
                     ^
   arch/mips/include/asm/cmpxchg.h:102:7: note: expanded from macro 'xchg'
           if (!__SYNC_loongson3_war)                                      \
                ^
   arch/mips/include/asm/sync.h:147:34: note: expanded from macro 
'__SYNC_loongson3_war'
   # define __SYNC_loongson3_war   (1 << 31)
                                      ^
   In file included from net/mac80211/he.c:9:
   In file included from net/mac80211/ieee80211_i.h:30:
   In file included from include/net/mac80211.h:22:
   In file included from include/net/codel.h:48:
   In file included from include/net/inet_ecn.h:9:
   In file included from include/net/inet_sock.h:22:
   include/net/sock.h:2244:8: warning: converting the result of '<<' to a 
boolean always evaluates to true [-Wtautological-constant-compare]
           err = xchg(&sk->sk_err, 0);
                 ^
   arch/mips/include/asm/cmpxchg.h:102:7: note: expanded from macro 'xchg'
           if (!__SYNC_loongson3_war)                                      \
                ^
   arch/mips/include/asm/sync.h:147:34: note: expanded from macro 
'__SYNC_loongson3_war'
   # define __SYNC_loongson3_war   (1 << 31)
                                      ^
>> net/mac80211/he.c:158:33: warning: taking address of packed member 
>> 'rx_mcs_80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
>> an unaligned pointer value [-Waddress-of-packed-member]
           ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_80,
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:159:12: warning: taking address of packed member 
'rx_mcs_80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in an 
unaligned pointer value [-Waddress-of-packed-member]
                                         &he_cap->he_mcs_nss_supp.rx_mcs_80,
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> net/mac80211/he.c:160:12: warning: taking address of packed member 
>> 'tx_mcs_80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
>> an unaligned pointer value [-Waddress-of-packed-member]
                                         &own_he_cap.he_mcs_nss_supp.tx_mcs_80,
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:161:12: warning: taking address of packed member 
'tx_mcs_80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in an 
unaligned pointer value [-Waddress-of-packed-member]
                                         &he_cap->he_mcs_nss_supp.tx_mcs_80);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> net/mac80211/he.c:169:34: warning: taking address of packed member 
>> 'rx_mcs_160' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
>> an unaligned pointer value [-Waddress-of-packed-member]
                   
ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_160,
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:170:13: warning: taking address of packed member 
'rx_mcs_160' of class or structure 'ieee80211_he_mcs_nss_supp' may result in an 
unaligned pointer value [-Waddress-of-packed-member]
                                                 
&he_cap->he_mcs_nss_supp.rx_mcs_160,
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> net/mac80211/he.c:171:13: warning: taking address of packed member 
>> 'tx_mcs_160' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
>> an unaligned pointer value [-Waddress-of-packed-member]
                                                 
&own_he_cap.he_mcs_nss_supp.tx_mcs_160,
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:172:13: warning: taking address of packed member 
'tx_mcs_160' of class or structure 'ieee80211_he_mcs_nss_supp' may result in an 
unaligned pointer value [-Waddress-of-packed-member]
                                                 
&he_cap->he_mcs_nss_supp.tx_mcs_160);
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:174:29: warning: taking address of packed member 
'rx_mcs_160' of class or structure 'ieee80211_he_mcs_nss_supp' may result in an 
unaligned pointer value [-Waddress-of-packed-member]
                   
ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.rx_mcs_160);
                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:175:29: warning: taking address of packed member 
'tx_mcs_160' of class or structure 'ieee80211_he_mcs_nss_supp' may result in an 
unaligned pointer value [-Waddress-of-packed-member]
                   
ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.tx_mcs_160);
                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> net/mac80211/he.c:186:34: warning: taking address of packed member 
>> 'rx_mcs_80p80' of class or structure 'ieee80211_he_mcs_nss_supp' may result 
>> in an unaligned pointer value [-Waddress-of-packed-member]
                   
ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_80p80,
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:187:13: warning: taking address of packed member 
'rx_mcs_80p80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
an unaligned pointer value [-Waddress-of-packed-member]
                                                 
&he_cap->he_mcs_nss_supp.rx_mcs_80p80,
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> net/mac80211/he.c:188:13: warning: taking address of packed member 
>> 'tx_mcs_80p80' of class or structure 'ieee80211_he_mcs_nss_supp' may result 
>> in an unaligned pointer value [-Waddress-of-packed-member]
                                                 
&own_he_cap.he_mcs_nss_supp.tx_mcs_80p80,
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:189:13: warning: taking address of packed member 
'tx_mcs_80p80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
an unaligned pointer value [-Waddress-of-packed-member]
                                                 
&he_cap->he_mcs_nss_supp.tx_mcs_80p80);
                                                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:191:29: warning: taking address of packed member 
'rx_mcs_80p80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
an unaligned pointer value [-Waddress-of-packed-member]
                   
ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.rx_mcs_80p80);
                                             
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/he.c:192:29: warning: taking address of packed member 
'tx_mcs_80p80' of class or structure 'ieee80211_he_mcs_nss_supp' may result in 
an unaligned pointer value [-Waddress-of-packed-member]
                   
ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.tx_mcs_80p80);
                                             
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   34 warnings and 1 error generated.


vim +158 net/mac80211/he.c

   105  
   106  void
   107  ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
   108                                    struct ieee80211_supported_band 
*sband,
   109                                    const u8 *he_cap_ie, u8 he_cap_len,
   110                                    const struct ieee80211_he_6ghz_capa 
*he_6ghz_capa,
   111                                    struct sta_info *sta)
   112  {
   113          struct ieee80211_sta_he_cap *he_cap = &sta->sta.he_cap;
   114          struct ieee80211_sta_he_cap own_he_cap = 
sband->iftype_data->he_cap;
   115          struct ieee80211_he_cap_elem *he_cap_ie_elem = (void 
*)he_cap_ie;
   116          u8 he_ppe_size;
   117          u8 mcs_nss_size;
   118          u8 he_total_size;
   119          bool own_160, peer_160, own_80p80, peer_80p80;
   120  
   121          memset(he_cap, 0, sizeof(*he_cap));
   122  
   123          if (!he_cap_ie || !ieee80211_get_he_sta_cap(sband))
   124                  return;
   125  
   126          /* Make sure size is OK */
   127          mcs_nss_size = ieee80211_he_mcs_nss_size(he_cap_ie_elem);
   128          he_ppe_size =
   129                  
ieee80211_he_ppe_size(he_cap_ie[sizeof(he_cap->he_cap_elem) +
   130                                                  mcs_nss_size],
   131                                        he_cap_ie_elem->phy_cap_info);
   132          he_total_size = sizeof(he_cap->he_cap_elem) + mcs_nss_size +
   133                          he_ppe_size;
   134          if (he_cap_len < he_total_size)
   135                  return;
   136  
   137          memcpy(&he_cap->he_cap_elem, he_cap_ie, 
sizeof(he_cap->he_cap_elem));
   138  
   139          /* HE Tx/Rx HE MCS NSS Support Field */
   140          memcpy(&he_cap->he_mcs_nss_supp,
   141                 &he_cap_ie[sizeof(he_cap->he_cap_elem)], mcs_nss_size);
   142  
   143          /* Check if there are (optional) PPE Thresholds */
   144          if (he_cap->he_cap_elem.phy_cap_info[6] &
   145              IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT)
   146                  memcpy(he_cap->ppe_thres,
   147                         &he_cap_ie[sizeof(he_cap->he_cap_elem) + 
mcs_nss_size],
   148                         he_ppe_size);
   149  
   150          he_cap->has_he = true;
   151  
   152          sta->cur_max_bandwidth = ieee80211_sta_cap_rx_bw(sta);
   153          sta->sta.bandwidth = ieee80211_sta_cur_vht_bw(sta);
   154  
   155          if (sband->band == NL80211_BAND_6GHZ && he_6ghz_capa)
   156                  ieee80211_update_from_he_6ghz_capa(he_6ghz_capa, sta);
   157  
 > 158          
 > ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_80,
 > 159                                        
 > &he_cap->he_mcs_nss_supp.rx_mcs_80,
 > 160                                        
 > &own_he_cap.he_mcs_nss_supp.tx_mcs_80,
 > 161                                        
 > &he_cap->he_mcs_nss_supp.tx_mcs_80);
   162  
   163          own_160 = own_he_cap.he_cap_elem.phy_cap_info[0] &
   164                    IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
   165          peer_160 = he_cap->he_cap_elem.phy_cap_info[0] &
   166                     IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
   167  
   168          if (peer_160 && own_160) {
 > 169                  
 > ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_160,
   170                                                
&he_cap->he_mcs_nss_supp.rx_mcs_160,
 > 171                                                
 > &own_he_cap.he_mcs_nss_supp.tx_mcs_160,
 > 172                                                
 > &he_cap->he_mcs_nss_supp.tx_mcs_160);
   173          } else if (peer_160 && !own_160) {
   174                  
ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.rx_mcs_160);
 > 175                  
 > ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.tx_mcs_160);
   176                  he_cap->he_cap_elem.phy_cap_info[0] &=
   177                          
~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
   178          }
   179  
   180          own_80p80 = own_he_cap.he_cap_elem.phy_cap_info[0] &
   181                      
IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G;
   182          peer_80p80 = he_cap->he_cap_elem.phy_cap_info[0] &
   183                       
IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G;
   184  
   185          if (peer_80p80 && own_80p80) {
 > 186                  
 > ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_80p80,
   187                                                
&he_cap->he_mcs_nss_supp.rx_mcs_80p80,
 > 188                                                
 > &own_he_cap.he_mcs_nss_supp.tx_mcs_80p80,
   189                                                
&he_cap->he_mcs_nss_supp.tx_mcs_80p80);
   190          } else if (peer_80p80 && !own_80p80) {
   191                  
ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.rx_mcs_80p80);
   192                  
ieee80211_he_mcs_disable(&he_cap->he_mcs_nss_supp.tx_mcs_80p80);
   193                  he_cap->he_cap_elem.phy_cap_info[0] &=
   194                          
~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G;
   195          }
   196  }
   197  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to