On Tuesday, 1 August 2023 20:11:51 CEST Felix Fietkau wrote: [...] > > when new clients try to connect - and connection attempt will obviously > > fail. Most likely with an "deauthenticated due to inactivity (timer > > DEAUTH/REMOVE)" by hostapd. > > > > And the fix (required for both platches) would then be something like: > > > > --- a/drivers/net/wireless/ath/ath11k/dp_tx.c > > +++ b/drivers/net/wireless/ath/ath11k/dp_tx.c > > @@ -629,8 +629,14 @@ static void ath11k_dp_tx_complete_msdu(struct ath11k *ar, > > "dp_tx: failed to find the peer with peer_id %d\n", > > ts->peer_id); > > spin_unlock_bh(&ab->base_lock); > > - dev_kfree_skb_any(msdu); > > - goto exit; > > + rcu_read_unlock(); > > + > > + if (skb_cb->flags & ATH11K_SKB_HW_80211_ENCAP) > > + ieee80211_tx_status_8023(ar->hw, skb_cb->vif, msdu); > > + else > > + ieee80211_tx_status(ar->hw, msdu); > > + > > + return; > > } > > arsta = (struct ath11k_sta *)peer->sta->drv_priv; > > status.sta = peer->sta; > > > > But this is not possible any longer because Felix Fietkau removed > > ieee80211_tx_status_8023 in commit 9ae708f00161 ("wifi: mac80211: remove > > ieee80211_tx_status_8023") - and the function ieee80211_lookup_ra_sta > > (required for this task) is currently not exported. And the sta information > > is required to reach the ieee80211_sta_tx_notify code section in > > ieee80211_tx_status_ext() > > This does not make much sense to me. ieee80211_sta_tx_notify is specific > to interfaces running in client mode, thus unrelated to anything hostapd > is doing. It's a different kind of probing than the one you're looking into. Sorry, copied something to my notes and then mixed up basically everything after that. Interesting for the fix was only that it reaches ieee80211_report_ack_skb via ieee80211_report_used_skb. This can either be done via __ieee80211_tx_status/ieee80211_tx_status_ext (which doesn't have any dependency to the sta - which I incorrectly said earlier) or via ieee80211_free_txskb (which I missed earlier) [...] > The main bug is the fact that dev_kfree_skb* must not be called for tx > packets passed from mac80211. If you replace it with a call to > ieee80211_free_txskb, the bug goes away. Thanks for the hint. Will submit an actual patch with your recommended replacement. Kind regards, Sven
Attachment:
signature.asc
Description: This is a digitally signed message part.