Looks like the the commit https://patchwork.kernel.org/project/linux-wireless/patch/20221230121850.218810-1-alexander@xxxxxxxxxxxxxx/
has a good chance to solve the issue:
1) Queues are stopped due to PS
2) Then there is a TX attempt. But due to the (PS) queue stop
wake_tx_push_queue() aborts the queue run
3) Then we hit the bug the patch fixes: The queue is not marked to
have pending packets and thus packets on it are not transmitted.
Packets get only send when you happen to try tx when the queue is operational. (And then you will get all the packets sitting in the queue.)
Does that make sense? And more crucial, is the patch fixing that for you?