Lines Matching full:oct
50 void *lio_get_dispatch_arg(struct octeon_device *oct,
110 struct octeon_device *oct = droq->oct_dev; in lio_droq_check_hw_for_pkts() local
114 pkt_count = lio_read_csr32(oct, droq->pkts_sent_reg); in lio_droq_check_hw_for_pkts()
158 lio_droq_destroy_ring_buffers(struct octeon_device *oct, in lio_droq_destroy_ring_buffers() argument
174 lio_droq_setup_ring_buffers(struct octeon_device *oct, in lio_droq_setup_ring_buffers() argument
185 lio_dev_err(oct, "%s buffer alloc failed\n", in lio_droq_setup_ring_buffers()
195 lio_map_ring(oct->device, droq->recv_buf_list[i].buffer, in lio_droq_setup_ring_buffers()
207 lio_delete_droq(struct octeon_device *oct, uint32_t q_no) in lio_delete_droq() argument
209 struct lio_droq *droq = oct->droq[q_no]; in lio_delete_droq()
211 lio_dev_dbg(oct, "%s[%d]\n", __func__, q_no); in lio_delete_droq()
219 lio_droq_destroy_ring_buffers(oct, droq); in lio_delete_droq()
226 oct->io_qmask.oq &= ~(1ULL << q_no); in lio_delete_droq()
227 bzero(oct->droq[q_no], sizeof(struct lio_droq)); in lio_delete_droq()
228 oct->num_oqs--; in lio_delete_droq()
237 struct octeon_device *oct = droq->oct_dev; in lio_droq_bh() local
238 struct lio_instr_queue *iq = oct->instr_queue[droq->q_no]; in lio_droq_bh()
241 reschedule = lio_droq_process_packets(oct, droq, oct->rx_budget); in lio_droq_bh()
244 tx_done = lio_flush_iq(oct, iq, oct->tx_budget); in lio_droq_bh()
253 lio_init_droq(struct octeon_device *oct, uint32_t q_no, in lio_init_droq() argument
261 lio_dev_dbg(oct, "%s[%d]\n", __func__, q_no); in lio_init_droq()
263 droq = oct->droq[q_no]; in lio_init_droq()
266 droq->oct_dev = oct; in lio_init_droq()
275 if (LIO_CN23XX_PF(oct)) { in lio_init_droq()
276 struct lio_config *conf23 = LIO_CHIP_CONF(oct, cn23xx_pf); in lio_init_droq()
292 lio_dev_err(oct, "Output queue %d ring alloc failed\n", q_no); in lio_init_droq()
296 lio_dev_dbg(oct, "droq[%d]: desc_ring: virt: 0x%p, dma: %llx\n", q_no, in lio_init_droq()
298 lio_dev_dbg(oct, "droq[%d]: num_desc: %d\n", q_no, droq->max_count); in lio_init_droq()
305 lio_dev_err(oct, "Output queue recv buf list alloc failed\n"); in lio_init_droq()
309 if (lio_droq_setup_ring_buffers(oct, droq)) in lio_init_droq()
315 lio_dev_dbg(oct, "DROQ INIT: max_empty_descs: %d\n", in lio_init_droq()
322 oct->fn_list.setup_oq_regs(oct, q_no); in lio_init_droq()
324 oct->io_qmask.oq |= BIT_ULL(q_no); in lio_init_droq()
330 lio_dev_dbg(oct, "Initializing droq%d taskqueue\n", q_no); in lio_init_droq()
337 &oct->ioq_vector[q_no].affinity_mask, in lio_init_droq()
338 "lio%d_droq%d_task", oct->octeon_id, in lio_init_droq()
344 lio_delete_droq(oct, q_no); in lio_init_droq()
524 lio_droq_dispatch_pkt(struct octeon_device *oct, struct lio_droq *droq, in lio_droq_dispatch_pkt() argument
533 disp_fn = lio_get_dispatch(oct, (uint16_t)rh->r.opcode, in lio_droq_dispatch_pkt()
536 rinfo = lio_create_recv_info(oct, droq, cnt, droq->read_idx); in lio_droq_dispatch_pkt()
549 lio_dev_err(oct, "DROQ: No dispatch function (opcode %u/%u)\n", in lio_droq_dispatch_pkt()
559 lio_droq_drop_packets(struct octeon_device *oct, struct lio_droq *droq, in lio_droq_drop_packets() argument
577 lio_dev_err(oct, "DROQ: In drop: pkt with len 0\n"); in lio_droq_drop_packets()
588 lio_droq_fast_process_packets(struct octeon_device *oct, struct lio_droq *droq, in lio_droq_fast_process_packets() argument
607 lio_dev_err(oct, in lio_droq_fast_process_packets()
627 buf_cnt = lio_droq_dispatch_pkt(oct, droq, rh, info); in lio_droq_fast_process_packets()
693 int desc_refilled = lio_droq_refill(oct, droq); in lio_droq_fast_process_packets()
701 lio_write_csr32(oct, droq->pkts_credit_reg, in lio_droq_fast_process_packets()
715 lio_droq_drop_packets(oct, droq, (pkts_to_process - pkt)); in lio_droq_fast_process_packets()
725 lio_droq_process_packets(struct octeon_device *oct, struct lio_droq *droq, in lio_droq_process_packets() argument
744 pkts_processed = lio_droq_fast_process_packets(oct, droq, pkt_count); in lio_droq_process_packets()
755 rdisp->disp_fn(rdisp->rinfo, lio_get_dispatch_arg(oct, in lio_droq_process_packets()
768 lio_register_droq_ops(struct octeon_device *oct, uint32_t q_no, in lio_register_droq_ops() argument
774 lio_cfg = lio_get_conf(oct); in lio_register_droq_ops()
780 lio_dev_err(oct, "%s: droq_ops pointer is NULL\n", __func__); in lio_register_droq_ops()
785 lio_dev_err(oct, "%s: droq id (%d) exceeds MAX (%d)\n", in lio_register_droq_ops()
786 __func__, q_no, (oct->num_oqs - 1)); in lio_register_droq_ops()
789 droq = oct->droq[q_no]; in lio_register_droq_ops()
801 lio_unregister_droq_ops(struct octeon_device *oct, uint32_t q_no) in lio_unregister_droq_ops() argument
806 lio_cfg = lio_get_conf(oct); in lio_unregister_droq_ops()
812 lio_dev_err(oct, "%s: droq id (%d) exceeds MAX (%d)\n", in lio_unregister_droq_ops()
813 __func__, q_no, oct->num_oqs - 1); in lio_unregister_droq_ops()
817 droq = oct->droq[q_no]; in lio_unregister_droq_ops()
820 lio_dev_info(oct, "Droq id (%d) not available.\n", q_no); in lio_unregister_droq_ops()
836 lio_create_droq(struct octeon_device *oct, uint32_t q_no, uint32_t num_descs, in lio_create_droq() argument
840 if (oct->droq[q_no]->oct_dev != NULL) { in lio_create_droq()
841 lio_dev_dbg(oct, "Droq already in use. Cannot create droq %d again\n", in lio_create_droq()
847 if (lio_init_droq(oct, q_no, num_descs, desc_size, app_ctx)) { in lio_create_droq()
848 bzero(oct->droq[q_no], sizeof(struct lio_droq)); in lio_create_droq()
852 oct->num_oqs++; in lio_create_droq()
854 lio_dev_dbg(oct, "%s: Total number of OQ: %d\n", __func__, in lio_create_droq()
855 oct->num_oqs); in lio_create_droq()