[PATCH ath-current] wifi: ath12k: fix decap of MSDUs spanning multiple RX buffers
Vasanthakumar Thiagarajan
vasanthakumar.thiagarajan at oss.qualcomm.com
Wed Oct 14 02:58:47 PDT 2026
On 10/13/2026 6:59 PM, Lorenzo Bianconi wrote:
> When a MSDU is split across multiple RX buffers, the msdu_end TLV is
> populated only in the last buffer. Since commit e8a1e49c6328
> ("wifi: ath12k: Add new infra for the rx path"), the RX info
> extraction in ath12k_hal_extract_rx_desc_data_*() helpers runs before
> the MSDU is coalesced, so the msdu_end-derived fields (decap_type,
> mesh_ctrl_present, is_from_ds, is_to_ds, is_mcbc, is_decrypted, sgi,
> rate_mcs, bw, phy_meta_data, pkt_type, nss, checksum flags and
> err_bitmap) were read from the first buffer, where that TLV is not
> valid.
>
> As a result decap_type was reported as DP_RX_DECAP_TYPE_RAW and the
> frame was handed to mac80211 with a raw 802.11 header instead of being
> converted to an ethernet frame, breaking reception of any frame larger
> than the single RX buffer.
>
> Fix it by parsing the msdu_end fields from the last buffer (ldesc) in
> ath12k_hal_extract_rx_desc_data_{wcn7850,qcn9274,qcc2072}(), keeping the
> mpdu_start fields (enctype, seq_no, peer_id, tid, addr2) on the first
> buffer (rx_desc). For single-buffer MSDUs rx_desc and ldesc point to the
> same descriptor so the behavior is unchanged.
>
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c7-00108-QCAHMTSWPL_V1.0_V2.0_SILICONZ_UPSTREAM-3
>
> Fixes: e8a1e49c6328 ("wifi: ath12k: Add new infra for the rx path")
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at oss.qualcomm.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan at oss.qualcomm.com>
More information about the ath12k
mailing list