typedef struct
{
uint16_t desc_index;
- void *ring;
+ void *queue;
uint32_t len;
/** next buffer present (chained buffers) */
#define MEMIF_BUFFER_FLAG_NEXT (1 << 0)
-/** states that buffer is from rx ring */
-#define MEMIF_BUFFER_FLAG_RX (1 << 1)
uint8_t flags;
void *data;
} memif_buffer_t;
@param count - number of memif buffers to enqueue
@param count_out - returns number of allocated buffers
- Slave is producer of buffers.
+ Enqueue buffers to specified tx queue. Can only be used by slave.
+ Updates desc_index field for each memif buffer.
If connection handle points to master returns MEMIF_ERR_INVAL_ARG.
\return memif_err_t
memif_buffer_t * bufs, uint16_t count,
uint16_t * count_out);
+/** \brief Memif buffer enq tx at idx
+ @param conn - memif connection handle
+ @param buf_a - memif buffer
+ @param buf_b - memif buffer
+
+ Swap descriptors for provided buffers and update the buffers
+*/
+int memif_buffer_requeue (memif_conn_handle_t conn, memif_buffer_t *buf_a,
+ memif_buffer_t *buf_b);
+
/** \brief Memif buffer alloc
@param conn - memif connection handle
@param qid - number identifying queue
memif_buffer_t * bufs, uint16_t count,
uint16_t * count_out, uint16_t size);
-/** \brief Memif refill ring
+/** \brief Memif set next free buffer
+ @param conn - memif connection handle
+ @param qid - number identifying queue
+ @param buf - next free buffer
+
+ Sets next free descriptor pointer for specified tx queue.
+ The next allocation will happen at this buffer.
+*/
+int memif_set_next_free_buffer (memif_conn_handle_t conn, uint16_t qid,
+ memif_buffer_t *buf);
+
+/** \brief Memif refill queue
@param conn - memif connection handle
@param qid - number identifying queue
@param count - number of buffers to be placed on ring