Lines Matching refs:rx_queue

2125 static int efx_ef10_rx_probe(struct efx_rx_queue *rx_queue)  in efx_ef10_rx_probe()  argument
2127 return efx_nic_alloc_buffer(rx_queue->efx, &rx_queue->rxd.buf, in efx_ef10_rx_probe()
2128 (rx_queue->ptr_mask + 1) * in efx_ef10_rx_probe()
2133 static void efx_ef10_rx_init(struct efx_rx_queue *rx_queue) in efx_ef10_rx_init() argument
2138 struct efx_channel *channel = efx_rx_queue_channel(rx_queue); in efx_ef10_rx_init()
2139 size_t entries = rx_queue->rxd.buf.len / EFX_BUF_SIZE; in efx_ef10_rx_init()
2140 struct efx_nic *efx = rx_queue->efx; in efx_ef10_rx_init()
2148 rx_queue->scatter_n = 0; in efx_ef10_rx_init()
2149 rx_queue->scatter_len = 0; in efx_ef10_rx_init()
2151 MCDI_SET_DWORD(inbuf, INIT_RXQ_IN_SIZE, rx_queue->ptr_mask + 1); in efx_ef10_rx_init()
2153 MCDI_SET_DWORD(inbuf, INIT_RXQ_IN_LABEL, efx_rx_queue_index(rx_queue)); in efx_ef10_rx_init()
2155 efx_rx_queue_index(rx_queue)); in efx_ef10_rx_init()
2162 dma_addr = rx_queue->rxd.buf.dma_addr; in efx_ef10_rx_init()
2165 efx_rx_queue_index(rx_queue), entries, (u64)dma_addr); in efx_ef10_rx_init()
2178 efx_rx_queue_index(rx_queue)); in efx_ef10_rx_init()
2181 static void efx_ef10_rx_fini(struct efx_rx_queue *rx_queue) in efx_ef10_rx_fini() argument
2185 struct efx_nic *efx = rx_queue->efx; in efx_ef10_rx_fini()
2190 efx_rx_queue_index(rx_queue)); in efx_ef10_rx_fini()
2205 static void efx_ef10_rx_remove(struct efx_rx_queue *rx_queue) in efx_ef10_rx_remove() argument
2207 efx_nic_free_buffer(rx_queue->efx, &rx_queue->rxd.buf); in efx_ef10_rx_remove()
2212 efx_ef10_build_rx_desc(struct efx_rx_queue *rx_queue, unsigned int index) in efx_ef10_build_rx_desc() argument
2217 rxd = efx_rx_desc(rx_queue, index); in efx_ef10_build_rx_desc()
2218 rx_buf = efx_rx_buffer(rx_queue, index); in efx_ef10_build_rx_desc()
2224 static void efx_ef10_rx_write(struct efx_rx_queue *rx_queue) in efx_ef10_rx_write() argument
2226 struct efx_nic *efx = rx_queue->efx; in efx_ef10_rx_write()
2231 write_count = rx_queue->added_count & ~7; in efx_ef10_rx_write()
2232 if (rx_queue->notified_count == write_count) in efx_ef10_rx_write()
2237 rx_queue, in efx_ef10_rx_write()
2238 rx_queue->notified_count & rx_queue->ptr_mask); in efx_ef10_rx_write()
2239 while (++rx_queue->notified_count != write_count); in efx_ef10_rx_write()
2243 write_count & rx_queue->ptr_mask); in efx_ef10_rx_write()
2245 efx_rx_queue_index(rx_queue)); in efx_ef10_rx_write()
2250 static void efx_ef10_rx_defer_refill(struct efx_rx_queue *rx_queue) in efx_ef10_rx_defer_refill() argument
2252 struct efx_channel *channel = efx_rx_queue_channel(rx_queue); in efx_ef10_rx_defer_refill()
2417 static void efx_ef10_handle_rx_wrong_queue(struct efx_rx_queue *rx_queue, in efx_ef10_handle_rx_wrong_queue() argument
2420 struct efx_nic *efx = rx_queue->efx; in efx_ef10_handle_rx_wrong_queue()
2424 efx_rx_queue_index(rx_queue), rx_queue_label); in efx_ef10_handle_rx_wrong_queue()
2430 efx_ef10_handle_rx_bad_lbits(struct efx_rx_queue *rx_queue, in efx_ef10_handle_rx_bad_lbits() argument
2433 unsigned int dropped = (actual - expected) & rx_queue->ptr_mask; in efx_ef10_handle_rx_bad_lbits()
2434 struct efx_nic *efx = rx_queue->efx; in efx_ef10_handle_rx_bad_lbits()
2444 static void efx_ef10_handle_rx_abort(struct efx_rx_queue *rx_queue) in efx_ef10_handle_rx_abort() argument
2448 netif_dbg(rx_queue->efx, hw, rx_queue->efx->net_dev, in efx_ef10_handle_rx_abort()
2450 rx_queue->scatter_n); in efx_ef10_handle_rx_abort()
2452 rx_desc_ptr = rx_queue->removed_count & rx_queue->ptr_mask; in efx_ef10_handle_rx_abort()
2454 efx_rx_packet(rx_queue, rx_desc_ptr, rx_queue->scatter_n, in efx_ef10_handle_rx_abort()
2457 rx_queue->removed_count += rx_queue->scatter_n; in efx_ef10_handle_rx_abort()
2458 rx_queue->scatter_n = 0; in efx_ef10_handle_rx_abort()
2459 rx_queue->scatter_len = 0; in efx_ef10_handle_rx_abort()
2460 ++efx_rx_queue_channel(rx_queue)->n_rx_nodesc_trunc; in efx_ef10_handle_rx_abort()
2469 struct efx_rx_queue *rx_queue; in efx_ef10_handle_rx_event() local
2488 rx_queue = efx_channel_get_rx_queue(channel); in efx_ef10_handle_rx_event()
2490 if (unlikely(rx_queue_label != efx_rx_queue_index(rx_queue))) in efx_ef10_handle_rx_event()
2491 efx_ef10_handle_rx_wrong_queue(rx_queue, rx_queue_label); in efx_ef10_handle_rx_event()
2493 n_descs = ((next_ptr_lbits - rx_queue->removed_count) & in efx_ef10_handle_rx_event()
2496 if (n_descs != rx_queue->scatter_n + 1) { in efx_ef10_handle_rx_event()
2500 if (unlikely(n_descs == rx_queue->scatter_n)) { in efx_ef10_handle_rx_event()
2501 if (rx_queue->scatter_n == 0 || rx_bytes != 0) in efx_ef10_handle_rx_event()
2505 rx_queue->scatter_n, in efx_ef10_handle_rx_event()
2507 efx_ef10_handle_rx_abort(rx_queue); in efx_ef10_handle_rx_event()
2517 rx_queue->scatter_n != 0 || rx_cont) { in efx_ef10_handle_rx_event()
2519 rx_queue, next_ptr_lbits, in efx_ef10_handle_rx_event()
2520 (rx_queue->removed_count + in efx_ef10_handle_rx_event()
2521 rx_queue->scatter_n + 1) & in efx_ef10_handle_rx_event()
2527 rx_queue->scatter_n = 1; in efx_ef10_handle_rx_event()
2528 rx_queue->scatter_len = 0; in efx_ef10_handle_rx_event()
2534 ++rx_queue->scatter_n; in efx_ef10_handle_rx_event()
2535 rx_queue->scatter_len += rx_bytes; in efx_ef10_handle_rx_event()
2561 efx_rx_packet(rx_queue, in efx_ef10_handle_rx_event()
2562 rx_queue->removed_count & rx_queue->ptr_mask, in efx_ef10_handle_rx_event()
2563 rx_queue->scatter_n, rx_queue->scatter_len, in efx_ef10_handle_rx_event()
2565 rx_queue->removed_count += rx_queue->scatter_n; in efx_ef10_handle_rx_event()
2568 rx_queue->scatter_n = 0; in efx_ef10_handle_rx_event()
2569 rx_queue->scatter_len = 0; in efx_ef10_handle_rx_event()
2643 efx_fast_push_rx_descriptors(&channel->rx_queue, true); in efx_ef10_handle_driver_generated_event()
2808 struct efx_rx_queue *rx_queue; in efx_ef10_fini_dmaq() local
2822 efx_for_each_channel_rx_queue(rx_queue, channel) in efx_ef10_fini_dmaq()
2823 efx_ef10_rx_fini(rx_queue); in efx_ef10_fini_dmaq()