From: "Nicolas Escande" <nico.escande@gmail.com>
To: "P Praneesh" <quic_ppranees@quicinc.com>, <ath12k@lists.infradead.org>
Cc: <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH 3/3] wifi: ath12k: fix firmware crash during reo reinject
Date: Tue, 21 May 2024 10:50:42 +0200 [thread overview]
Message-ID: <D1F6ZU89YWPF.X1SZ9JNQNPFC@gmail.com> (raw)
In-Reply-To: <20240520070045.631029-4-quic_ppranees@quicinc.com>
On Mon May 20, 2024 at 9:00 AM CEST, P Praneesh wrote:
> When handling fragmented packets, the ath12k driver reassembles each
> fragment into a normal packet and then reinjects it into the HW ring.
> However, a firmware crash occurs during this reinjection process.
> The issue arises because the driver populates peer metadata in
> reo_ent_ring->queue_addr_lo, while the firmware expects the physical
> address obtained from the corresponding peer’s queue descriptor. Fix it
> by filling peer's queue descriptor's physical address in queue_addr_lo.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00209-QCAHKSWPL_SILICONZ-1
>
> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
> Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
> ---
> drivers/net/wireless/ath/ath12k/dp_rx.c | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
> index 2bfcc19d15ea..2adb6c7d4a42 100644
> --- a/drivers/net/wireless/ath/ath12k/dp_rx.c
> +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
> @@ -2967,7 +2967,7 @@ static int ath12k_dp_rx_h_defrag_reo_reinject(struct ath12k *ar,
> struct hal_srng *srng;
> dma_addr_t link_paddr, buf_paddr;
> u32 desc_bank, msdu_info, msdu_ext_info, mpdu_info;
> - u32 cookie, hal_rx_desc_sz, dest_ring_info0;
> + u32 cookie, hal_rx_desc_sz, dest_ring_info0, queue_addr_hi;
> int ret;
> struct ath12k_rx_desc_info *desc_info;
> enum hal_rx_buf_return_buf_manager idle_link_rbm = dp->idle_link_rbm;
> @@ -3060,13 +3060,11 @@ static int ath12k_dp_rx_h_defrag_reo_reinject(struct ath12k *ar,
> reo_ent_ring->rx_mpdu_info.peer_meta_data =
> reo_dest_ring->rx_mpdu_info.peer_meta_data;
>
> - /* Firmware expects physical address to be filled in queue_addr_lo in
> - * the MLO scenario and in case of non MLO peer meta data needs to be
> - * filled.
> - * TODO: Need to handle for MLO scenario.
> - */
> - reo_ent_ring->queue_addr_lo = reo_dest_ring->rx_mpdu_info.peer_meta_data;
> - reo_ent_ring->info0 = le32_encode_bits(dst_ind,
> + reo_ent_ring->queue_addr_lo = cpu_to_le32(lower_32_bits(rx_tid->paddr));
> + queue_addr_hi = upper_32_bits(rx_tid->paddr);
Shouldn't there be a cpu_to_le32 somewhere here ? It just seems asymetrical
between the two values extracted from rx_tid->paddr
> + reo_ent_ring->info0 = le32_encode_bits(queue_addr_hi,
> + HAL_REO_ENTR_RING_INFO0_QUEUE_ADDR_HI) |
> + le32_encode_bits(dst_ind,
> HAL_REO_ENTR_RING_INFO0_DEST_IND);
>
> reo_ent_ring->info1 = le32_encode_bits(rx_tid->cur_sn,
next prev parent reply other threads:[~2024-05-21 8:50 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-20 7:00 [PATCH 0/3] wifi: ath12k: fix issues in rx fragmentation path P Praneesh
2024-05-20 7:00 ` [PATCH 1/3] wifi: ath12k: change DMA direction while mapping reinjected packets P Praneesh
2024-05-20 23:38 ` Jeff Johnson
2024-05-25 8:57 ` Kalle Valo
2024-05-20 7:00 ` [PATCH 2/3] wifi: ath12k: fix invalid memory access while processing fragmented packets P Praneesh
2024-05-20 23:38 ` Jeff Johnson
2024-05-20 7:00 ` [PATCH 3/3] wifi: ath12k: fix firmware crash during reo reinject P Praneesh
2024-05-20 23:38 ` Jeff Johnson
2024-05-21 8:50 ` Nicolas Escande [this message]
2024-05-22 6:59 ` Ping-Ke Shih
2024-05-22 7:15 ` Praneesh P
2024-05-22 7:28 ` Nicolas Escande
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D1F6ZU89YWPF.X1SZ9JNQNPFC@gmail.com \
--to=nico.escande@gmail.com \
--cc=ath12k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_ppranees@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.