FAILED: patch "[PATCH] wifi: mac80211: set info->band for 802.3 encap offload frames" failed to apply to 6.18-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.18.y
git checkout FETCH_HEAD
git cherry-pick -x 4febc02cd02f021f2b6d0768332be643ef14a12d
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026100532-destruct-relative-8c7b@gregkh' --subject-prefix 'PATCH 6.18.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 4febc02cd02f021f2b6d0768332be643ef14a12d Mon Sep 17 00:00:00 2001
From: Felix Fietkau <[email protected]>
Date: Sat, 26 Sep 2026 14:02:16 +0200
Subject: [PATCH] wifi: mac80211: set info->band for 802.3 encap offload frames
Unlike the 802.11 TX paths, ieee80211_8023_xmit() does not set info->band from the channel context on non-MLD interfaces. It stays at 0, so ieee80211_get_tx_rates() uses the wrong band for these frames.
Set it the same way as ieee80211_build_hdr(): drop the frame if there is no channel context, and leave the band at 0 on MLD interfaces.
net/mac80211/tx.c +11 -0
@@ -4735,6 +4735,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata, {struct ieee80211_tx_info *info;struct ieee80211_local *local = sdata->local; +struct ieee80211_chanctx_conf *chanctx_conf;struct tid_ampdu_tx *tid_tx =NULL ;struct sk_buff *seg, *next;unsigned int skbs =0 , len =0 ;
@@ -4784,6 +4785,16 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata, sdata =container_of (sdata->bss, struct ieee80211_sub_if_data, u.ap); +/* MLD transmissions must not rely on the band */ +if (!ieee80211_vif_is_mld (&sdata->vif)) { + chanctx_conf =rcu_dereference (sdata->vif.bss_conf.chanctx_conf); +if (unlikely (!chanctx_conf)) { +kfree_skb_list (skb); +return ; + } + info->band = chanctx_conf->def.chan->band; + } + info->flags |=IEEE80211_TX_CTL_HW_80211_ENCAP ; info->control.vif = &sdata->vif;
Sasha Levin
maintainerPATCH 1/2 wifi: mac80211: Add sta pointer sanity check in ieee80211_8023_xmit()
From: Tamizh Chelvam Raja <[email protected]>
[ Upstream commit 303f11fda2fa4c6f7aa86b8fa54aaee5e1ef181b ]
Currently ieee80211_8023_xmit() accesses the sta pointer without any sanity check, assuming that only unicast packets for an authorized station are processed. But the sta pointer could become NULL when a framework to support 802.3 offload for the multicast packets is added in the follow-up patches. Add the valid sta pointer sanity check to avoid the invalid pointer access.
This aligns with some of the subordinate functions called by ieee80211_8023_xmit() that already NULL-check 'sta' such as ieee80211_select_queue() and ieee80211_aggr_check().
Stable-dep-of: 4febc02cd02f ("wifi: mac80211: set info->band for 802.3 encap offload frames")
--- net/mac80211/tx.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
net/mac80211/tx.c +9 -4
@@ -4659,7 +4659,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata, {struct ieee80211_tx_info *info;struct ieee80211_local *local = sdata->local; -struct tid_ampdu_tx *tid_tx; +struct tid_ampdu_tx *tid_tx =NULL ;struct sk_buff *seg, *next;unsigned int skbs =0 , len =0 ;u16 queue;
@@ -4679,7 +4679,9 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,ieee80211_aggr_check (sdata, sta, skb); tid = skb->priority &IEEE80211_QOS_CTL_TAG1D_MASK ; - tid_tx =rcu_dereference (sta->ampdu_mlme.tid_tx[tid]); + +if (sta) + tid_tx =rcu_dereference (sta->ampdu_mlme.tid_tx[tid]);if (tid_tx) {if (!test_bit (HT_AGG_STATE_OPERATIONAL , &tid_tx->state)) {/* fall back to non-offload slow path */
@@ -4727,8 +4729,11 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata, }dev_sw_netstats_tx_add (dev, skbs, len); - sta->deflink.tx_stats.packets[queue] += skbs; - sta->deflink.tx_stats.bytes[queue] += len; + +if (sta) { + sta->deflink.tx_stats.packets[queue] += skbs; + sta->deflink.tx_stats.bytes[queue] += len; + }ieee80211_tpt_led_trig_tx (local, len);
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 wifi: mac80211: set info->band for 802.3 encap offload frames
From: Felix Fietkau <[email protected]>
[ Upstream commit 4febc02cd02f021f2b6d0768332be643ef14a12d ]
Unlike the 802.11 TX paths, ieee80211_8023_xmit() does not set info->band from the channel context on non-MLD interfaces. It stays at 0, so ieee80211_get_tx_rates() uses the wrong band for these frames.
Set it the same way as ieee80211_build_hdr(): drop the frame if there is no channel context, and leave the band at 0 on MLD interfaces.
--- net/mac80211/tx.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
net/mac80211/tx.c +11 -0
@@ -4659,6 +4659,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata, {struct ieee80211_tx_info *info;struct ieee80211_local *local = sdata->local; +struct ieee80211_chanctx_conf *chanctx_conf;struct tid_ampdu_tx *tid_tx =NULL ;struct sk_buff *seg, *next;unsigned int skbs =0 , len =0 ;
@@ -4708,6 +4709,16 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata, sdata =container_of (sdata->bss, struct ieee80211_sub_if_data, u.ap); +/* MLD transmissions must not rely on the band */ +if (!ieee80211_vif_is_mld (&sdata->vif)) { + chanctx_conf =rcu_dereference (sdata->vif.bss_conf.chanctx_conf); +if (unlikely (!chanctx_conf)) { +kfree_skb_list (skb); +return ; + } + info->band = chanctx_conf->def.chan->band; + } + info->flags |=IEEE80211_TX_CTL_HW_80211_ENCAP ; info->control.vif = &sdata->vif;
Signature · 1 line
2.53.0