CC: [email protected]
BCC: [email protected]
CC: Johannes Berg <[email protected]>
CC: Kalle Valo <[email protected]>
CC: [email protected]
TO: Sriram R <[email protected]>
CC: Johannes Berg <[email protected]>

tree:   
https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
head:   046d2e7c50e3087a32a85fd384c21f896dbccf83
commit: 046d2e7c50e3087a32a85fd384c21f896dbccf83 [6/6] mac80211: prepare sta 
handling for MLO support
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: i386-randconfig-m021-20220411 
(https://download.01.org/0day-ci/archive/20220412/[email protected]/config)
compiler: gcc-11 (Debian 11.2.0-19) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
net/mac80211/status.c:980 __ieee80211_tx_status() warn: potential spectre issue 
'sta->deflink.status_stats.msdu_failed' [w]
net/mac80211/status.c:982 __ieee80211_tx_status() warn: potential spectre issue 
'sta->deflink.status_stats.msdu_retries' [w]

vim +980 net/mac80211/status.c

4dc792b8f098ab Helmut Schaa           2015-09-02   892  
5fe49a9d11644f Felix Fietkau          2017-04-26   893  static void 
__ieee80211_tx_status(struct ieee80211_hw *hw,
3318111cf63d97 Felix Fietkau          2020-09-08   894                          
          struct ieee80211_tx_status *status,
3318111cf63d97 Felix Fietkau          2020-09-08   895                          
          int rates_idx, int retry_count)
4dc792b8f098ab Helmut Schaa           2015-09-02   896  {
5fe49a9d11644f Felix Fietkau          2017-04-26   897          struct sk_buff 
*skb = status->skb;
7e1cdcbb092458 Felix Fietkau          2014-11-19   898          struct 
ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
7e1cdcbb092458 Felix Fietkau          2014-11-19   899          struct 
ieee80211_local *local = hw_to_local(hw);
5fe49a9d11644f Felix Fietkau          2017-04-26   900          struct 
ieee80211_tx_info *info = status->info;
5fe49a9d11644f Felix Fietkau          2017-04-26   901          struct sta_info 
*sta;
7e1cdcbb092458 Felix Fietkau          2014-11-19   902          __le16 fc;
7e1cdcbb092458 Felix Fietkau          2014-11-19   903          struct 
ieee80211_supported_band *sband;
7e1cdcbb092458 Felix Fietkau          2014-11-19   904          bool 
send_to_cooked;
7e1cdcbb092458 Felix Fietkau          2014-11-19   905          bool acked;
5972fa15b923df Markus Theil           2019-12-18   906          bool 
noack_success;
7e1cdcbb092458 Felix Fietkau          2014-11-19   907          struct 
ieee80211_bar *bar;
7e1cdcbb092458 Felix Fietkau          2014-11-19   908          int shift = 0;
5e06a9e8b6db44 Johannes Berg          2015-01-16   909          int tid = 
IEEE80211_NUM_TIDS;
7e1cdcbb092458 Felix Fietkau          2014-11-19   910  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   911          sband = 
local->hw.wiphy->bands[info->band];
375177bf35efc0 Vivek Natarajan        2010-02-09   912          fc = 
hdr->frame_control;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   913  
5fe49a9d11644f Felix Fietkau          2017-04-26   914          if 
(status->sta) {
5fe49a9d11644f Felix Fietkau          2017-04-26   915                  sta = 
container_of(status->sta, struct sta_info, sta);
2103dec14792be Simon Wunderlich       2013-07-08   916                  shift = 
ieee80211_vif_get_shift(&sta->sdata->vif);
2103dec14792be Simon Wunderlich       2013-07-08   917  
47086fc51aa222 Johannes Berg          2011-09-29   918                  if 
(info->flags & IEEE80211_TX_STATUS_EOSP)
c2c98fdeb5c897 Johannes Berg          2011-09-29   919                          
clear_sta_flag(sta, WLAN_STA_SP);
47086fc51aa222 Johannes Berg          2011-09-29   920  
04ac3c0ee2c773 Felix Fietkau          2010-12-02   921                  acked = 
!!(info->flags & IEEE80211_TX_STAT_ACK);
5972fa15b923df Markus Theil           2019-12-18   922                  
noack_success = !!(info->flags &
5972fa15b923df Markus Theil           2019-12-18   923                          
           IEEE80211_TX_STAT_NOACK_TRANSMITTED);
71f2c3470fca51 Masashi Honma          2016-08-02   924  
71f2c3470fca51 Masashi Honma          2016-08-02   925                  /* mesh 
Peer Service Period support */
71f2c3470fca51 Masashi Honma          2016-08-02   926                  if 
(ieee80211_vif_is_mesh(&sta->sdata->vif) &&
71f2c3470fca51 Masashi Honma          2016-08-02   927                      
ieee80211_is_data_qos(fc))
71f2c3470fca51 Masashi Honma          2016-08-02   928                          
ieee80211_mpsp_trigger_process(
71f2c3470fca51 Masashi Honma          2016-08-02   929                          
        ieee80211_get_qos_ctl(hdr), sta, true, acked);
71f2c3470fca51 Masashi Honma          2016-08-02   930  
30686bf7f5b3c3 Johannes Berg          2015-06-02   931                  if 
(ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL) &&
00a9a6d1e2f18c Chun-Yeow Yeoh         2014-04-02   932                      
(ieee80211_is_data(hdr->frame_control)) &&
0c86980817853e Juuso Oikarinen        2010-04-22   933                      
(rates_idx != -1))
046d2e7c50e308 Sriram R               2022-04-04   934                          
sta->deflink.tx_stats.last_rate =
e5a9f8d04660da Johannes Berg          2015-10-16   935                          
        info->status.rates[rates_idx];
0c86980817853e Juuso Oikarinen        2010-04-22   936  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   937                  if 
((info->flags & IEEE80211_TX_STAT_AMPDU_NO_BACK) &&
fe7a5d5c1ad659 Johannes Berg          2009-11-18   938                      
(ieee80211_is_data_qos(fc))) {
79c892b85027d5 Johannes Berg          2014-11-21   939                          
u16 ssn;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   940                          
u8 *qc;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   941  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   942                          
qc = ieee80211_get_qos_ctl(hdr);
fe7a5d5c1ad659 Johannes Berg          2009-11-18   943                          
tid = qc[0] & 0xf;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   944                          
ssn = ((le16_to_cpu(hdr->seq_ctrl) + 0x10)
fe7a5d5c1ad659 Johannes Berg          2009-11-18   945                          
                        & IEEE80211_SCTL_SEQ);
8c771244fbab51 Felix Fietkau          2011-08-20   946                          
ieee80211_send_bar(&sta->sdata->vif, hdr->addr1,
fe7a5d5c1ad659 Johannes Berg          2009-11-18   947                          
                   tid, ssn);
79c892b85027d5 Johannes Berg          2014-11-21   948                  } else 
if (ieee80211_is_data_qos(fc)) {
79c892b85027d5 Johannes Berg          2014-11-21   949                          
u8 *qc = ieee80211_get_qos_ctl(hdr);
79c892b85027d5 Johannes Berg          2014-11-21   950  
79c892b85027d5 Johannes Berg          2014-11-21   951                          
tid = qc[0] & 0xf;
fe7a5d5c1ad659 Johannes Berg          2009-11-18   952                  }
fe7a5d5c1ad659 Johannes Berg          2009-11-18   953  
e69deded2bc29e Helmut Schaa           2011-08-11   954                  if 
(!acked && ieee80211_is_back_req(fc)) {
79c892b85027d5 Johannes Berg          2014-11-21   955                          
u16 control;
7107676a3a4641 Felix Fietkau          2011-09-15   956  
e69deded2bc29e Helmut Schaa           2011-08-11   957                          
/*
7107676a3a4641 Felix Fietkau          2011-09-15   958                          
 * BAR failed, store the last SSN and retry sending
7107676a3a4641 Felix Fietkau          2011-09-15   959                          
 * the BAR when the next unicast transmission on the
7107676a3a4641 Felix Fietkau          2011-09-15   960                          
 * same TID succeeds.
e69deded2bc29e Helmut Schaa           2011-08-11   961                          
 */
e69deded2bc29e Helmut Schaa           2011-08-11   962                          
bar = (struct ieee80211_bar *) skb->data;
7107676a3a4641 Felix Fietkau          2011-09-15   963                          
control = le16_to_cpu(bar->control);
7107676a3a4641 Felix Fietkau          2011-09-15   964                          
if (!(control & IEEE80211_BAR_CTRL_MULTI_TID)) {
f0425beda4d404 Felix Fietkau          2011-08-28   965                          
        u16 ssn = le16_to_cpu(bar->start_seq_num);
f0425beda4d404 Felix Fietkau          2011-08-28   966  
7107676a3a4641 Felix Fietkau          2011-09-15   967                          
        tid = (control &
e69deded2bc29e Helmut Schaa           2011-08-11   968                          
               IEEE80211_BAR_CTRL_TID_INFO_MASK) >>
e69deded2bc29e Helmut Schaa           2011-08-11   969                          
              IEEE80211_BAR_CTRL_TID_INFO_SHIFT;
f0425beda4d404 Felix Fietkau          2011-08-28   970  
f0425beda4d404 Felix Fietkau          2011-08-28   971                          
        ieee80211_set_bar_pending(sta, tid, ssn);
e69deded2bc29e Helmut Schaa           2011-08-11   972                          
}
e69deded2bc29e Helmut Schaa           2011-08-11   973                  }
e69deded2bc29e Helmut Schaa           2011-08-11   974  
fe7a5d5c1ad659 Johannes Berg          2009-11-18   975                  if 
(info->flags & IEEE80211_TX_STAT_TX_FILTERED) {
fe7a5d5c1ad659 Johannes Berg          2009-11-18   976                          
ieee80211_handle_filtered_frame(local, sta, skb);
fe7a5d5c1ad659 Johannes Berg          2009-11-18   977                          
return;
3318111cf63d97 Felix Fietkau          2020-09-08   978                  } else 
if (ieee80211_is_data_present(fc)) {
5972fa15b923df Markus Theil           2019-12-18   979                          
if (!acked && !noack_success)
046d2e7c50e308 Sriram R               2022-04-04  @980                          
        sta->deflink.status_stats.msdu_failed[tid]++;
e5a9f8d04660da Johannes Berg          2015-10-16   981  
046d2e7c50e308 Sriram R               2022-04-04  @982                          
sta->deflink.status_stats.msdu_retries[tid] +=
e5a9f8d04660da Johannes Berg          2015-10-16   983                          
        retry_count;
79c892b85027d5 Johannes Berg          2014-11-21   984                  }
0f78231bffb868 Johannes Berg          2009-12-01   985  
04ac3c0ee2c773 Felix Fietkau          2010-12-02   986                  if 
(!(info->flags & IEEE80211_TX_CTL_INJECTED) && acked)
0f78231bffb868 Johannes Berg          2009-12-01   987                          
ieee80211_frame_acked(sta, skb);
99ba2a14283be9 Johannes Berg          2010-11-24   988  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   989          } else if 
(wiphy_ext_feature_isset(local->hw.wiphy,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   990                          
                   NL80211_EXT_FEATURE_AIRTIME_FAIRNESS)) {
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   991                  struct 
ieee80211_sub_if_data *sdata;
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   992                  struct 
ieee80211_txq *txq;
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   993                  u32 
airtime;
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   994  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   995                  /* 
Account airtime to multicast queue */
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   996                  sdata = 
ieee80211_sdata_from_skb(local, skb);
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   997  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   998                  if 
(sdata && (txq = sdata->vif.txq)) {
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23   999                          
airtime = info->status.tx_time ?:
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1000                          
        ieee80211_calc_expected_tx_airtime(hw,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1001                          
                                           &sdata->vif,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1002                          
                                           NULL,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1003                          
                                           skb->len,
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1004                          
                                           false);
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1005  
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1006                          
ieee80211_register_airtime(txq, airtime, 0);
2433647bc8d983 Toke Høiland-Jørgensen 2021-06-23  1007                  }
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1008          }
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1009  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1010          /* SNMP counters
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1011           * Fragments 
are passed to low-level drivers as separate skbs, so these
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1012           * are actually 
fragments, not frames. Update frame counters only for
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1013           * the first 
fragment of the frame. */
5cf16616e152dd Sujith Manoharan       2014-12-10  1014          if 
((info->flags & IEEE80211_TX_STAT_ACK) ||
5cf16616e152dd Sujith Manoharan       2014-12-10  1015              
(info->flags & IEEE80211_TX_STAT_NOACK_TRANSMITTED)) {
adf5ace5d8161b Helmut Schaa           2011-12-08  1016                  if 
(ieee80211_is_first_frag(hdr->seq_ctrl)) {
c206ca670974ce Johannes Berg          2015-04-22  1017                          
I802_DEBUG_INC(local->dot11TransmittedFrameCount);
85b89af07d5095 Eliad Peller           2014-12-21  1018                          
if (is_multicast_ether_addr(ieee80211_get_DA(hdr)))
c206ca670974ce Johannes Berg          2015-04-22  1019                          
        I802_DEBUG_INC(local->dot11MulticastTransmittedFrameCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1020                          
if (retry_count > 0)
c206ca670974ce Johannes Berg          2015-04-22  1021                          
        I802_DEBUG_INC(local->dot11RetryCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1022                          
if (retry_count > 1)
c206ca670974ce Johannes Berg          2015-04-22  1023                          
        I802_DEBUG_INC(local->dot11MultipleRetryCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1024                  }
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1025  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1026                  /* This 
counter shall be incremented for an acknowledged MPDU
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1027                   * with 
an individual address in the address 1 field or an MPDU
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1028                   * with 
a multicast address in the address 1 field of type Data
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1029                   * or 
Management. */
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1030                  if 
(!is_multicast_ether_addr(hdr->addr1) ||
adf5ace5d8161b Helmut Schaa           2011-12-08  1031                      
ieee80211_is_data(fc) ||
adf5ace5d8161b Helmut Schaa           2011-12-08  1032                      
ieee80211_is_mgmt(fc))
c206ca670974ce Johannes Berg          2015-04-22  1033                          
I802_DEBUG_INC(local->dot11TransmittedFragmentCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1034          } else {
adf5ace5d8161b Helmut Schaa           2011-12-08  1035                  if 
(ieee80211_is_first_frag(hdr->seq_ctrl))
c206ca670974ce Johannes Berg          2015-04-22  1036                          
I802_DEBUG_INC(local->dot11FailedCount);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1037          }
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1038  
30b2f0be23fb40 Thomas Pedersen        2020-01-13  1039          if 
(ieee80211_is_any_nullfunc(fc) &&
08a5bdde381299 Thomas Pedersen        2019-11-18  1040              
ieee80211_has_pm(fc) &&
30686bf7f5b3c3 Johannes Berg          2015-06-02  1041              
ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS) &&
375177bf35efc0 Vivek Natarajan        2010-02-09  1042              
!(info->flags & IEEE80211_TX_CTL_INJECTED) &&
375177bf35efc0 Vivek Natarajan        2010-02-09  1043              
local->ps_sdata && !(local->scanning)) {
6e899fa027addf Bassem Dawood          2021-02-27  1044                  if 
(info->flags & IEEE80211_TX_STAT_ACK)
375177bf35efc0 Vivek Natarajan        2010-02-09  1045                          
local->ps_sdata->u.mgd.flags |=
375177bf35efc0 Vivek Natarajan        2010-02-09  1046                          
                IEEE80211_STA_NULLFUNC_ACKED;
6e899fa027addf Bassem Dawood          2021-02-27  1047                  
mod_timer(&local->dynamic_ps_timer,
6e899fa027addf Bassem Dawood          2021-02-27  1048                          
  jiffies + msecs_to_jiffies(10));
375177bf35efc0 Vivek Natarajan        2010-02-09  1049          }
375177bf35efc0 Vivek Natarajan        2010-02-09  1050  
8a2fbedcdc9bec Johannes Berg          2012-10-26  1051          
ieee80211_report_used_skb(local, skb, false);
a729cff8ad5120 Johannes Berg          2011-11-06  1052  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1053          /* this was a 
transmitted frame, but now we want to reuse it */
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1054          skb_orphan(skb);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1055  
eaf55530c94cb7 Felix Fietkau          2010-03-11  1056          /* Need to make 
a copy before skb->cb gets cleared */
eaf55530c94cb7 Felix Fietkau          2010-03-11  1057          send_to_cooked 
= !!(info->flags & IEEE80211_TX_CTL_INJECTED) ||
adf5ace5d8161b Helmut Schaa           2011-12-08  1058                          
 !(ieee80211_is_data(fc));
eaf55530c94cb7 Felix Fietkau          2010-03-11  1059  
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1060          /*
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1061           * This is a 
bit racy but we can avoid a lot of work
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1062           * with this 
test...
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1063           */
eaf55530c94cb7 Felix Fietkau          2010-03-11  1064          if 
(!local->monitors && (!send_to_cooked || !local->cooked_mntrs)) {
f02dff93e26bef Felix Fietkau          2020-09-08  1065                  if 
(status->free_list)
f02dff93e26bef Felix Fietkau          2020-09-08  1066                          
list_add_tail(&skb->list, status->free_list);
f02dff93e26bef Felix Fietkau          2020-09-08  1067                  else
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1068                          
dev_kfree_skb(skb);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1069                  return;
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1070          }
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1071  
4dc792b8f098ab Helmut Schaa           2015-09-02  1072          /* send to 
monitor interfaces */
b7b2e8caa08c30 John Crispin           2019-07-14  1073          
ieee80211_tx_monitor(local, skb, sband, retry_count, shift,
b7b2e8caa08c30 John Crispin           2019-07-14  1074                          
     send_to_cooked, status);
fe7a5d5c1ad659 Johannes Berg          2009-11-18  1075  }
5fe49a9d11644f Felix Fietkau          2017-04-26  1076  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to