thunderbolt: Write descriptors in tb_ring_poll()

When the ring is not in interrupt mode, it depends on something
enqueuing new frames to write the descriptors from ring->queue to the
hardware, and that can take a long time. Since we know that we just
released one slot, we can push the next frame directly from
tb_ring_poll().

Reported-by: Alan Borzeszkowski <alan.borzeszkowski@linux.intel.com>
Assisted-by: LLM
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
This commit is contained in:
Mika Westerberg 2026-09-07 16:42:19 +03:00
parent 20bea8ceeb
commit 4d84caebab

View File

@ -439,6 +439,13 @@ struct ring_frame *tb_ring_poll(struct tb_ring *ring)
}
ring->tail = (ring->tail + 1) % ring->size;
/*
* There is one more slot available so we can push next
* descriptor to the ring. This is needed when the ring
* is created with %RING_FLAG_NO_INTERRUPT.
*/
ring_write_descriptors(ring, true);
}
unlock: