All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <error27@gmail.com>
To: Felix Fietkau <nbd@nbd.name>
Cc: linux-wireless@vger.kernel.org
Subject: [bug report] wifi: mac80211: factor out part of ieee80211_calc_expected_tx_airtime
Date: Sat, 8 Aug 2026 22:42:12 +0300	[thread overview]
Message-ID: <aneGlCMVnqRhlf6p@stanley.mountain> (raw)

Hello Felix Fietkau,

Commit 094dc1619cb0 ("wifi: mac80211: factor out part of
ieee80211_calc_expected_tx_airtime") from Jul 24, 2026 (linux-next),
leads to the following Smatch static checker warning:

	net/mac80211/airtime.c:798 ieee80211_rate_expected_tx_airtime()
	error: uninitialized symbol 'overhead'.

net/mac80211/airtime.c
    756 u32 ieee80211_rate_expected_tx_airtime(struct ieee80211_hw *hw,
    757                                        struct ieee80211_tx_rate *tx_rate,
    758                                        struct rate_info *ri,
    759                                        enum nl80211_band band,
    760                                        bool ampdu, int len)
    761 {
    762         struct ieee80211_rx_status stat;
    763         u32 duration, overhead;
    764         u8 agg_shift;
    765 
    766         if (ieee80211_fill_rx_status(&stat, hw, tx_rate, ri, band, len))
    767                 return 0;
    768 
    769         if (stat.encoding == RX_ENC_LEGACY || !ampdu)
    770                 return ieee80211_calc_rx_airtime(hw, &stat, len) * 1024;
    771 
    772         duration = ieee80211_get_rate_duration(hw, &stat, &overhead);

All but one of the return paths which don't initialize "overhead" have
a WARN_ON_ONCE(), but it would be nice to initialize overhead...

    773 
    774         /*
    775          * Assume that HT/VHT transmission on any AC except VO will
    776          * use aggregation. Since we don't have reliable reporting
    777          * of aggregation length, assume an average size based on the
    778          * tx rate.
    779          * This will not be very accurate, but much better than simply
    780          * assuming un-aggregated tx in all cases.
    781          */
    782         if (duration > 400 * 1024) /* <= VHT20 MCS2 1S */
    783                 agg_shift = 1;
    784         else if (duration > 250 * 1024) /* <= VHT20 MCS3 1S or MCS1 2S */
    785                 agg_shift = 2;
    786         else if (duration > 150 * 1024) /* <= VHT20 MCS5 1S or MCS2 2S */
    787                 agg_shift = 3;
    788         else if (duration > 70 * 1024) /* <= VHT20 MCS5 2S */
    789                 agg_shift = 4;
    790         else if (stat.encoding != RX_ENC_HE ||
    791                  duration > 20 * 1024) /* <= HE40 MCS6 2S */
    792                 agg_shift = 5;
    793         else
    794                 agg_shift = 6;
    795 
    796         duration *= len;
    797         duration /= AVG_PKT_SIZE;
--> 798         duration += (overhead * 1024 >> agg_shift);
    799 
    800         return duration;
    801 }

This email is a free service from the Smatch-CI project [smatch.sf.net].

regards,
dan carpenter

                 reply	other threads:[~2026-08-08 19:42 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=aneGlCMVnqRhlf6p@stanley.mountain \
    --to=error27@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=nbd@nbd.name \
    /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.