Lines Matching refs:tx_ring
399 txr = &adapter->tx_ring[i]; in ena_init_io_rings_basic()
413 que->tx_ring = txr; in ena_init_io_rings_basic()
431 txr = &adapter->tx_ring[i]; in ena_init_io_rings_advanced()
473 struct ena_ring *txr = &adapter->tx_ring[qid]; in ena_free_io_ring_resources()
569 ena_release_all_tx_dmamap(struct ena_ring *tx_ring) in ena_release_all_tx_dmamap() argument
571 struct ena_adapter *adapter = tx_ring->adapter; in ena_release_all_tx_dmamap()
580 for (i = 0; i < tx_ring->ring_size; ++i) { in ena_release_all_tx_dmamap()
581 tx_info = &tx_ring->tx_buffer_info[i]; in ena_release_all_tx_dmamap()
614 struct ena_ring *tx_ring = que->tx_ring; in ena_setup_tx_resources() local
624 size = sizeof(struct ena_tx_buffer) * tx_ring->ring_size; in ena_setup_tx_resources()
626 tx_ring->tx_buffer_info = malloc(size, M_DEVBUF, M_NOWAIT | M_ZERO); in ena_setup_tx_resources()
627 if (unlikely(tx_ring->tx_buffer_info == NULL)) in ena_setup_tx_resources()
630 size = sizeof(uint16_t) * tx_ring->ring_size; in ena_setup_tx_resources()
631 tx_ring->free_tx_ids = malloc(size, M_DEVBUF, M_NOWAIT | M_ZERO); in ena_setup_tx_resources()
632 if (unlikely(tx_ring->free_tx_ids == NULL)) in ena_setup_tx_resources()
635 size = tx_ring->tx_max_header_size; in ena_setup_tx_resources()
636 tx_ring->push_buf_intermediate_buf = malloc(size, M_DEVBUF, in ena_setup_tx_resources()
638 if (unlikely(tx_ring->push_buf_intermediate_buf == NULL)) in ena_setup_tx_resources()
642 for (i = 0; i < tx_ring->ring_size; i++) in ena_setup_tx_resources()
643 tx_ring->free_tx_ids[i] = i; in ena_setup_tx_resources()
646 ena_reset_counters((counter_u64_t *)&tx_ring->tx_stats, in ena_setup_tx_resources()
647 sizeof(tx_ring->tx_stats)); in ena_setup_tx_resources()
649 tx_ring->next_to_use = 0; in ena_setup_tx_resources()
650 tx_ring->next_to_clean = 0; in ena_setup_tx_resources()
651 tx_ring->acum_pkts = 0; in ena_setup_tx_resources()
654 ENA_RING_MTX_LOCK(tx_ring); in ena_setup_tx_resources()
655 drbr_flush(adapter->ifp, tx_ring->br); in ena_setup_tx_resources()
656 ENA_RING_MTX_UNLOCK(tx_ring); in ena_setup_tx_resources()
659 for (i = 0; i < tx_ring->ring_size; i++) { in ena_setup_tx_resources()
661 &tx_ring->tx_buffer_info[i].dmamap); in ena_setup_tx_resources()
671 map = tx_ring->tx_buffer_info[i].nm_info.map_seg; in ena_setup_tx_resources()
687 TASK_INIT(&tx_ring->enqueue_task, 0, ena_deferred_mq_start, tx_ring); in ena_setup_tx_resources()
688 tx_ring->enqueue_tq = taskqueue_create_fast("ena_tx_enque", M_NOWAIT, in ena_setup_tx_resources()
689 taskqueue_thread_enqueue, &tx_ring->enqueue_tq); in ena_setup_tx_resources()
690 if (unlikely(tx_ring->enqueue_tq == NULL)) { in ena_setup_tx_resources()
693 i = tx_ring->ring_size; in ena_setup_tx_resources()
697 tx_ring->running = true; in ena_setup_tx_resources()
707 taskqueue_start_threads_cpuset(&tx_ring->enqueue_tq, 1, PI_NET, in ena_setup_tx_resources()
713 ena_release_all_tx_dmamap(tx_ring); in ena_setup_tx_resources()
715 free(tx_ring->free_tx_ids, M_DEVBUF); in ena_setup_tx_resources()
716 tx_ring->free_tx_ids = NULL; in ena_setup_tx_resources()
718 free(tx_ring->tx_buffer_info, M_DEVBUF); in ena_setup_tx_resources()
719 tx_ring->tx_buffer_info = NULL; in ena_setup_tx_resources()
734 struct ena_ring *tx_ring = &adapter->tx_ring[qid]; in ena_free_tx_resources() local
740 while (taskqueue_cancel(tx_ring->enqueue_tq, &tx_ring->enqueue_task, in ena_free_tx_resources()
742 taskqueue_drain(tx_ring->enqueue_tq, &tx_ring->enqueue_task); in ena_free_tx_resources()
744 taskqueue_free(tx_ring->enqueue_tq); in ena_free_tx_resources()
746 ENA_RING_MTX_LOCK(tx_ring); in ena_free_tx_resources()
748 drbr_flush(adapter->ifp, tx_ring->br); in ena_free_tx_resources()
751 for (int i = 0; i < tx_ring->ring_size; i++) { in ena_free_tx_resources()
753 tx_ring->tx_buffer_info[i].dmamap, BUS_DMASYNC_POSTWRITE); in ena_free_tx_resources()
755 tx_ring->tx_buffer_info[i].dmamap); in ena_free_tx_resources()
757 tx_ring->tx_buffer_info[i].dmamap); in ena_free_tx_resources()
761 nm_info = &tx_ring->tx_buffer_info[i].nm_info; in ena_free_tx_resources()
777 m_freem(tx_ring->tx_buffer_info[i].mbuf); in ena_free_tx_resources()
778 tx_ring->tx_buffer_info[i].mbuf = NULL; in ena_free_tx_resources()
780 ENA_RING_MTX_UNLOCK(tx_ring); in ena_free_tx_resources()
783 free(tx_ring->tx_buffer_info, M_DEVBUF); in ena_free_tx_resources()
784 tx_ring->tx_buffer_info = NULL; in ena_free_tx_resources()
786 free(tx_ring->free_tx_ids, M_DEVBUF); in ena_free_tx_resources()
787 tx_ring->free_tx_ids = NULL; in ena_free_tx_resources()
789 free(tx_ring->push_buf_intermediate_buf, M_DEVBUF); in ena_free_tx_resources()
790 tx_ring->push_buf_intermediate_buf = NULL; in ena_free_tx_resources()
1354 struct ena_ring *tx_ring = &adapter->tx_ring[qid]; in ena_free_tx_bufs() local
1356 ENA_RING_MTX_LOCK(tx_ring); in ena_free_tx_bufs()
1357 for (int i = 0; i < tx_ring->ring_size; i++) { in ena_free_tx_bufs()
1358 struct ena_tx_buffer *tx_info = &tx_ring->tx_buffer_info[i]; in ena_free_tx_bufs()
1381 ENA_RING_MTX_UNLOCK(tx_ring); in ena_free_tx_bufs()
1464 ring = &adapter->tx_ring[i]; in ena_create_io_queues()
1945 struct ena_ring *tx_ring; in ena_unmask_all_io_irqs() local
1954 tx_ring = &adapter->tx_ring[i]; in ena_unmask_all_io_irqs()
1955 counter_u64_add(tx_ring->tx_stats.unmask_interrupt_num, 1); in ena_unmask_all_io_irqs()
1992 adapter->tx_ring[i].ring_size = new_tx_size; in set_io_rings_size()
2052 cur_tx_ring_size = adapter->tx_ring[0].ring_size; in create_queues_with_size_backoff()
3014 struct ena_ring *tx_ring) in check_missing_comp_in_tx_queue() argument
3025 for (i = 0; i < tx_ring->ring_size; i++) { in check_missing_comp_in_tx_queue()
3026 tx_buf = &tx_ring->tx_buffer_info[i]; in check_missing_comp_in_tx_queue()
3035 if (unlikely(!tx_ring->first_interrupt && in check_missing_comp_in_tx_queue()
3043 "Reset the device\n", tx_ring->qid); in check_missing_comp_in_tx_queue()
3055 tx_ring->qid, i); in check_missing_comp_in_tx_queue()
3071 counter_u64_add(tx_ring->tx_stats.missing_tx_comp, missed_tx); in check_missing_comp_in_tx_queue()
3085 struct ena_ring *tx_ring; in check_for_missing_completions() local
3104 tx_ring = &adapter->tx_ring[i]; in check_for_missing_completions()
3107 rc = check_missing_comp_in_tx_queue(adapter, tx_ring); in check_for_missing_completions()