Lines Matching refs:fifo

12 static void fm10k_fifo_init(struct fm10k_mbx_fifo *fifo, u32 *buffer, u16 size)  in fm10k_fifo_init()  argument
14 fifo->buffer = buffer; in fm10k_fifo_init()
15 fifo->size = size; in fm10k_fifo_init()
16 fifo->head = 0; in fm10k_fifo_init()
17 fifo->tail = 0; in fm10k_fifo_init()
26 static u16 fm10k_fifo_used(struct fm10k_mbx_fifo *fifo) in fm10k_fifo_used() argument
28 return fifo->tail - fifo->head; in fm10k_fifo_used()
37 static u16 fm10k_fifo_unused(struct fm10k_mbx_fifo *fifo) in fm10k_fifo_unused() argument
39 return fifo->size + fifo->head - fifo->tail; in fm10k_fifo_unused()
48 static bool fm10k_fifo_empty(struct fm10k_mbx_fifo *fifo) in fm10k_fifo_empty() argument
50 return fifo->head == fifo->tail; in fm10k_fifo_empty()
60 static u16 fm10k_fifo_head_offset(struct fm10k_mbx_fifo *fifo, u16 offset) in fm10k_fifo_head_offset() argument
62 return (fifo->head + offset) & (fifo->size - 1); in fm10k_fifo_head_offset()
72 static u16 fm10k_fifo_tail_offset(struct fm10k_mbx_fifo *fifo, u16 offset) in fm10k_fifo_tail_offset() argument
74 return (fifo->tail + offset) & (fifo->size - 1); in fm10k_fifo_tail_offset()
83 static u16 fm10k_fifo_head_len(struct fm10k_mbx_fifo *fifo) in fm10k_fifo_head_len() argument
85 u32 *head = fifo->buffer + fm10k_fifo_head_offset(fifo, 0); in fm10k_fifo_head_len()
88 if (fm10k_fifo_empty(fifo)) in fm10k_fifo_head_len()
101 static u16 fm10k_fifo_head_drop(struct fm10k_mbx_fifo *fifo) in fm10k_fifo_head_drop() argument
103 u16 len = fm10k_fifo_head_len(fifo); in fm10k_fifo_head_drop()
106 fifo->head += len; in fm10k_fifo_head_drop()
118 static void fm10k_fifo_drop_all(struct fm10k_mbx_fifo *fifo) in fm10k_fifo_drop_all() argument
120 fifo->head = fifo->tail; in fm10k_fifo_drop_all()
236 static void fm10k_fifo_write_copy(struct fm10k_mbx_fifo *fifo, in fm10k_fifo_write_copy() argument
239 u16 end = fm10k_fifo_tail_offset(fifo, tail_offset); in fm10k_fifo_write_copy()
240 u32 *tail = fifo->buffer + end; in fm10k_fifo_write_copy()
243 end = fifo->size - end; in fm10k_fifo_write_copy()
247 memcpy(fifo->buffer, msg + end, (len - end) << 2); in fm10k_fifo_write_copy()
264 static s32 fm10k_fifo_enqueue(struct fm10k_mbx_fifo *fifo, const u32 *msg) in fm10k_fifo_enqueue() argument
269 if (len > fifo->size) in fm10k_fifo_enqueue()
273 if (len > fm10k_fifo_unused(fifo)) in fm10k_fifo_enqueue()
277 fm10k_fifo_write_copy(fifo, msg, 0, len); in fm10k_fifo_enqueue()
283 fifo->tail += len; in fm10k_fifo_enqueue()
298 struct fm10k_mbx_fifo *fifo = &mbx->rx; in fm10k_mbx_validate_msg_size() local
308 msg = fifo->buffer + fm10k_fifo_tail_offset(fifo, total_len); in fm10k_mbx_validate_msg_size()
333 struct fm10k_mbx_fifo *fifo = &mbx->tx; in fm10k_mbx_write_copy() local
335 u32 *head = fifo->buffer; in fm10k_mbx_write_copy()
349 end = fm10k_fifo_head_offset(fifo, mbx->pulled); in fm10k_mbx_write_copy()
356 for (end = fifo->size - end; len; head = fifo->buffer) { in fm10k_mbx_write_copy()
386 struct fm10k_mbx_fifo *fifo = &mbx->tx; in fm10k_mbx_pull_head() local
393 len = fm10k_fifo_used(fifo) - mbx->pulled; in fm10k_mbx_pull_head()
402 for (len = fm10k_fifo_head_len(fifo); in fm10k_mbx_pull_head()
404 len = fm10k_fifo_head_len(fifo)) { in fm10k_mbx_pull_head()
405 mbx->pulled -= fm10k_fifo_head_drop(fifo); in fm10k_mbx_pull_head()
426 struct fm10k_mbx_fifo *fifo = &mbx->rx; in fm10k_mbx_read_copy() local
428 u32 *tail = fifo->buffer; in fm10k_mbx_read_copy()
438 end = fm10k_fifo_tail_offset(fifo, mbx->pushed); in fm10k_mbx_read_copy()
442 for (end = fifo->size - end; len; tail = fifo->buffer) { in fm10k_mbx_read_copy()
475 struct fm10k_mbx_fifo *fifo = &mbx->rx; in fm10k_mbx_push_tail() local
479 len = fm10k_fifo_unused(fifo) - mbx->pushed; in fm10k_mbx_push_tail()
505 fifo->tail += len; in fm10k_mbx_push_tail()
588 static u16 fm10k_fifo_crc(struct fm10k_mbx_fifo *fifo, u16 offset, in fm10k_fifo_crc() argument
591 u32 *data = fifo->buffer + offset; in fm10k_fifo_crc()
594 offset = fifo->size - offset; in fm10k_fifo_crc()
599 data = fifo->buffer; in fm10k_fifo_crc()
640 struct fm10k_mbx_fifo *fifo = &mbx->rx; in fm10k_mbx_verify_remote_crc() local
642 u16 offset = fm10k_fifo_tail_offset(fifo, mbx->pushed) - len; in fm10k_mbx_verify_remote_crc()
647 mbx->remote = fm10k_fifo_crc(fifo, offset, len, mbx->remote); in fm10k_mbx_verify_remote_crc()
705 struct fm10k_mbx_fifo *fifo = &mbx->rx; in fm10k_mbx_dequeue_rx() local
710 for (cnt = 0; !fm10k_fifo_empty(fifo); cnt++) { in fm10k_mbx_dequeue_rx()
711 err = fm10k_tlv_msg_parse(hw, fifo->buffer + fifo->head, in fm10k_mbx_dequeue_rx()
716 fm10k_fifo_head_drop(fifo); in fm10k_mbx_dequeue_rx()
720 memmove(fifo->buffer, fifo->buffer + fifo->tail, mbx->pushed << 2); in fm10k_mbx_dequeue_rx()
723 fifo->tail -= fifo->head; in fm10k_mbx_dequeue_rx()
724 fifo->head = 0; in fm10k_mbx_dequeue_rx()
856 struct fm10k_mbx_fifo *fifo = &mbx->tx; in fm10k_mbx_create_data_hdr() local
863 crc = fm10k_fifo_crc(fifo, fm10k_fifo_head_offset(fifo, mbx->pulled), in fm10k_mbx_create_data_hdr()
1921 struct fm10k_mbx_fifo *fifo = &mbx->tx; in fm10k_sm_mbx_transmit() local
1936 msg = fifo->buffer + fm10k_fifo_head_offset(fifo, len); in fm10k_sm_mbx_transmit()