[RFC PATCH 10/12] wifi: mac80211: refactor tailroom needed checks
Johannes Berg <[email protected]> Sat, 1 Aug 2026 09:58:26 +0200
| Newsgroups | org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <20260801095822.8536224493fd.Ibe47133b0d3e04546b9a8346ad13f7f8bee32a25@changeid> |
From: Johannes Berg <[email protected]> Whether a key needs TX tailroom reserved for it is open-coded in several places as a test of the relevant flags. Create a small helper function and use it instead. The check for KEY_FLAG_UPLOADED_TO_HARDWARE is new in a few of the places, but it's set appropriately there. Signed-off-by: Johannes Berg <[email protected]> --- net/mac80211/key.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/net/mac80211/key.c b/net/mac80211/key.c index 1226f64b3a97..fafc44329606 100644 --- a/net/mac80211/key.c +++ b/net/mac80211/key.c @@ -118,6 +118,16 @@ static void decrease_tailroom_need_count(struct ieee80211_sub_if_data *sdata, sdata->crypto_tx_tailroom_needed_cnt -= delta; } +static bool ieee80211_key_needs_tailroom(struct ieee80211_key *key) +{ + if (key->conf.flags & (IEEE80211_KEY_FLAG_GENERATE_MMIC | + IEEE80211_KEY_FLAG_PUT_MIC_SPACE | + IEEE80211_KEY_FLAG_RESERVE_TAILROOM)) + return true; + + return !(key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE); +} + static int ieee80211_key_enable_hw_accel(struct ieee80211_key *key) { struct ieee80211_sub_if_data *sdata = key->sdata; @@ -135,10 +145,7 @@ static int ieee80211_key_enable_hw_accel(struct ieee80211_key *key) * so clear that flag now to avoid trying to remove * it again later. */ - if (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE && - !(key->conf.flags & (IEEE80211_KEY_FLAG_GENERATE_MMIC | - IEEE80211_KEY_FLAG_PUT_MIC_SPACE | - IEEE80211_KEY_FLAG_RESERVE_TAILROOM))) + if (!ieee80211_key_needs_tailroom(key)) increment_tailroom_need_count(sdata); key->flags &= ~KEY_FLAG_UPLOADED_TO_HARDWARE; @@ -204,9 +211,7 @@ static int ieee80211_key_enable_hw_accel(struct ieee80211_key *key) if (!ret) { key->flags |= KEY_FLAG_UPLOADED_TO_HARDWARE; - if (!(key->conf.flags & (IEEE80211_KEY_FLAG_GENERATE_MMIC | - IEEE80211_KEY_FLAG_PUT_MIC_SPACE | - IEEE80211_KEY_FLAG_RESERVE_TAILROOM))) + if (!ieee80211_key_needs_tailroom(key)) decrease_tailroom_need_count(sdata, 1); WARN_ON((key->conf.flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE) && @@ -276,9 +281,7 @@ static void ieee80211_key_disable_hw_accel(struct ieee80211_key *key) !(sdata->vif.active_links & BIT(key->conf.link_id))) return; - if (!(key->conf.flags & (IEEE80211_KEY_FLAG_GENERATE_MMIC | - IEEE80211_KEY_FLAG_PUT_MIC_SPACE | - IEEE80211_KEY_FLAG_RESERVE_TAILROOM))) + if (!ieee80211_key_needs_tailroom(key)) increment_tailroom_need_count(sdata); pubsta = sta ? &sta->sta : NULL; @@ -612,9 +615,7 @@ static int ieee80211_key_replace(struct ieee80211_sub_if_data *sdata, } else if (new->conf.link_id < 0 || !sdata->vif.active_links || BIT(new->conf.link_id) & sdata->vif.active_links) { new->flags |= KEY_FLAG_UPLOADED_TO_HARDWARE; - if (!(new->conf.flags & (IEEE80211_KEY_FLAG_GENERATE_MMIC | - IEEE80211_KEY_FLAG_PUT_MIC_SPACE | - IEEE80211_KEY_FLAG_RESERVE_TAILROOM))) + if (!ieee80211_key_needs_tailroom(new)) decrease_tailroom_need_count(sdata, 1); } } -- 2.55.0