Originally reported by Bartosz Podrygajlo on 2026-04-30 — GitLab #1079
Instead of buffering all TX IQ on a ring buffer, they can be put in a message buffer directly, reducing the number of memcpys in the TX chain.
- pre-allocate message in
trx_write function
zmq_msg_t msg;
zmq_msg_init_size(&msg, size);
- Convert IQ from
c16_t in the txdata buffer to cf_t in the message
- push message onto a thread-safe queue
- in
poll_thread, use the queue instead of the buffer whenever the opposite side requests IQ
This should allow higher throughput on slower CPUs.
Instead of buffering all TX IQ on a ring buffer, they can be put in a message buffer directly, reducing the number of memcpys in the TX chain.
trx_writefunctionc16_tin the txdata buffer tocf_tin the messagepoll_thread, use the queue instead of the buffer whenever the opposite side requests IQThis should allow higher throughput on slower CPUs.