Search Linux Wireless

Re: [PATCH 1/6] mac80211: minstrel_ht: use bitfields to encode rate indexes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Felix,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mac80211-next/master]
[also build test WARNING on next-20210125]
[cannot apply to mac80211/master v5.11-rc5]
[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]

url:    https://github.com/0day-ci/linux/commits/Felix-Fietkau/mac80211-minstrel_ht-use-bitfields-to-encode-rate-indexes/20210125-210635
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git master
config: x86_64-randconfig-a015-20210125 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 12d0753aca22896fda2cf76781b0ee0524d55065)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/8a2d01887013f71806262345f71766d6518e3552
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Felix-Fietkau/mac80211-minstrel_ht-use-bitfields-to-encode-rate-indexes/20210125-210635
        git checkout 8a2d01887013f71806262345f71766d6518e3552
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> net/mac80211/rc80211_minstrel_ht.c:862:11: warning: variable 'group' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
           else if (mi->supported[MINSTREL_OFDM_GROUP])
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/rc80211_minstrel_ht.c:865:18: note: uninitialized use occurs here
           index = MI_RATE(group, 0);
                           ^~~~~
   net/mac80211/rc80211_minstrel_ht.h:66:34: note: expanded from macro 'MI_RATE'
           (FIELD_PREP(MI_RATE_GROUP_MASK, _group) |       \
                                           ^~~~~~
   include/linux/bitfield.h:95:20: note: expanded from macro 'FIELD_PREP'
                   ((typeof(_mask))(_val) << __bf_shf(_mask)) & (_mask);   \
                                    ^~~~
   net/mac80211/rc80211_minstrel_ht.c:862:7: note: remove the 'if' if its condition is always true
           else if (mi->supported[MINSTREL_OFDM_GROUP])
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/mac80211/rc80211_minstrel_ht.c:825:11: note: initialize the variable 'group' to silence this warning
           int group, i, j, cur_prob;
                    ^
                     = 0
   1 warning generated.


vim +862 net/mac80211/rc80211_minstrel_ht.c

cbda98c710d273b Felix Fietkau 2021-01-15  809  
ec8aa669b8393b6 Felix Fietkau 2010-05-13  810  /*
ec8aa669b8393b6 Felix Fietkau 2010-05-13  811   * Update rate statistics and select new primary rates
ec8aa669b8393b6 Felix Fietkau 2010-05-13  812   *
ec8aa669b8393b6 Felix Fietkau 2010-05-13  813   * Rules for rate selection:
ec8aa669b8393b6 Felix Fietkau 2010-05-13  814   *  - max_prob_rate must use only one stream, as a tradeoff between delivery
ec8aa669b8393b6 Felix Fietkau 2010-05-13  815   *    probability and throughput during strong fluctuations
5935839ad735837 Thomas Huehn  2014-09-09  816   *  - as long as the max prob rate has a probability of more than 75%, pick
ec8aa669b8393b6 Felix Fietkau 2010-05-13  817   *    higher throughput rates, even if the probablity is a bit lower
ec8aa669b8393b6 Felix Fietkau 2010-05-13  818   */
ec8aa669b8393b6 Felix Fietkau 2010-05-13  819  static void
48cb39522a9d4d4 Felix Fietkau 2019-08-20  820  minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
48cb39522a9d4d4 Felix Fietkau 2019-08-20  821  			 bool sample)
ec8aa669b8393b6 Felix Fietkau 2010-05-13  822  {
ec8aa669b8393b6 Felix Fietkau 2010-05-13  823  	struct minstrel_mcs_group_data *mg;
9134073bc693633 Thomas Huehn  2015-03-24  824  	struct minstrel_rate_stats *mrs;
50e55a8ea76fb59 Thomas Huehn  2015-03-24  825  	int group, i, j, cur_prob;
d4d141cae804a43 Karl Beldan   2014-10-20  826  	u16 tmp_mcs_tp_rate[MAX_THR_RATES], tmp_group_tp_rate[MAX_THR_RATES];
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  827  	u16 tmp_legacy_tp_rate[MAX_THR_RATES], tmp_max_prob_rate;
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  828  	u16 index;
a7844a53846017c Felix Fietkau 2021-01-15  829  	bool ht_supported = mi->sta->ht_cap.ht_supported;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  830  
48cb39522a9d4d4 Felix Fietkau 2019-08-20  831  	mi->sample_mode = MINSTREL_SAMPLE_IDLE;
48cb39522a9d4d4 Felix Fietkau 2019-08-20  832  
48cb39522a9d4d4 Felix Fietkau 2019-08-20  833  	if (sample) {
48cb39522a9d4d4 Felix Fietkau 2019-08-20  834  		mi->total_packets_cur = mi->total_packets -
48cb39522a9d4d4 Felix Fietkau 2019-08-20  835  					mi->total_packets_last;
48cb39522a9d4d4 Felix Fietkau 2019-08-20  836  		mi->total_packets_last = mi->total_packets;
48cb39522a9d4d4 Felix Fietkau 2019-08-20  837  	}
48cb39522a9d4d4 Felix Fietkau 2019-08-20  838  	if (!mp->sample_switch)
48cb39522a9d4d4 Felix Fietkau 2019-08-20  839  		sample = false;
48cb39522a9d4d4 Felix Fietkau 2019-08-20  840  	if (mi->total_packets_cur < SAMPLE_SWITCH_THR && mp->sample_switch != 1)
48cb39522a9d4d4 Felix Fietkau 2019-08-20  841  	    sample = false;
48cb39522a9d4d4 Felix Fietkau 2019-08-20  842  
ec8aa669b8393b6 Felix Fietkau 2010-05-13  843  	if (mi->ampdu_packets > 0) {
77f7ffdc335de85 Felix Fietkau 2019-01-16  844  		if (!ieee80211_hw_check(mp->hw, TX_STATUS_NO_AMPDU_LEN))
ec8aa669b8393b6 Felix Fietkau 2010-05-13  845  			mi->avg_ampdu_len = minstrel_ewma(mi->avg_ampdu_len,
77f7ffdc335de85 Felix Fietkau 2019-01-16  846  				MINSTREL_FRAC(mi->ampdu_len, mi->ampdu_packets),
77f7ffdc335de85 Felix Fietkau 2019-01-16  847  					      EWMA_LEVEL);
77f7ffdc335de85 Felix Fietkau 2019-01-16  848  		else
77f7ffdc335de85 Felix Fietkau 2019-01-16  849  			mi->avg_ampdu_len = 0;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  850  		mi->ampdu_len = 0;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  851  		mi->ampdu_packets = 0;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  852  	}
ec8aa669b8393b6 Felix Fietkau 2010-05-13  853  
ec8aa669b8393b6 Felix Fietkau 2010-05-13  854  	mi->sample_slow = 0;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  855  	mi->sample_count = 0;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  856  
21f7981b4bd9048 Felix Fietkau 2019-08-20  857  	memset(tmp_mcs_tp_rate, 0, sizeof(tmp_mcs_tp_rate));
a7844a53846017c Felix Fietkau 2021-01-15  858  	memset(tmp_legacy_tp_rate, 0, sizeof(tmp_legacy_tp_rate));
8a2d01887013f71 Felix Fietkau 2021-01-24  859  
21f7981b4bd9048 Felix Fietkau 2019-08-20  860  	if (mi->supported[MINSTREL_CCK_GROUP])
8a2d01887013f71 Felix Fietkau 2021-01-24  861  		group = MINSTREL_CCK_GROUP;
a7844a53846017c Felix Fietkau 2021-01-15 @862  	else if (mi->supported[MINSTREL_OFDM_GROUP])
8a2d01887013f71 Felix Fietkau 2021-01-24  863  		group = MINSTREL_OFDM_GROUP;
8a2d01887013f71 Felix Fietkau 2021-01-24  864  
8a2d01887013f71 Felix Fietkau 2021-01-24  865  	index = MI_RATE(group, 0);
a7844a53846017c Felix Fietkau 2021-01-15  866  	for (j = 0; j < ARRAY_SIZE(tmp_legacy_tp_rate); j++)
8a2d01887013f71 Felix Fietkau 2021-01-24  867  		tmp_legacy_tp_rate[j] = index;
21f7981b4bd9048 Felix Fietkau 2019-08-20  868  
21f7981b4bd9048 Felix Fietkau 2019-08-20  869  	if (mi->supported[MINSTREL_VHT_GROUP_0])
8a2d01887013f71 Felix Fietkau 2021-01-24  870  		group = MINSTREL_VHT_GROUP_0;
a7844a53846017c Felix Fietkau 2021-01-15  871  	else if (ht_supported)
8a2d01887013f71 Felix Fietkau 2021-01-24  872  		group = MINSTREL_HT_GROUP_0;
a7844a53846017c Felix Fietkau 2021-01-15  873  	else if (mi->supported[MINSTREL_CCK_GROUP])
8a2d01887013f71 Felix Fietkau 2021-01-24  874  		group = MINSTREL_CCK_GROUP;
a7844a53846017c Felix Fietkau 2021-01-15  875  	else
8a2d01887013f71 Felix Fietkau 2021-01-24  876  		group = MINSTREL_OFDM_GROUP;
21f7981b4bd9048 Felix Fietkau 2019-08-20  877  
8a2d01887013f71 Felix Fietkau 2021-01-24  878  	index = MI_RATE(group, 0);
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  879  	tmp_max_prob_rate = index;
21f7981b4bd9048 Felix Fietkau 2019-08-20  880  	for (j = 0; j < ARRAY_SIZE(tmp_mcs_tp_rate); j++)
21f7981b4bd9048 Felix Fietkau 2019-08-20  881  		tmp_mcs_tp_rate[j] = index;
c2eb5b0f342c9b1 Karl Beldan   2013-04-18  882  
5935839ad735837 Thomas Huehn  2014-09-09  883  	/* Find best rate sets within all MCS groups*/
5935839ad735837 Thomas Huehn  2014-09-09  884  	for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {
a7844a53846017c Felix Fietkau 2021-01-15  885  		u16 *tp_rate = tmp_mcs_tp_rate;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  886  
ec8aa669b8393b6 Felix Fietkau 2010-05-13  887  		mg = &mi->groups[group];
41d085835d3d225 Felix Fietkau 2016-12-14  888  		if (!mi->supported[group])
ec8aa669b8393b6 Felix Fietkau 2010-05-13  889  			continue;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  890  
ec8aa669b8393b6 Felix Fietkau 2010-05-13  891  		mi->sample_count++;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  892  
5935839ad735837 Thomas Huehn  2014-09-09  893  		/* (re)Initialize group rate indexes */
5935839ad735837 Thomas Huehn  2014-09-09  894  		for(j = 0; j < MAX_THR_RATES; j++)
8a2d01887013f71 Felix Fietkau 2021-01-24  895  			tmp_group_tp_rate[j] = MI_RATE(group, 0);
5935839ad735837 Thomas Huehn  2014-09-09  896  
a7844a53846017c Felix Fietkau 2021-01-15  897  		if (group == MINSTREL_CCK_GROUP && ht_supported)
a7844a53846017c Felix Fietkau 2021-01-15  898  			tp_rate = tmp_legacy_tp_rate;
a7844a53846017c Felix Fietkau 2021-01-15  899  
ec8aa669b8393b6 Felix Fietkau 2010-05-13  900  		for (i = 0; i < MCS_GROUP_RATES; i++) {
41d085835d3d225 Felix Fietkau 2016-12-14  901  			if (!(mi->supported[group] & BIT(i)))
ec8aa669b8393b6 Felix Fietkau 2010-05-13  902  				continue;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  903  
8a2d01887013f71 Felix Fietkau 2021-01-24  904  			index = MI_RATE(group, i);
351df099721e02e Karl Beldan   2013-11-13  905  
9134073bc693633 Thomas Huehn  2015-03-24  906  			mrs = &mg->rates[i];
9134073bc693633 Thomas Huehn  2015-03-24  907  			mrs->retry_updated = false;
cbda98c710d273b Felix Fietkau 2021-01-15  908  			minstrel_ht_calc_rate_stats(mp, mrs);
5f63afe0288d955 Felix Fietkau 2019-10-08  909  			cur_prob = mrs->prob_avg;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  910  
50e55a8ea76fb59 Thomas Huehn  2015-03-24  911  			if (minstrel_ht_get_tp_avg(mi, group, i, cur_prob) == 0)
ec8aa669b8393b6 Felix Fietkau 2010-05-13  912  				continue;
ec8aa669b8393b6 Felix Fietkau 2010-05-13  913  
5935839ad735837 Thomas Huehn  2014-09-09  914  			/* Find max throughput rate set */
a7844a53846017c Felix Fietkau 2021-01-15  915  			minstrel_ht_sort_best_tp_rates(mi, index, tp_rate);
ec8aa669b8393b6 Felix Fietkau 2010-05-13  916  
5935839ad735837 Thomas Huehn  2014-09-09  917  			/* Find max throughput rate set within a group */
5935839ad735837 Thomas Huehn  2014-09-09  918  			minstrel_ht_sort_best_tp_rates(mi, index,
5935839ad735837 Thomas Huehn  2014-09-09  919  						       tmp_group_tp_rate);
ec8aa669b8393b6 Felix Fietkau 2010-05-13  920  		}
ec8aa669b8393b6 Felix Fietkau 2010-05-13  921  
5935839ad735837 Thomas Huehn  2014-09-09  922  		memcpy(mg->max_group_tp_rate, tmp_group_tp_rate,
5935839ad735837 Thomas Huehn  2014-09-09  923  		       sizeof(mg->max_group_tp_rate));
ec8aa669b8393b6 Felix Fietkau 2010-05-13  924  	}
ec8aa669b8393b6 Felix Fietkau 2010-05-13  925  
5935839ad735837 Thomas Huehn  2014-09-09  926  	/* Assign new rate set per sta */
a7844a53846017c Felix Fietkau 2021-01-15  927  	minstrel_ht_assign_best_tp_rates(mi, tmp_mcs_tp_rate,
a7844a53846017c Felix Fietkau 2021-01-15  928  					 tmp_legacy_tp_rate);
5935839ad735837 Thomas Huehn  2014-09-09  929  	memcpy(mi->max_tp_rate, tmp_mcs_tp_rate, sizeof(mi->max_tp_rate));
ec8aa669b8393b6 Felix Fietkau 2010-05-13  930  
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  931  	for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  932  		if (!mi->supported[group])
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  933  			continue;
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  934  
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  935  		mg = &mi->groups[group];
8a2d01887013f71 Felix Fietkau 2021-01-24  936  		mg->max_group_prob_rate = MI_RATE(group, 0);
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  937  
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  938  		for (i = 0; i < MCS_GROUP_RATES; i++) {
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  939  			if (!(mi->supported[group] & BIT(i)))
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  940  				continue;
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  941  
8a2d01887013f71 Felix Fietkau 2021-01-24  942  			index = MI_RATE(group, i);
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  943  
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  944  			/* Find max probability rate per group and global */
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  945  			minstrel_ht_set_best_prob_rate(mi, &tmp_max_prob_rate,
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  946  						       index);
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  947  		}
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  948  	}
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  949  
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  950  	mi->max_prob_rate = tmp_max_prob_rate;
a7fca4e4037f7e3 Felix Fietkau 2021-01-15  951  
5935839ad735837 Thomas Huehn  2014-09-09  952  	/* Try to increase robustness of max_prob_rate*/
5935839ad735837 Thomas Huehn  2014-09-09  953  	minstrel_ht_prob_rate_reduce_streams(mi);
a299c6d591f8f6a Felix Fietkau 2013-03-02  954  
eeafcb0c80c81d6 Felix Fietkau 2021-01-15  955  	/* try to sample half of all available rates during each interval */
eeafcb0c80c81d6 Felix Fietkau 2021-01-15  956  	mi->sample_count *= 4;
a299c6d591f8f6a Felix Fietkau 2013-03-02  957  
48cb39522a9d4d4 Felix Fietkau 2019-08-20  958  	if (sample)
48cb39522a9d4d4 Felix Fietkau 2019-08-20  959  		minstrel_ht_rate_sample_switch(mp, mi);
48cb39522a9d4d4 Felix Fietkau 2019-08-20  960  

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux