-int svm_fifo_enqueue_nowait (svm_fifo_t * f, u32 max_bytes,
- const u8 * copy_from_here);
-int svm_fifo_enqueue_with_offset (svm_fifo_t * f, u32 offset,
- u32 required_bytes, u8 * copy_from_here);
-int svm_fifo_dequeue_nowait (svm_fifo_t * f, u32 max_bytes, u8 * copy_here);
-
-int svm_fifo_peek (svm_fifo_t * f, u32 offset, u32 max_bytes, u8 * copy_here);
-int svm_fifo_dequeue_drop (svm_fifo_t * f, u32 max_bytes);
+/**
+ * Advance tail pointer
+ *
+ * Useful for moving tail pointer after external enqueue.
+ *
+ * @param f fifo
+ * @param len number of bytes to add to tail
+ */
+void svm_fifo_enqueue_nocopy (svm_fifo_t * f, u32 len);
+/**
+ * Enqueue array of @ref svm_fifo_seg_t in order
+ *
+ * @param f fifo
+ * @param segs array of segments to enqueue
+ * @param n_segs number of segments
+ * @param allow_partial if set partial enqueues are allowed
+ * @return len if enqueue was successful, error otherwise
+ */
+int svm_fifo_enqueue_segments (svm_fifo_t * f, const svm_fifo_seg_t segs[],
+ u32 n_segs, u8 allow_partial);
+/**
+ * Overwrite fifo head with new data
+ *
+ * This should be typically used by dgram transport protocols that need
+ * to update the dgram header after dequeuing a chunk of data. It assumes
+ * that the dgram header is at most spread over two chunks.
+ *
+ * @param f fifo
+ * @param src src of new data
+ * @param len length of new data
+ */
+void svm_fifo_overwrite_head (svm_fifo_t * f, u8 * src, u32 len);
+/**
+ * Dequeue data from fifo
+ *
+ * Data is dequeued to consumer provided buffer and head is atomically
+ * updated. This should not be used in combination with ooo lookups. If
+ * ooo peeking of data is needed in combination with dequeuing use @ref
+ * svm_fifo_dequeue_drop.
+ *
+ * @param f fifo
+ * @param len length of data to dequeue
+ * @param dst buffer to where to dequeue the data
+ * @return number of bytes dequeued or error
+ */
+int svm_fifo_dequeue (svm_fifo_t * f, u32 len, u8 * dst);
+/**
+ * Peek data from fifo
+ *
+ * Data is copied from requested offset into provided dst buffer. Head is
+ * not updated.
+ *
+ * @param f fifo
+ * @param offset offset from which to copy the data
+ * @param len length of data to copy
+ * @param dst buffer to where to dequeue the data
+ * @return number of bytes peeked
+ */
+int svm_fifo_peek (svm_fifo_t * f, u32 offset, u32 len, u8 * dst);
+/**
+ * Dequeue and drop bytes from fifo
+ *
+ * Advances fifo head by requested amount of bytes.
+ *
+ * @param f fifo
+ * @param len number of bytes to drop
+ * @return number of bytes dropped
+ */
+int svm_fifo_dequeue_drop (svm_fifo_t * f, u32 len);
+/**
+ * Dequeue and drop all bytes from fifo
+ *
+ * Advances head to tail position.
+ *
+ * @param f fifo
+ */