You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The libbladeRF synchronous interface does not correctly handle the situation when a timeout (or other failure) occurs on the underlying asynchronous stream.
In the RX case, the stream will restart and submit buffers, 0 - N, where N is the number of in-flight transfers allowed for the stream. However, the sync_rx call may be currently waiting on some buffer N+M.
A similar mismatch occurs on the TX side.
Some additional logic will need to be added to sync_tx and sync_rx to notify these functions that a timeout has occurred, and that they should just drop their current data and reset their buffers to an initial state. (This is probably best done in check_worker()).
The text was updated successfully, but these errors were encountered:
When starting an RX stream, the first N buffers, where N is the number
of transfers, will be submitted when the bladerf_stream() call is made.
Therefore, it is incorrect to clear IN_FLIGHT status; this will result in an
assertion firing in the RX callback.
After looking into this, it's become clear that the sync interface does
not correctly handle the situation where the underlying async stream
starts up. Issue #229 has been opened to further track the associated
defect and resolution.
The libbladeRF synchronous interface does not correctly handle the situation when a timeout (or other failure) occurs on the underlying asynchronous stream.
In the RX case, the stream will restart and submit buffers, 0 - N, where N is the number of in-flight transfers allowed for the stream. However, the sync_rx call may be currently waiting on some buffer N+M.
A similar mismatch occurs on the TX side.
Some additional logic will need to be added to sync_tx and sync_rx to notify these functions that a timeout has occurred, and that they should just drop their current data and reset their buffers to an initial state. (This is probably best done in check_worker()).
The text was updated successfully, but these errors were encountered: