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 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@lists.01.org