From: Alexander Wilhelm <alexander.wilhelm@westermo.com>
To: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Cc: Jeff Johnson <jjohnson@kernel.org>,
ath12k@lists.infradead.org, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: ath12k: REO status on PPC does not work
Date: Tue, 19 Aug 2025 10:10:25 +0200 [thread overview]
Message-ID: <aKQxcfbDYOWTa36J@FUE-ALEWI-WINX> (raw)
In-Reply-To: <ff8287fc-7122-42e7-b6ab-550576b5d599@oss.qualcomm.com>
Am Tue, Aug 19, 2025 at 03:26:34PM +0800 schrieb Baochen Qiang:
>
>
> On 8/19/2025 2:59 PM, Alexander Wilhelm wrote:
> > Am Tue, Aug 19, 2025 at 02:38:38PM +0800 schrieb Baochen Qiang:
> >>
> >>
> >> On 8/15/2025 4:13 PM, Alexander Wilhelm wrote:
> >>> Hello devs,
> >>>
> >>> I'm currently working on getting the 'ath12k' driver running on a big endian
> >>> PowerPC platform and have encountered the following issue.
> >>>
> >>> In the function 'ath12k_dp_rx_process_reo_status', the REO status is determined
> >>> by inspecting memory that the hardware has previously written via DMA.
> >>> Specifically, during the call to 'ath12k_hal_srng_access_begin', the driver
> >>> reads the value of 'hp_addr' for the destination ring (in my case, always with
> >>> ID 21). On the big endian platform, this value is consistently 0, which prevents
> >>> the REO status from being updated.
> >>
> >> This does not seem an endian issue to me, because either of them we should get a value
> >> other than 0.
> >
> > Really? I always assumed the value remains 0 until the firmware writes something
> > to memory and moves the head pointer of the SRNG ring buffer. By the way, I've
>
> correct!
>
> > already implemented the missing endianness conversions for reading from and
> > writing to ring buffer pointers like this one:
> >
> > hp = le32_to_cpu(*srng->u.dst_ring.hp_addr);
>
> I was actually meaning that, when hp get updated by firmware, either with or without
> le32_to_cpu conversion, we should get a value other than 0.
>
> So in your cause I am suspecting that hardware/firmware has never sent any REO status to
> host.
Yes, I see it the same way.
> >>> Interestingly, DMA read/write accesses work fine for other rings, just not for
> >>> this one. What makes the REO status ring so special? I couldn’t find anything in
> >>> the initialization routine that would explain the difference.
> >>>
> >>> Could anyone give me a hint on what I should be looking for?
> >>>
> >>>
> >> What hardware are you using? WCN7850 or QCN9274?
> >
> > I'm using QCN9274-based dualmac modules.
>
> sure
>
> > >
> > Best regards
> > Alexander Wilhelm
>
> so did you see any obvious issue?
For example, in the function 'ath12k_dp_rx_peer_tid_delete', the function
'ath12k_dp_reo_cmd_send' is called, which in turn registers the function
'ath12k_dp_rx_tid_del_func' as a callback. On PowerPC, this callback function is
never invoked, which eventually leads to the following error:
ath12k_pci 0002:01:00.0: failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid 15 (-105)
ath12k_pci 0002:01:00.0: failed to update rx tid queue, tid 0 (-105)
ath12k_pci 0002:01:00.0: failed to update reo for rx tid 0
ath12k_pci 0002:01:00.0: failed to setup rx tid -105
ath12k_pci 0002:01:00.0: pdev idx 0 unable to perform ampdu action 0 ret -105
My investigations have shown that a cache flush is supposed to happen at some
point, e.g. after a timeout or when a threshold of 64 is reached. Since this
does not happen, I encounter errors after the 127th 'cmd_num'. This callback
function should actually be called from the 'reo_cmd_list' within the function
'ath12k_dp_rx_process_reo_status'. However, this does not happen because the
pointer is always 0.
I hope I was able to explain clearly what I was able to trace. Please correct me
if any of my assumptions are wrong.
Best regards
Alexander Wilhelm
next prev parent reply other threads:[~2025-08-19 8:10 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-15 8:13 ath12k: REO status on PPC does not work Alexander Wilhelm
2025-08-15 9:55 ` Sebastian Gottschall
2025-08-15 10:26 ` Alexander Wilhelm
2025-08-15 10:50 ` Sebastian Gottschall
2025-08-15 12:00 ` Alexander Wilhelm
2025-08-19 6:38 ` Baochen Qiang
2025-08-19 6:59 ` Alexander Wilhelm
2025-08-19 7:26 ` Baochen Qiang
2025-08-19 8:10 ` Alexander Wilhelm [this message]
2025-08-19 9:21 ` Vasanthakumar Thiagarajan
2025-08-21 6:54 ` Alexander Wilhelm
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=aKQxcfbDYOWTa36J@FUE-ALEWI-WINX \
--to=alexander.wilhelm@westermo.com \
--cc=ath12k@lists.infradead.org \
--cc=baochen.qiang@oss.qualcomm.com \
--cc=jjohnson@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox