Lines Matching refs:rx_queue

532 efx_rx_desc(struct efx_rx_queue *rx_queue, unsigned int index)
534 return ((efx_qword_t *) (rx_queue->rxd.addr)) + index;
539 efx_build_rx_desc(struct efx_rx_queue *rx_queue, unsigned index)
544 rxd = efx_rx_desc(rx_queue, index);
545 rx_buf = efx_rx_buffer(rx_queue, index);
549 rx_queue->efx->type->rx_buffer_padding,
557 void efx_nic_notify_rx_desc(struct efx_rx_queue *rx_queue)
559 struct efx_nic *efx = rx_queue->efx;
563 while (rx_queue->notified_count != rx_queue->added_count) {
565 rx_queue,
566 rx_queue->notified_count & rx_queue->ptr_mask);
567 ++rx_queue->notified_count;
571 write_ptr = rx_queue->added_count & rx_queue->ptr_mask;
574 efx_rx_queue_index(rx_queue));
577 int efx_nic_probe_rx(struct efx_rx_queue *rx_queue)
579 struct efx_nic *efx = rx_queue->efx;
582 entries = rx_queue->ptr_mask + 1;
583 return efx_alloc_special_buffer(efx, &rx_queue->rxd,
587 void efx_nic_init_rx(struct efx_rx_queue *rx_queue)
590 struct efx_nic *efx = rx_queue->efx;
596 efx_rx_queue_index(rx_queue), rx_queue->rxd.index,
597 rx_queue->rxd.index + rx_queue->rxd.entries - 1);
600 efx_init_special_buffer(efx, &rx_queue->rxd);
606 FRF_AZ_RX_DESCQ_BUF_BASE_ID, rx_queue->rxd.index,
608 efx_rx_queue_channel(rx_queue)->channel,
611 efx_rx_queue_index(rx_queue),
613 __ffs(rx_queue->rxd.entries),
619 efx_rx_queue_index(rx_queue));
622 static void efx_flush_rx_queue(struct efx_rx_queue *rx_queue)
624 struct efx_nic *efx = rx_queue->efx;
630 efx_rx_queue_index(rx_queue));
634 void efx_nic_fini_rx(struct efx_rx_queue *rx_queue)
637 struct efx_nic *efx = rx_queue->efx;
642 efx_rx_queue_index(rx_queue));
645 efx_fini_special_buffer(efx, &rx_queue->rxd);
649 void efx_nic_remove_rx(struct efx_rx_queue *rx_queue)
651 efx_free_special_buffer(rx_queue->efx, &rx_queue->rxd);
680 struct efx_rx_queue *rx_queue;
692 efx_for_each_channel_rx_queue(rx_queue, channel) {
694 rx_queue->flush_pending = true;
715 efx_for_each_channel_rx_queue(rx_queue, channel) {
720 if (rx_queue->flush_pending) {
721 rx_queue->flush_pending = false;
724 efx_flush_rx_queue(rx_queue);
849 static u16 efx_handle_rx_not_ok(struct efx_rx_queue *rx_queue,
852 struct efx_channel *channel = efx_rx_queue_channel(rx_queue);
853 struct efx_nic *efx = rx_queue->efx;
904 efx_rx_queue_index(rx_queue), EFX_QWORD_VAL(*event),
926 efx_handle_rx_bad_index(struct efx_rx_queue *rx_queue, unsigned index)
928 struct efx_nic *efx = rx_queue->efx;
931 expected = rx_queue->removed_count & rx_queue->ptr_mask;
932 dropped = (index - expected) & rx_queue->ptr_mask;
956 struct efx_rx_queue *rx_queue;
971 rx_queue = efx_channel_get_rx_queue(channel);
974 expected_ptr = rx_queue->removed_count & rx_queue->ptr_mask;
976 efx_handle_rx_bad_index(rx_queue, rx_ev_desc_ptr);
986 flags = efx_handle_rx_not_ok(rx_queue, event);
1004 efx_rx_packet(rx_queue, rx_ev_desc_ptr, rx_ev_byte_cnt, flags);
1035 struct efx_rx_queue *rx_queue;
1046 rx_queue = efx_channel_get_rx_queue(channel);
1051 rx_queue->flush_pending = true;
1054 efx_magic_event(efx_rx_queue_channel(rx_queue),
1055 EFX_CHANNEL_MAGIC_RX_DRAIN(rx_queue));
1077 struct efx_rx_queue *rx_queue =
1087 } else if (rx_queue && magic == EFX_CHANNEL_MAGIC_FILL(rx_queue)) {
1091 efx_fast_push_rx_descriptors(rx_queue);
1092 } else if (rx_queue && magic == EFX_CHANNEL_MAGIC_RX_DRAIN(rx_queue)) {
1093 rx_queue->enabled = false;
1342 void efx_nic_generate_fill_event(struct efx_rx_queue *rx_queue)
1344 efx_magic_event(efx_rx_queue_channel(rx_queue),
1345 EFX_CHANNEL_MAGIC_FILL(rx_queue));