Re: [PATCH v2] ath11k: fix peer resolution on rx path when peer_id=0
Baochen Qiang <[email protected]>
| Newsgroups | org.infradead.lists.ath11k,org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
On 4/15/2026 7:39 PM, Matthew Leach wrote: > It has been observed that on certain chipsets a peer can be assigned > peer_id=0. For reception of standard MPDUs this is fine as > ath11k_dp_rx_h_find_peer() has a fallback case where it locates the peer > based upon the source mac address. > > However, on an aggregated link, reception of AMSDUs results in the peer > not being resolved for the second (any any subsequent) sub-MSDUs due to > the peer_id guard in ath11k_dp_rx_h_find_peer(). This causes the it is necessary to point out that the mac address based fallback does not work for those sub-MSDUs as well, since the mpdu_start descriptor from where mac address is obtained is not populated by hardware. > encryption type of the frame to be set to an incorrect value, resulting > in the sub-MSDUs being dropped by ieee80211. > > ath11k_pci 0000:03:00.0: data rx skb 000000002f4b704d len 1534 peer xx:xx:xx:xx:xx:xx 0 ucast sn 3063 he160 rate_idx 9 vht_nss 2 freq 5240 band 1 flag 0x40d1a fcs-err 0 mic-err 0 amsdu-more 0 peer_id 0 first_msdu 1 last_msdu 0 > ath11k_pci 0000:03:00.0: data rx skb 0000000038acd580 len 1534 peer (null) 0 ucast sn 3063 he160 rate_idx 9 vht_nss 2 freq 5240 band 1 flag 0x40d00 fcs-err 0 mic-err 0 amsdu-more 0 peer_id 0 first_msdu 0 last_msdu 1 > > This patch removes the null peer_id check in ath11k_dp_rx_h_find_peer(), > allowing peer's with an assigned ID of 0 to be resolved. > > Signed-off-by: Matthew Leach <[email protected]> > --- > Changes in v2: > > - Since peer_id=0 is a valid condition on some chips, remove the guard > that prevented the peer lookup. > - Link to v1: https://patch.msgid.link/20260326-ath11k-null-peerid-workaround-v1-1-0c2fd53202f8@collabora.com > > To: Jeff Johnson <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > --- > drivers/net/wireless/ath/ath11k/dp_rx.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c > index 49d959b2e148..ff2c78a4e5f3 100644 > --- a/drivers/net/wireless/ath/ath11k/dp_rx.c > +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c > @@ -2215,8 +2215,7 @@ ath11k_dp_rx_h_find_peer(struct ath11k_base *ab, struct sk_buff *msdu) > > lockdep_assert_held(&ab->base_lock); > > - if (rxcb->peer_id) > - peer = ath11k_peer_find_by_id(ab, rxcb->peer_id); > + peer = ath11k_peer_find_by_id(ab, rxcb->peer_id); > > if (peer) > return peer; the other instance in ath11k_hal_rx_parse_mon_status_tlv() is missed. > > --- > base-commit: f338e77383789c0cae23ca3d48adcc5e9e137e3c > change-id: 20260326-ath11k-null-peerid-workaround-625a129781b1 > > Best regards, > -- > Matt >