On Thu, 6 Mar 2025 at 06:34, Bjoern A. Zeeb <b...@freebsd.org> wrote:


>
> Or multiple:
> - unlocked register writes
> - rtwn_cmd_sleepable() which defers it to a task which doesn't fly but
>    simply opens more problems, especially for the "SET" operation;
>    otherwise you'll have to hold all packets until you get a callback
>    (I presume) [and make sure crypto state doesn't change anymore].
>    Even more fun, you have to make sure a del key is done before doing
>    another set; which either will have to error or sleep again if the
>    del is sitll pending so simply "reduces chances", or use the taskq
>    for serialization as well (going back to holding packets while any
>    crypto operation is in progress).
>

I did that for my ath10k driver - i buffered frames in a per-node queue
until the
key set/update finished, and then i unblocked. PITA, but it needed to be
done.
I had to do the buffering anyway - I needed to buffer frames until the
firmware
BSS JOIN command completed.

So if you'd like, after we get the crypto cleanup stuff finished enough and
landed, I can tackle seqno next (which removes the TX lock) and then I can
work on pushing some per-STA queue pause stuff into net80211 so we can
delay passing traffic until STA JOIN and key create/update. That way it's
fixed for everyone.



-adrian

Reply via email to