Lines Matching refs:rx_queue
471 ef4_farch_build_rx_desc(struct ef4_rx_queue *rx_queue, unsigned index) in ef4_farch_build_rx_desc() argument
476 rxd = ef4_rx_desc(rx_queue, index); in ef4_farch_build_rx_desc()
477 rx_buf = ef4_rx_buffer(rx_queue, index); in ef4_farch_build_rx_desc()
481 rx_queue->efx->type->rx_buffer_padding, in ef4_farch_build_rx_desc()
489 void ef4_farch_rx_write(struct ef4_rx_queue *rx_queue) in ef4_farch_rx_write() argument
491 struct ef4_nic *efx = rx_queue->efx; in ef4_farch_rx_write()
495 while (rx_queue->notified_count != rx_queue->added_count) { in ef4_farch_rx_write()
497 rx_queue, in ef4_farch_rx_write()
498 rx_queue->notified_count & rx_queue->ptr_mask); in ef4_farch_rx_write()
499 ++rx_queue->notified_count; in ef4_farch_rx_write()
503 write_ptr = rx_queue->added_count & rx_queue->ptr_mask; in ef4_farch_rx_write()
506 ef4_rx_queue_index(rx_queue)); in ef4_farch_rx_write()
509 int ef4_farch_rx_probe(struct ef4_rx_queue *rx_queue) in ef4_farch_rx_probe() argument
511 struct ef4_nic *efx = rx_queue->efx; in ef4_farch_rx_probe()
514 entries = rx_queue->ptr_mask + 1; in ef4_farch_rx_probe()
515 return ef4_alloc_special_buffer(efx, &rx_queue->rxd, in ef4_farch_rx_probe()
519 void ef4_farch_rx_init(struct ef4_rx_queue *rx_queue) in ef4_farch_rx_init() argument
522 struct ef4_nic *efx = rx_queue->efx; in ef4_farch_rx_init()
536 ef4_rx_queue_index(rx_queue), rx_queue->rxd.index, in ef4_farch_rx_init()
537 rx_queue->rxd.index + rx_queue->rxd.entries - 1); in ef4_farch_rx_init()
539 rx_queue->scatter_n = 0; in ef4_farch_rx_init()
542 ef4_init_special_buffer(efx, &rx_queue->rxd); in ef4_farch_rx_init()
548 FRF_AZ_RX_DESCQ_BUF_BASE_ID, rx_queue->rxd.index, in ef4_farch_rx_init()
550 ef4_rx_queue_channel(rx_queue)->channel, in ef4_farch_rx_init()
553 ef4_rx_queue_index(rx_queue), in ef4_farch_rx_init()
555 __ffs(rx_queue->rxd.entries), in ef4_farch_rx_init()
560 ef4_rx_queue_index(rx_queue)); in ef4_farch_rx_init()
563 static void ef4_farch_flush_rx_queue(struct ef4_rx_queue *rx_queue) in ef4_farch_flush_rx_queue() argument
565 struct ef4_nic *efx = rx_queue->efx; in ef4_farch_flush_rx_queue()
571 ef4_rx_queue_index(rx_queue)); in ef4_farch_flush_rx_queue()
575 void ef4_farch_rx_fini(struct ef4_rx_queue *rx_queue) in ef4_farch_rx_fini() argument
578 struct ef4_nic *efx = rx_queue->efx; in ef4_farch_rx_fini()
583 ef4_rx_queue_index(rx_queue)); in ef4_farch_rx_fini()
586 ef4_fini_special_buffer(efx, &rx_queue->rxd); in ef4_farch_rx_fini()
590 void ef4_farch_rx_remove(struct ef4_rx_queue *rx_queue) in ef4_farch_rx_remove() argument
592 ef4_free_special_buffer(rx_queue->efx, &rx_queue->rxd); in ef4_farch_rx_remove()
662 struct ef4_rx_queue *rx_queue; in ef4_farch_do_flush() local
670 ef4_for_each_channel_rx_queue(rx_queue, channel) { in ef4_farch_do_flush()
671 rx_queue->flush_pending = true; in ef4_farch_do_flush()
682 ef4_for_each_channel_rx_queue(rx_queue, channel) { in ef4_farch_do_flush()
687 if (rx_queue->flush_pending) { in ef4_farch_do_flush()
688 rx_queue->flush_pending = false; in ef4_farch_do_flush()
691 ef4_farch_flush_rx_queue(rx_queue); in ef4_farch_do_flush()
721 struct ef4_rx_queue *rx_queue; in ef4_farch_fini_dmaq() local
734 ef4_for_each_channel_rx_queue(rx_queue, channel) in ef4_farch_fini_dmaq()
735 ef4_farch_rx_fini(rx_queue); in ef4_farch_fini_dmaq()
868 static u16 ef4_farch_handle_rx_not_ok(struct ef4_rx_queue *rx_queue, in ef4_farch_handle_rx_not_ok() argument
871 struct ef4_channel *channel = ef4_rx_queue_channel(rx_queue); in ef4_farch_handle_rx_not_ok()
872 struct ef4_nic *efx = rx_queue->efx; in ef4_farch_handle_rx_not_ok()
921 ef4_rx_queue_index(rx_queue), EF4_QWORD_VAL(*event), in ef4_farch_handle_rx_not_ok()
947 ef4_farch_handle_rx_bad_index(struct ef4_rx_queue *rx_queue, unsigned index) in ef4_farch_handle_rx_bad_index() argument
949 struct ef4_channel *channel = ef4_rx_queue_channel(rx_queue); in ef4_farch_handle_rx_bad_index()
950 struct ef4_nic *efx = rx_queue->efx; in ef4_farch_handle_rx_bad_index()
953 if (rx_queue->scatter_n && in ef4_farch_handle_rx_bad_index()
954 index == ((rx_queue->removed_count + rx_queue->scatter_n - 1) & in ef4_farch_handle_rx_bad_index()
955 rx_queue->ptr_mask)) { in ef4_farch_handle_rx_bad_index()
960 expected = rx_queue->removed_count & rx_queue->ptr_mask; in ef4_farch_handle_rx_bad_index()
961 dropped = (index - expected) & rx_queue->ptr_mask; in ef4_farch_handle_rx_bad_index()
986 struct ef4_rx_queue *rx_queue; in ef4_farch_handle_rx_event() local
997 rx_queue = ef4_channel_get_rx_queue(channel); in ef4_farch_handle_rx_event()
1000 expected_ptr = ((rx_queue->removed_count + rx_queue->scatter_n) & in ef4_farch_handle_rx_event()
1001 rx_queue->ptr_mask); in ef4_farch_handle_rx_event()
1005 unlikely(rx_ev_sop != (rx_queue->scatter_n == 0))) { in ef4_farch_handle_rx_event()
1007 !ef4_farch_handle_rx_bad_index(rx_queue, rx_ev_desc_ptr)) in ef4_farch_handle_rx_event()
1011 if (rx_queue->scatter_n) { in ef4_farch_handle_rx_event()
1013 rx_queue, in ef4_farch_handle_rx_event()
1014 rx_queue->removed_count & rx_queue->ptr_mask, in ef4_farch_handle_rx_event()
1015 rx_queue->scatter_n, 0, EF4_RX_PKT_DISCARD); in ef4_farch_handle_rx_event()
1016 rx_queue->removed_count += rx_queue->scatter_n; in ef4_farch_handle_rx_event()
1017 rx_queue->scatter_n = 0; in ef4_farch_handle_rx_event()
1027 rx_queue, in ef4_farch_handle_rx_event()
1028 rx_queue->removed_count & rx_queue->ptr_mask, in ef4_farch_handle_rx_event()
1030 ++rx_queue->removed_count; in ef4_farch_handle_rx_event()
1035 ++rx_queue->scatter_n; in ef4_farch_handle_rx_event()
1060 flags = ef4_farch_handle_rx_not_ok(rx_queue, event); in ef4_farch_handle_rx_event()
1078 ef4_rx_packet(rx_queue, in ef4_farch_handle_rx_event()
1079 rx_queue->removed_count & rx_queue->ptr_mask, in ef4_farch_handle_rx_event()
1080 rx_queue->scatter_n, rx_ev_byte_cnt, flags); in ef4_farch_handle_rx_event()
1081 rx_queue->removed_count += rx_queue->scatter_n; in ef4_farch_handle_rx_event()
1082 rx_queue->scatter_n = 0; in ef4_farch_handle_rx_event()
1114 struct ef4_rx_queue *rx_queue; in ef4_farch_handle_rx_flush_done() local
1125 rx_queue = ef4_channel_get_rx_queue(channel); in ef4_farch_handle_rx_flush_done()
1130 rx_queue->flush_pending = true; in ef4_farch_handle_rx_flush_done()
1133 ef4_farch_magic_event(ef4_rx_queue_channel(rx_queue), in ef4_farch_handle_rx_flush_done()
1134 EF4_CHANNEL_MAGIC_RX_DRAIN(rx_queue)); in ef4_farch_handle_rx_flush_done()
1156 struct ef4_rx_queue *rx_queue = in ef4_farch_handle_generated_event() local
1166 } else if (rx_queue && magic == EF4_CHANNEL_MAGIC_FILL(rx_queue)) { in ef4_farch_handle_generated_event()
1170 ef4_fast_push_rx_descriptors(rx_queue, true); in ef4_farch_handle_generated_event()
1171 } else if (rx_queue && magic == EF4_CHANNEL_MAGIC_RX_DRAIN(rx_queue)) { in ef4_farch_handle_generated_event()
1390 void ef4_farch_rx_defer_refill(struct ef4_rx_queue *rx_queue) in ef4_farch_rx_defer_refill() argument
1392 ef4_farch_magic_event(ef4_rx_queue_channel(rx_queue), in ef4_farch_rx_defer_refill()
1393 EF4_CHANNEL_MAGIC_FILL(rx_queue)); in ef4_farch_rx_defer_refill()