Lets make wifi fast again!
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>,
	linux-wireless@vger.kernel.org
Cc: kbuild-all@lists.01.org,
	"Toke Høiland-Jørgensen" <toke@redhat.com>,
	make-wifi-fast@lists.bufferbloat.net,
	"Felix Fietkau" <nbd@nbd.name>,
	"Rajkumar Manoharan" <rmanohar@codeaurora.org>,
	"Kan Yan" <kyan@google.com>, "Yibo Zhao" <yiboz@codeaurora.org>
Subject: Re: [Make-wifi-fast] [PATCH mac80211-next v6] mac80211: Switch to a virtual time-based airtime scheduler
Date: Fri, 19 Mar 2021 07:31:51 +0800	[thread overview]
Message-ID: <202103190733.EbIgIv5z-lkp@intel.com> (raw)
In-Reply-To: <20210318213142.138707-1-toke@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 9879 bytes --]

Hi "Toke,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mac80211-next/master]

url:    https://github.com/0day-ci/linux/commits/Toke-H-iland-J-rgensen/mac80211-Switch-to-a-virtual-time-based-airtime-scheduler/20210319-053617
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git master
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 9.3.0
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
        # https://github.com/0day-ci/linux/commit/23d429aa540736e04237eb11c63c03d929653774
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Toke-H-iland-J-rgensen/mac80211-Switch-to-a-virtual-time-based-airtime-scheduler/20210319-053617
        git checkout 23d429aa540736e04237eb11c63c03d929653774
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=xtensa 

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

All warnings (new ones prefixed by >>):

   net/mac80211/cfg.c: In function 'sta_apply_parameters':
>> net/mac80211/cfg.c:1452:26: warning: variable 'old_weight' set but not used [-Wunused-but-set-variable]
    1452 |  u32 mask, set, tid, ac, old_weight;
         |                          ^~~~~~~~~~


vim +/old_weight +1452 net/mac80211/cfg.c

  1444	
  1445	static int sta_apply_parameters(struct ieee80211_local *local,
  1446					struct sta_info *sta,
  1447					struct station_parameters *params)
  1448	{
  1449		int ret = 0;
  1450		struct ieee80211_supported_band *sband;
  1451		struct ieee80211_sub_if_data *sdata = sta->sdata;
> 1452		u32 mask, set, tid, ac, old_weight;
  1453		struct txq_info *txqi;
  1454	
  1455		sband = ieee80211_get_sband(sdata);
  1456		if (!sband)
  1457			return -EINVAL;
  1458	
  1459		mask = params->sta_flags_mask;
  1460		set = params->sta_flags_set;
  1461	
  1462		if (ieee80211_vif_is_mesh(&sdata->vif)) {
  1463			/*
  1464			 * In mesh mode, ASSOCIATED isn't part of the nl80211
  1465			 * API but must follow AUTHENTICATED for driver state.
  1466			 */
  1467			if (mask & BIT(NL80211_STA_FLAG_AUTHENTICATED))
  1468				mask |= BIT(NL80211_STA_FLAG_ASSOCIATED);
  1469			if (set & BIT(NL80211_STA_FLAG_AUTHENTICATED))
  1470				set |= BIT(NL80211_STA_FLAG_ASSOCIATED);
  1471		} else if (test_sta_flag(sta, WLAN_STA_TDLS_PEER)) {
  1472			/*
  1473			 * TDLS -- everything follows authorized, but
  1474			 * only becoming authorized is possible, not
  1475			 * going back
  1476			 */
  1477			if (set & BIT(NL80211_STA_FLAG_AUTHORIZED)) {
  1478				set |= BIT(NL80211_STA_FLAG_AUTHENTICATED) |
  1479				       BIT(NL80211_STA_FLAG_ASSOCIATED);
  1480				mask |= BIT(NL80211_STA_FLAG_AUTHENTICATED) |
  1481					BIT(NL80211_STA_FLAG_ASSOCIATED);
  1482			}
  1483		}
  1484	
  1485		if (mask & BIT(NL80211_STA_FLAG_WME) &&
  1486		    local->hw.queues >= IEEE80211_NUM_ACS)
  1487			sta->sta.wme = set & BIT(NL80211_STA_FLAG_WME);
  1488	
  1489		/* auth flags will be set later for TDLS,
  1490		 * and for unassociated stations that move to assocaited */
  1491		if (!test_sta_flag(sta, WLAN_STA_TDLS_PEER) &&
  1492		    !((mask & BIT(NL80211_STA_FLAG_ASSOCIATED)) &&
  1493		      (set & BIT(NL80211_STA_FLAG_ASSOCIATED)))) {
  1494			ret = sta_apply_auth_flags(local, sta, mask, set);
  1495			if (ret)
  1496				return ret;
  1497		}
  1498	
  1499		if (mask & BIT(NL80211_STA_FLAG_SHORT_PREAMBLE)) {
  1500			if (set & BIT(NL80211_STA_FLAG_SHORT_PREAMBLE))
  1501				set_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE);
  1502			else
  1503				clear_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE);
  1504		}
  1505	
  1506		if (mask & BIT(NL80211_STA_FLAG_MFP)) {
  1507			sta->sta.mfp = !!(set & BIT(NL80211_STA_FLAG_MFP));
  1508			if (set & BIT(NL80211_STA_FLAG_MFP))
  1509				set_sta_flag(sta, WLAN_STA_MFP);
  1510			else
  1511				clear_sta_flag(sta, WLAN_STA_MFP);
  1512		}
  1513	
  1514		if (mask & BIT(NL80211_STA_FLAG_TDLS_PEER)) {
  1515			if (set & BIT(NL80211_STA_FLAG_TDLS_PEER))
  1516				set_sta_flag(sta, WLAN_STA_TDLS_PEER);
  1517			else
  1518				clear_sta_flag(sta, WLAN_STA_TDLS_PEER);
  1519		}
  1520	
  1521		/* mark TDLS channel switch support, if the AP allows it */
  1522		if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) &&
  1523		    !sdata->u.mgd.tdls_chan_switch_prohibited &&
  1524		    params->ext_capab_len >= 4 &&
  1525		    params->ext_capab[3] & WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH)
  1526			set_sta_flag(sta, WLAN_STA_TDLS_CHAN_SWITCH);
  1527	
  1528		if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) &&
  1529		    !sdata->u.mgd.tdls_wider_bw_prohibited &&
  1530		    ieee80211_hw_check(&local->hw, TDLS_WIDER_BW) &&
  1531		    params->ext_capab_len >= 8 &&
  1532		    params->ext_capab[7] & WLAN_EXT_CAPA8_TDLS_WIDE_BW_ENABLED)
  1533			set_sta_flag(sta, WLAN_STA_TDLS_WIDER_BW);
  1534	
  1535		if (params->sta_modify_mask & STATION_PARAM_APPLY_UAPSD) {
  1536			sta->sta.uapsd_queues = params->uapsd_queues;
  1537			sta->sta.max_sp = params->max_sp;
  1538		}
  1539	
  1540		/* The sender might not have sent the last bit, consider it to be 0 */
  1541		if (params->ext_capab_len >= 8) {
  1542			u8 val = (params->ext_capab[7] &
  1543				  WLAN_EXT_CAPA8_MAX_MSDU_IN_AMSDU_LSB) >> 7;
  1544	
  1545			/* we did get all the bits, take the MSB as well */
  1546			if (params->ext_capab_len >= 9) {
  1547				u8 val_msb = params->ext_capab[8] &
  1548					WLAN_EXT_CAPA9_MAX_MSDU_IN_AMSDU_MSB;
  1549				val_msb <<= 1;
  1550				val |= val_msb;
  1551			}
  1552	
  1553			switch (val) {
  1554			case 1:
  1555				sta->sta.max_amsdu_subframes = 32;
  1556				break;
  1557			case 2:
  1558				sta->sta.max_amsdu_subframes = 16;
  1559				break;
  1560			case 3:
  1561				sta->sta.max_amsdu_subframes = 8;
  1562				break;
  1563			default:
  1564				sta->sta.max_amsdu_subframes = 0;
  1565			}
  1566		}
  1567	
  1568		/*
  1569		 * cfg80211 validates this (1-2007) and allows setting the AID
  1570		 * only when creating a new station entry
  1571		 */
  1572		if (params->aid)
  1573			sta->sta.aid = params->aid;
  1574	
  1575		/*
  1576		 * Some of the following updates would be racy if called on an
  1577		 * existing station, via ieee80211_change_station(). However,
  1578		 * all such changes are rejected by cfg80211 except for updates
  1579		 * changing the supported rates on an existing but not yet used
  1580		 * TDLS peer.
  1581		 */
  1582	
  1583		if (params->listen_interval >= 0)
  1584			sta->listen_interval = params->listen_interval;
  1585	
  1586		if (params->sta_modify_mask & STATION_PARAM_APPLY_STA_TXPOWER) {
  1587			sta->sta.txpwr.type = params->txpwr.type;
  1588			if (params->txpwr.type == NL80211_TX_POWER_LIMITED)
  1589				sta->sta.txpwr.power = params->txpwr.power;
  1590			ret = drv_sta_set_txpwr(local, sdata, sta);
  1591			if (ret)
  1592				return ret;
  1593		}
  1594	
  1595		if (params->supported_rates && params->supported_rates_len) {
  1596			ieee80211_parse_bitrates(&sdata->vif.bss_conf.chandef,
  1597						 sband, params->supported_rates,
  1598						 params->supported_rates_len,
  1599						 &sta->sta.supp_rates[sband->band]);
  1600		}
  1601	
  1602		if (params->ht_capa)
  1603			ieee80211_ht_cap_ie_to_sta_ht_cap(sdata, sband,
  1604							  params->ht_capa, sta);
  1605	
  1606		/* VHT can override some HT caps such as the A-MSDU max length */
  1607		if (params->vht_capa)
  1608			ieee80211_vht_cap_ie_to_sta_vht_cap(sdata, sband,
  1609							    params->vht_capa, sta);
  1610	
  1611		if (params->he_capa)
  1612			ieee80211_he_cap_ie_to_sta_he_cap(sdata, sband,
  1613							  (void *)params->he_capa,
  1614							  params->he_capa_len,
  1615							  (void *)params->he_6ghz_capa,
  1616							  sta);
  1617	
  1618		if (params->opmode_notif_used) {
  1619			/* returned value is only needed for rc update, but the
  1620			 * rc isn't initialized here yet, so ignore it
  1621			 */
  1622			__ieee80211_vht_handle_opmode(sdata, sta, params->opmode_notif,
  1623						      sband->band);
  1624		}
  1625	
  1626		if (params->support_p2p_ps >= 0)
  1627			sta->sta.support_p2p_ps = params->support_p2p_ps;
  1628	
  1629		if (ieee80211_vif_is_mesh(&sdata->vif))
  1630			sta_apply_mesh_params(local, sta, params);
  1631	
  1632		if (params->airtime_weight) {
  1633			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) {
  1634				struct airtime_sched_info *air_sched = &local->airtime[ac];
  1635				struct airtime_info *air_info = &sta->airtime[ac];
  1636	
  1637				spin_lock_bh(&air_sched->lock);
  1638				for (tid = 0; tid < IEEE80211_NUM_TIDS + 1; tid++) {
  1639					if (air_info->weight == params->airtime_weight ||
  1640					    !sta->sta.txq[tid] ||
  1641					    ac != ieee80211_ac_from_tid(tid))
  1642						continue;
  1643	
  1644					old_weight = air_info->weight;
  1645					airtime_weight_set(air_info, params->airtime_weight);
  1646	
  1647					txqi = to_txq_info(sta->sta.txq[tid]);
  1648					if (RB_EMPTY_NODE(&txqi->schedule_order))
  1649						continue;
  1650	
  1651					ieee80211_update_airtime_weight(local, air_sched, 0, true);
  1652				}
  1653				spin_unlock_bh(&air_sched->lock);
  1654			}
  1655		}
  1656	
  1657		/* set the STA state after all sta info from usermode has been set */
  1658		if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) ||
  1659		    set & BIT(NL80211_STA_FLAG_ASSOCIATED)) {
  1660			ret = sta_apply_auth_flags(local, sta, mask, set);
  1661			if (ret)
  1662				return ret;
  1663		}
  1664	
  1665		return 0;
  1666	}
  1667	

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 67129 bytes --]

      parent reply	other threads:[~2021-03-18 23:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-18 21:31 Toke Høiland-Jørgensen
2021-03-18 21:57 ` Felix Fietkau
2021-03-18 22:55   ` Toke Høiland-Jørgensen
2021-03-31 15:07   ` Toke Høiland-Jørgensen
2021-03-18 23:31 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/make-wifi-fast.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202103190733.EbIgIv5z-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=kyan@google.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    --cc=nbd@nbd.name \
    --cc=rmanohar@codeaurora.org \
    --cc=toke@redhat.com \
    --cc=yiboz@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox