All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: Rajkumar Manoharan <rmanohar@codeaurora.org>
Cc: kbuild-all@01.org, linux-wireless@vger.kernel.org,
	ath10k@lists.infradead.org, make-wifi-fast@lists.bufferbloat.net,
	"Toke Høiland-Jørgensen" <toke@toke.dk>,
	"Louie Lu" <git@louie.lu>,
	"Rajkumar Manoharan" <rmanohar@codeaurora.org>
Subject: Re: [PATCH v4 3/6] mac80211: Add airtime accounting and scheduling to TXQs
Date: Wed, 19 Dec 2018 08:47:09 +0800	[thread overview]
Message-ID: <201812190844.itxzWYQT%fengguang.wu@intel.com> (raw)
In-Reply-To: <1545172374-1072-4-git-send-email-rmanohar@codeaurora.org>

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

Hi Toke,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mac80211/master]
[also build test WARNING on v4.20-rc7]
[cannot apply to next-20181218]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Rajkumar-Manoharan/Move-TXQ-scheduling-and-airtime-fairness-into-mac80211/20181219-080126
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git master
config: i386-randconfig-x001-201850 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/bitops.h:5:0,
                    from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/module.h:9,
                    from net/mac80211/sta_info.c:13:
   net/mac80211/sta_info.c: In function 'sta_set_sinfo':
   include/linux/bits.h:6:24: warning: left shift count >= width of type [-Wshift-count-overflow]
    #define BIT(nr)   (1UL << (nr))
                           ^
>> net/mac80211/sta_info.c:2215:20: note: in expansion of macro 'BIT'
      sinfo->filled |= BIT(NL80211_STA_INFO_RX_DURATION);
                       ^~~
   include/linux/bits.h:6:24: warning: left shift count >= width of type [-Wshift-count-overflow]
    #define BIT(nr)   (1UL << (nr))
                           ^
   net/mac80211/sta_info.c:2221:20: note: in expansion of macro 'BIT'
      sinfo->filled |= BIT(NL80211_STA_INFO_TX_DURATION);
                       ^~~
   include/linux/bits.h:6:24: warning: left shift count >= width of type [-Wshift-count-overflow]
    #define BIT(nr)   (1UL << (nr))
                           ^
   net/mac80211/sta_info.c:2226:20: note: in expansion of macro 'BIT'
      sinfo->filled |= BIT(NL80211_STA_INFO_AIRTIME_WEIGHT);
                       ^~~

vim +/BIT +2215 net/mac80211/sta_info.c

  2120	
  2121	void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
  2122			   bool tidstats)
  2123	{
  2124		struct ieee80211_sub_if_data *sdata = sta->sdata;
  2125		struct ieee80211_local *local = sdata->local;
  2126		u32 thr = 0;
  2127		int i, ac, cpu;
  2128		struct ieee80211_sta_rx_stats *last_rxstats;
  2129	
  2130		last_rxstats = sta_get_last_rx_stats(sta);
  2131	
  2132		sinfo->generation = sdata->local->sta_generation;
  2133	
  2134		/* do before driver, so beacon filtering drivers have a
  2135		 * chance to e.g. just add the number of filtered beacons
  2136		 * (or just modify the value entirely, of course)
  2137		 */
  2138		if (sdata->vif.type == NL80211_IFTYPE_STATION)
  2139			sinfo->rx_beacon = sdata->u.mgd.count_beacon_signal;
  2140	
  2141		drv_sta_statistics(local, sdata, &sta->sta, sinfo);
  2142	
  2143		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_INACTIVE_TIME) |
  2144				 BIT_ULL(NL80211_STA_INFO_STA_FLAGS) |
  2145				 BIT_ULL(NL80211_STA_INFO_BSS_PARAM) |
  2146				 BIT_ULL(NL80211_STA_INFO_CONNECTED_TIME) |
  2147				 BIT_ULL(NL80211_STA_INFO_RX_DROP_MISC);
  2148	
  2149		if (sdata->vif.type == NL80211_IFTYPE_STATION) {
  2150			sinfo->beacon_loss_count = sdata->u.mgd.beacon_loss_count;
  2151			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_LOSS);
  2152		}
  2153	
  2154		sinfo->connected_time = ktime_get_seconds() - sta->last_connected;
  2155		sinfo->inactive_time =
  2156			jiffies_to_msecs(jiffies - ieee80211_sta_last_active(sta));
  2157	
  2158		if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_TX_BYTES64) |
  2159				       BIT_ULL(NL80211_STA_INFO_TX_BYTES)))) {
  2160			sinfo->tx_bytes = 0;
  2161			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2162				sinfo->tx_bytes += sta->tx_stats.bytes[ac];
  2163			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BYTES64);
  2164		}
  2165	
  2166		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_PACKETS))) {
  2167			sinfo->tx_packets = 0;
  2168			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2169				sinfo->tx_packets += sta->tx_stats.packets[ac];
  2170			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS);
  2171		}
  2172	
  2173		if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_RX_BYTES64) |
  2174				       BIT_ULL(NL80211_STA_INFO_RX_BYTES)))) {
  2175			sinfo->rx_bytes += sta_get_stats_bytes(&sta->rx_stats);
  2176	
  2177			if (sta->pcpu_rx_stats) {
  2178				for_each_possible_cpu(cpu) {
  2179					struct ieee80211_sta_rx_stats *cpurxs;
  2180	
  2181					cpurxs = per_cpu_ptr(sta->pcpu_rx_stats, cpu);
  2182					sinfo->rx_bytes += sta_get_stats_bytes(cpurxs);
  2183				}
  2184			}
  2185	
  2186			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BYTES64);
  2187		}
  2188	
  2189		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_PACKETS))) {
  2190			sinfo->rx_packets = sta->rx_stats.packets;
  2191			if (sta->pcpu_rx_stats) {
  2192				for_each_possible_cpu(cpu) {
  2193					struct ieee80211_sta_rx_stats *cpurxs;
  2194	
  2195					cpurxs = per_cpu_ptr(sta->pcpu_rx_stats, cpu);
  2196					sinfo->rx_packets += cpurxs->packets;
  2197				}
  2198			}
  2199			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS);
  2200		}
  2201	
  2202		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_RETRIES))) {
  2203			sinfo->tx_retries = sta->status_stats.retry_count;
  2204			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_RETRIES);
  2205		}
  2206	
  2207		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_FAILED))) {
  2208			sinfo->tx_failed = sta->status_stats.retry_failed;
  2209			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED);
  2210		}
  2211	
  2212		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_DURATION))) {
  2213			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2214				sinfo->rx_duration += sta->airtime[ac].rx_airtime;
> 2215			sinfo->filled |= BIT(NL80211_STA_INFO_RX_DURATION);
  2216		}
  2217	
  2218		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_DURATION))) {
  2219			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2220				sinfo->tx_duration += sta->airtime[ac].tx_airtime;
  2221			sinfo->filled |= BIT(NL80211_STA_INFO_TX_DURATION);
  2222		}
  2223	
  2224		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT))) {
  2225			sinfo->airtime_weight = sta->airtime_weight;
  2226			sinfo->filled |= BIT(NL80211_STA_INFO_AIRTIME_WEIGHT);
  2227		}
  2228	
  2229		sinfo->rx_dropped_misc = sta->rx_stats.dropped;
  2230		if (sta->pcpu_rx_stats) {
  2231			for_each_possible_cpu(cpu) {
  2232				struct ieee80211_sta_rx_stats *cpurxs;
  2233	
  2234				cpurxs = per_cpu_ptr(sta->pcpu_rx_stats, cpu);
  2235				sinfo->rx_dropped_misc += cpurxs->dropped;
  2236			}
  2237		}
  2238	
  2239		if (sdata->vif.type == NL80211_IFTYPE_STATION &&
  2240		    !(sdata->vif.driver_flags & IEEE80211_VIF_BEACON_FILTER)) {
  2241			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_RX) |
  2242					 BIT_ULL(NL80211_STA_INFO_BEACON_SIGNAL_AVG);
  2243			sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif);
  2244		}
  2245	
  2246		if (ieee80211_hw_check(&sta->local->hw, SIGNAL_DBM) ||
  2247		    ieee80211_hw_check(&sta->local->hw, SIGNAL_UNSPEC)) {
  2248			if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL))) {
  2249				sinfo->signal = (s8)last_rxstats->last_signal;
  2250				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL);
  2251			}
  2252	
  2253			if (!sta->pcpu_rx_stats &&
  2254			    !(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG))) {
  2255				sinfo->signal_avg =
  2256					-ewma_signal_read(&sta->rx_stats_avg.signal);
  2257				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG);
  2258			}
  2259		}
  2260	
  2261		/* for the average - if pcpu_rx_stats isn't set - rxstats must point to
  2262		 * the sta->rx_stats struct, so the check here is fine with and without
  2263		 * pcpu statistics
  2264		 */
  2265		if (last_rxstats->chains &&
  2266		    !(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL) |
  2267				       BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG)))) {
  2268			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL);
  2269			if (!sta->pcpu_rx_stats)
  2270				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG);
  2271	
  2272			sinfo->chains = last_rxstats->chains;
  2273	
  2274			for (i = 0; i < ARRAY_SIZE(sinfo->chain_signal); i++) {
  2275				sinfo->chain_signal[i] =
  2276					last_rxstats->chain_signal_last[i];
  2277				sinfo->chain_signal_avg[i] =
  2278					-ewma_signal_read(&sta->rx_stats_avg.chain_signal[i]);
  2279			}
  2280		}
  2281	
  2282		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_BITRATE))) {
  2283			sta_set_rate_info_tx(sta, &sta->tx_stats.last_rate,
  2284					     &sinfo->txrate);
  2285			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE);
  2286		}
  2287	
  2288		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_BITRATE))) {
  2289			if (sta_set_rate_info_rx(sta, &sinfo->rxrate) == 0)
  2290				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BITRATE);
  2291		}
  2292	
  2293		if (tidstats && !cfg80211_sinfo_alloc_tid_stats(sinfo, GFP_KERNEL)) {
  2294			for (i = 0; i < IEEE80211_NUM_TIDS + 1; i++) {
  2295				struct cfg80211_tid_stats *tidstats = &sinfo->pertid[i];
  2296	
  2297				sta_set_tidstats(sta, tidstats, i);
  2298			}
  2299		}
  2300	
  2301		if (ieee80211_vif_is_mesh(&sdata->vif)) {
  2302	#ifdef CONFIG_MAC80211_MESH
  2303			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_LLID) |
  2304					 BIT_ULL(NL80211_STA_INFO_PLID) |
  2305					 BIT_ULL(NL80211_STA_INFO_PLINK_STATE) |
  2306					 BIT_ULL(NL80211_STA_INFO_LOCAL_PM) |
  2307					 BIT_ULL(NL80211_STA_INFO_PEER_PM) |
  2308					 BIT_ULL(NL80211_STA_INFO_NONPEER_PM);
  2309	
  2310			sinfo->llid = sta->mesh->llid;
  2311			sinfo->plid = sta->mesh->plid;
  2312			sinfo->plink_state = sta->mesh->plink_state;
  2313			if (test_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN)) {
  2314				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_T_OFFSET);
  2315				sinfo->t_offset = sta->mesh->t_offset;
  2316			}
  2317			sinfo->local_pm = sta->mesh->local_pm;
  2318			sinfo->peer_pm = sta->mesh->peer_pm;
  2319			sinfo->nonpeer_pm = sta->mesh->nonpeer_pm;
  2320	#endif
  2321		}
  2322	
  2323		sinfo->bss_param.flags = 0;
  2324		if (sdata->vif.bss_conf.use_cts_prot)
  2325			sinfo->bss_param.flags |= BSS_PARAM_FLAGS_CTS_PROT;
  2326		if (sdata->vif.bss_conf.use_short_preamble)
  2327			sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE;
  2328		if (sdata->vif.bss_conf.use_short_slot)
  2329			sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME;
  2330		sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period;
  2331		sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int;
  2332	
  2333		sinfo->sta_flags.set = 0;
  2334		sinfo->sta_flags.mask = BIT(NL80211_STA_FLAG_AUTHORIZED) |
  2335					BIT(NL80211_STA_FLAG_SHORT_PREAMBLE) |
  2336					BIT(NL80211_STA_FLAG_WME) |
  2337					BIT(NL80211_STA_FLAG_MFP) |
  2338					BIT(NL80211_STA_FLAG_AUTHENTICATED) |
  2339					BIT(NL80211_STA_FLAG_ASSOCIATED) |
  2340					BIT(NL80211_STA_FLAG_TDLS_PEER);
  2341		if (test_sta_flag(sta, WLAN_STA_AUTHORIZED))
  2342			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHORIZED);
  2343		if (test_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE))
  2344			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_SHORT_PREAMBLE);
  2345		if (sta->sta.wme)
  2346			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_WME);
  2347		if (test_sta_flag(sta, WLAN_STA_MFP))
  2348			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_MFP);
  2349		if (test_sta_flag(sta, WLAN_STA_AUTH))
  2350			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHENTICATED);
  2351		if (test_sta_flag(sta, WLAN_STA_ASSOC))
  2352			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_ASSOCIATED);
  2353		if (test_sta_flag(sta, WLAN_STA_TDLS_PEER))
  2354			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_TDLS_PEER);
  2355	
  2356		thr = sta_get_expected_throughput(sta);
  2357	
  2358		if (thr != 0) {
  2359			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_EXPECTED_THROUGHPUT);
  2360			sinfo->expected_throughput = thr;
  2361		}
  2362	
  2363		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL)) &&
  2364		    sta->status_stats.ack_signal_filled) {
  2365			sinfo->ack_signal = sta->status_stats.last_ack_signal;
  2366			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL);
  2367		}
  2368	
  2369		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL_AVG)) &&
  2370		    sta->status_stats.ack_signal_filled) {
  2371			sinfo->avg_ack_signal =
  2372				-(s8)ewma_avg_signal_read(
  2373					&sta->status_stats.avg_ack_signal);
  2374			sinfo->filled |=
  2375				BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL_AVG);
  2376		}
  2377	}
  2378	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

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

WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Rajkumar Manoharan <rmanohar@codeaurora.org>
Cc: "Toke Høiland-Jørgensen" <toke@toke.dk>,
	make-wifi-fast@lists.bufferbloat.net,
	linux-wireless@vger.kernel.org, ath10k@lists.infradead.org,
	kbuild-all@01.org, "Louie Lu" <git@louie.lu>
Subject: Re: [PATCH v4 3/6] mac80211: Add airtime accounting and scheduling to TXQs
Date: Wed, 19 Dec 2018 08:47:09 +0800	[thread overview]
Message-ID: <201812190844.itxzWYQT%fengguang.wu@intel.com> (raw)
In-Reply-To: <1545172374-1072-4-git-send-email-rmanohar@codeaurora.org>

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

Hi Toke,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mac80211/master]
[also build test WARNING on v4.20-rc7]
[cannot apply to next-20181218]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Rajkumar-Manoharan/Move-TXQ-scheduling-and-airtime-fairness-into-mac80211/20181219-080126
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git master
config: i386-randconfig-x001-201850 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/bitops.h:5:0,
                    from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/module.h:9,
                    from net/mac80211/sta_info.c:13:
   net/mac80211/sta_info.c: In function 'sta_set_sinfo':
   include/linux/bits.h:6:24: warning: left shift count >= width of type [-Wshift-count-overflow]
    #define BIT(nr)   (1UL << (nr))
                           ^
>> net/mac80211/sta_info.c:2215:20: note: in expansion of macro 'BIT'
      sinfo->filled |= BIT(NL80211_STA_INFO_RX_DURATION);
                       ^~~
   include/linux/bits.h:6:24: warning: left shift count >= width of type [-Wshift-count-overflow]
    #define BIT(nr)   (1UL << (nr))
                           ^
   net/mac80211/sta_info.c:2221:20: note: in expansion of macro 'BIT'
      sinfo->filled |= BIT(NL80211_STA_INFO_TX_DURATION);
                       ^~~
   include/linux/bits.h:6:24: warning: left shift count >= width of type [-Wshift-count-overflow]
    #define BIT(nr)   (1UL << (nr))
                           ^
   net/mac80211/sta_info.c:2226:20: note: in expansion of macro 'BIT'
      sinfo->filled |= BIT(NL80211_STA_INFO_AIRTIME_WEIGHT);
                       ^~~

vim +/BIT +2215 net/mac80211/sta_info.c

  2120	
  2121	void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo,
  2122			   bool tidstats)
  2123	{
  2124		struct ieee80211_sub_if_data *sdata = sta->sdata;
  2125		struct ieee80211_local *local = sdata->local;
  2126		u32 thr = 0;
  2127		int i, ac, cpu;
  2128		struct ieee80211_sta_rx_stats *last_rxstats;
  2129	
  2130		last_rxstats = sta_get_last_rx_stats(sta);
  2131	
  2132		sinfo->generation = sdata->local->sta_generation;
  2133	
  2134		/* do before driver, so beacon filtering drivers have a
  2135		 * chance to e.g. just add the number of filtered beacons
  2136		 * (or just modify the value entirely, of course)
  2137		 */
  2138		if (sdata->vif.type == NL80211_IFTYPE_STATION)
  2139			sinfo->rx_beacon = sdata->u.mgd.count_beacon_signal;
  2140	
  2141		drv_sta_statistics(local, sdata, &sta->sta, sinfo);
  2142	
  2143		sinfo->filled |= BIT_ULL(NL80211_STA_INFO_INACTIVE_TIME) |
  2144				 BIT_ULL(NL80211_STA_INFO_STA_FLAGS) |
  2145				 BIT_ULL(NL80211_STA_INFO_BSS_PARAM) |
  2146				 BIT_ULL(NL80211_STA_INFO_CONNECTED_TIME) |
  2147				 BIT_ULL(NL80211_STA_INFO_RX_DROP_MISC);
  2148	
  2149		if (sdata->vif.type == NL80211_IFTYPE_STATION) {
  2150			sinfo->beacon_loss_count = sdata->u.mgd.beacon_loss_count;
  2151			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_LOSS);
  2152		}
  2153	
  2154		sinfo->connected_time = ktime_get_seconds() - sta->last_connected;
  2155		sinfo->inactive_time =
  2156			jiffies_to_msecs(jiffies - ieee80211_sta_last_active(sta));
  2157	
  2158		if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_TX_BYTES64) |
  2159				       BIT_ULL(NL80211_STA_INFO_TX_BYTES)))) {
  2160			sinfo->tx_bytes = 0;
  2161			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2162				sinfo->tx_bytes += sta->tx_stats.bytes[ac];
  2163			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BYTES64);
  2164		}
  2165	
  2166		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_PACKETS))) {
  2167			sinfo->tx_packets = 0;
  2168			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2169				sinfo->tx_packets += sta->tx_stats.packets[ac];
  2170			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS);
  2171		}
  2172	
  2173		if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_RX_BYTES64) |
  2174				       BIT_ULL(NL80211_STA_INFO_RX_BYTES)))) {
  2175			sinfo->rx_bytes += sta_get_stats_bytes(&sta->rx_stats);
  2176	
  2177			if (sta->pcpu_rx_stats) {
  2178				for_each_possible_cpu(cpu) {
  2179					struct ieee80211_sta_rx_stats *cpurxs;
  2180	
  2181					cpurxs = per_cpu_ptr(sta->pcpu_rx_stats, cpu);
  2182					sinfo->rx_bytes += sta_get_stats_bytes(cpurxs);
  2183				}
  2184			}
  2185	
  2186			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BYTES64);
  2187		}
  2188	
  2189		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_PACKETS))) {
  2190			sinfo->rx_packets = sta->rx_stats.packets;
  2191			if (sta->pcpu_rx_stats) {
  2192				for_each_possible_cpu(cpu) {
  2193					struct ieee80211_sta_rx_stats *cpurxs;
  2194	
  2195					cpurxs = per_cpu_ptr(sta->pcpu_rx_stats, cpu);
  2196					sinfo->rx_packets += cpurxs->packets;
  2197				}
  2198			}
  2199			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS);
  2200		}
  2201	
  2202		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_RETRIES))) {
  2203			sinfo->tx_retries = sta->status_stats.retry_count;
  2204			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_RETRIES);
  2205		}
  2206	
  2207		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_FAILED))) {
  2208			sinfo->tx_failed = sta->status_stats.retry_failed;
  2209			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED);
  2210		}
  2211	
  2212		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_DURATION))) {
  2213			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2214				sinfo->rx_duration += sta->airtime[ac].rx_airtime;
> 2215			sinfo->filled |= BIT(NL80211_STA_INFO_RX_DURATION);
  2216		}
  2217	
  2218		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_DURATION))) {
  2219			for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
  2220				sinfo->tx_duration += sta->airtime[ac].tx_airtime;
  2221			sinfo->filled |= BIT(NL80211_STA_INFO_TX_DURATION);
  2222		}
  2223	
  2224		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT))) {
  2225			sinfo->airtime_weight = sta->airtime_weight;
  2226			sinfo->filled |= BIT(NL80211_STA_INFO_AIRTIME_WEIGHT);
  2227		}
  2228	
  2229		sinfo->rx_dropped_misc = sta->rx_stats.dropped;
  2230		if (sta->pcpu_rx_stats) {
  2231			for_each_possible_cpu(cpu) {
  2232				struct ieee80211_sta_rx_stats *cpurxs;
  2233	
  2234				cpurxs = per_cpu_ptr(sta->pcpu_rx_stats, cpu);
  2235				sinfo->rx_dropped_misc += cpurxs->dropped;
  2236			}
  2237		}
  2238	
  2239		if (sdata->vif.type == NL80211_IFTYPE_STATION &&
  2240		    !(sdata->vif.driver_flags & IEEE80211_VIF_BEACON_FILTER)) {
  2241			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_RX) |
  2242					 BIT_ULL(NL80211_STA_INFO_BEACON_SIGNAL_AVG);
  2243			sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif);
  2244		}
  2245	
  2246		if (ieee80211_hw_check(&sta->local->hw, SIGNAL_DBM) ||
  2247		    ieee80211_hw_check(&sta->local->hw, SIGNAL_UNSPEC)) {
  2248			if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL))) {
  2249				sinfo->signal = (s8)last_rxstats->last_signal;
  2250				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL);
  2251			}
  2252	
  2253			if (!sta->pcpu_rx_stats &&
  2254			    !(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG))) {
  2255				sinfo->signal_avg =
  2256					-ewma_signal_read(&sta->rx_stats_avg.signal);
  2257				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG);
  2258			}
  2259		}
  2260	
  2261		/* for the average - if pcpu_rx_stats isn't set - rxstats must point to
  2262		 * the sta->rx_stats struct, so the check here is fine with and without
  2263		 * pcpu statistics
  2264		 */
  2265		if (last_rxstats->chains &&
  2266		    !(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL) |
  2267				       BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG)))) {
  2268			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL);
  2269			if (!sta->pcpu_rx_stats)
  2270				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG);
  2271	
  2272			sinfo->chains = last_rxstats->chains;
  2273	
  2274			for (i = 0; i < ARRAY_SIZE(sinfo->chain_signal); i++) {
  2275				sinfo->chain_signal[i] =
  2276					last_rxstats->chain_signal_last[i];
  2277				sinfo->chain_signal_avg[i] =
  2278					-ewma_signal_read(&sta->rx_stats_avg.chain_signal[i]);
  2279			}
  2280		}
  2281	
  2282		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_BITRATE))) {
  2283			sta_set_rate_info_tx(sta, &sta->tx_stats.last_rate,
  2284					     &sinfo->txrate);
  2285			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE);
  2286		}
  2287	
  2288		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_BITRATE))) {
  2289			if (sta_set_rate_info_rx(sta, &sinfo->rxrate) == 0)
  2290				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BITRATE);
  2291		}
  2292	
  2293		if (tidstats && !cfg80211_sinfo_alloc_tid_stats(sinfo, GFP_KERNEL)) {
  2294			for (i = 0; i < IEEE80211_NUM_TIDS + 1; i++) {
  2295				struct cfg80211_tid_stats *tidstats = &sinfo->pertid[i];
  2296	
  2297				sta_set_tidstats(sta, tidstats, i);
  2298			}
  2299		}
  2300	
  2301		if (ieee80211_vif_is_mesh(&sdata->vif)) {
  2302	#ifdef CONFIG_MAC80211_MESH
  2303			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_LLID) |
  2304					 BIT_ULL(NL80211_STA_INFO_PLID) |
  2305					 BIT_ULL(NL80211_STA_INFO_PLINK_STATE) |
  2306					 BIT_ULL(NL80211_STA_INFO_LOCAL_PM) |
  2307					 BIT_ULL(NL80211_STA_INFO_PEER_PM) |
  2308					 BIT_ULL(NL80211_STA_INFO_NONPEER_PM);
  2309	
  2310			sinfo->llid = sta->mesh->llid;
  2311			sinfo->plid = sta->mesh->plid;
  2312			sinfo->plink_state = sta->mesh->plink_state;
  2313			if (test_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN)) {
  2314				sinfo->filled |= BIT_ULL(NL80211_STA_INFO_T_OFFSET);
  2315				sinfo->t_offset = sta->mesh->t_offset;
  2316			}
  2317			sinfo->local_pm = sta->mesh->local_pm;
  2318			sinfo->peer_pm = sta->mesh->peer_pm;
  2319			sinfo->nonpeer_pm = sta->mesh->nonpeer_pm;
  2320	#endif
  2321		}
  2322	
  2323		sinfo->bss_param.flags = 0;
  2324		if (sdata->vif.bss_conf.use_cts_prot)
  2325			sinfo->bss_param.flags |= BSS_PARAM_FLAGS_CTS_PROT;
  2326		if (sdata->vif.bss_conf.use_short_preamble)
  2327			sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE;
  2328		if (sdata->vif.bss_conf.use_short_slot)
  2329			sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME;
  2330		sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period;
  2331		sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int;
  2332	
  2333		sinfo->sta_flags.set = 0;
  2334		sinfo->sta_flags.mask = BIT(NL80211_STA_FLAG_AUTHORIZED) |
  2335					BIT(NL80211_STA_FLAG_SHORT_PREAMBLE) |
  2336					BIT(NL80211_STA_FLAG_WME) |
  2337					BIT(NL80211_STA_FLAG_MFP) |
  2338					BIT(NL80211_STA_FLAG_AUTHENTICATED) |
  2339					BIT(NL80211_STA_FLAG_ASSOCIATED) |
  2340					BIT(NL80211_STA_FLAG_TDLS_PEER);
  2341		if (test_sta_flag(sta, WLAN_STA_AUTHORIZED))
  2342			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHORIZED);
  2343		if (test_sta_flag(sta, WLAN_STA_SHORT_PREAMBLE))
  2344			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_SHORT_PREAMBLE);
  2345		if (sta->sta.wme)
  2346			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_WME);
  2347		if (test_sta_flag(sta, WLAN_STA_MFP))
  2348			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_MFP);
  2349		if (test_sta_flag(sta, WLAN_STA_AUTH))
  2350			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHENTICATED);
  2351		if (test_sta_flag(sta, WLAN_STA_ASSOC))
  2352			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_ASSOCIATED);
  2353		if (test_sta_flag(sta, WLAN_STA_TDLS_PEER))
  2354			sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_TDLS_PEER);
  2355	
  2356		thr = sta_get_expected_throughput(sta);
  2357	
  2358		if (thr != 0) {
  2359			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_EXPECTED_THROUGHPUT);
  2360			sinfo->expected_throughput = thr;
  2361		}
  2362	
  2363		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL)) &&
  2364		    sta->status_stats.ack_signal_filled) {
  2365			sinfo->ack_signal = sta->status_stats.last_ack_signal;
  2366			sinfo->filled |= BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL);
  2367		}
  2368	
  2369		if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL_AVG)) &&
  2370		    sta->status_stats.ack_signal_filled) {
  2371			sinfo->avg_ack_signal =
  2372				-(s8)ewma_avg_signal_read(
  2373					&sta->status_stats.avg_ack_signal);
  2374			sinfo->filled |=
  2375				BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL_AVG);
  2376		}
  2377	}
  2378	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

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

[-- Attachment #3: Type: text/plain, Size: 146 bytes --]

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

  reply	other threads:[~2018-12-19  1:02 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-18 22:32 [PATCH v4 0/6] Move TXQ scheduling and airtime fairness into mac80211 Rajkumar Manoharan
2018-12-18 22:32 ` Rajkumar Manoharan
2018-12-18 22:32 ` [PATCH v4 1/6] mac80211: Add TXQ scheduling API Rajkumar Manoharan
2018-12-18 22:32   ` Rajkumar Manoharan
2018-12-18 22:32 ` [PATCH v4 2/6] cfg80211: Add airtime statistics and settings Rajkumar Manoharan
2018-12-18 22:32   ` Rajkumar Manoharan
2018-12-18 22:32 ` [PATCH v4 3/6] mac80211: Add airtime accounting and scheduling to TXQs Rajkumar Manoharan
2018-12-18 22:32   ` Rajkumar Manoharan
2018-12-19  0:47   ` kbuild test robot [this message]
2018-12-19  0:47     ` kbuild test robot
2018-12-18 22:32 ` [PATCH v4 4/6] ath9k: Switch to mac80211 TXQ scheduling and airtime APIs Rajkumar Manoharan
2018-12-18 22:32   ` Rajkumar Manoharan
2018-12-18 22:32 ` [PATCH v4 5/6] ath10k: migrate to mac80211 txq scheduling Rajkumar Manoharan
2018-12-18 22:32   ` Rajkumar Manoharan
2018-12-18 22:32 ` [PATCH v4 6/6] ath10k: reporting estimated tx airtime for fairness Rajkumar Manoharan
2018-12-18 22:32   ` Rajkumar Manoharan
2019-01-21  9:49   ` Toke Høiland-Jørgensen
2019-01-21  9:49     ` Toke Høiland-Jørgensen
2019-01-21 16:48     ` Toke Høiland-Jørgensen
2019-01-21 16:48       ` Toke Høiland-Jørgensen

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

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

  git send-email \
    --in-reply-to=201812190844.itxzWYQT%fengguang.wu@intel.com \
    --to=lkp@intel.com \
    --cc=ath10k@lists.infradead.org \
    --cc=git@louie.lu \
    --cc=kbuild-all@01.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    --cc=rmanohar@codeaurora.org \
    --cc=toke@toke.dk \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.