Lines Matching full:oct
136 octeon_droq_destroy_ring_buffers(struct octeon_device *oct, in octeon_droq_destroy_ring_buffers() argument
148 lio_unmap_ring(oct->pci_dev, in octeon_droq_destroy_ring_buffers()
163 octeon_droq_setup_ring_buffers(struct octeon_device *oct, in octeon_droq_setup_ring_buffers() argument
171 buf = recv_buffer_alloc(oct, &droq->recv_buf_list[i].pg_info); in octeon_droq_setup_ring_buffers()
174 dev_err(&oct->pci_dev->dev, "%s buffer alloc failed\n", in octeon_droq_setup_ring_buffers()
194 int octeon_delete_droq(struct octeon_device *oct, u32 q_no) in octeon_delete_droq() argument
196 struct octeon_droq *droq = oct->droq[q_no]; in octeon_delete_droq()
198 dev_dbg(&oct->pci_dev->dev, "%s[%d]\n", __func__, q_no); in octeon_delete_droq()
200 octeon_droq_destroy_ring_buffers(oct, droq); in octeon_delete_droq()
204 lio_dma_free(oct, (droq->max_count * OCT_DROQ_DESC_SIZE), in octeon_delete_droq()
208 oct->io_qmask.oq &= ~(1ULL << q_no); in octeon_delete_droq()
209 vfree(oct->droq[q_no]); in octeon_delete_droq()
210 oct->droq[q_no] = NULL; in octeon_delete_droq()
211 oct->num_oqs--; in octeon_delete_droq()
217 int octeon_init_droq(struct octeon_device *oct, in octeon_init_droq() argument
226 int numa_node = dev_to_node(&oct->pci_dev->dev); in octeon_init_droq()
228 dev_dbg(&oct->pci_dev->dev, "%s[%d]\n", __func__, q_no); in octeon_init_droq()
230 droq = oct->droq[q_no]; in octeon_init_droq()
233 droq->oct_dev = oct; in octeon_init_droq()
242 if (OCTEON_CN6XXX(oct)) { in octeon_init_droq()
243 struct octeon_config *conf6x = CHIP_CONF(oct, cn6xxx); in octeon_init_droq()
248 } else if (OCTEON_CN23XX_PF(oct)) { in octeon_init_droq()
249 struct octeon_config *conf23 = CHIP_CONF(oct, cn23xx_pf); in octeon_init_droq()
253 } else if (OCTEON_CN23XX_VF(oct)) { in octeon_init_droq()
254 struct octeon_config *conf23 = CHIP_CONF(oct, cn23xx_vf); in octeon_init_droq()
266 droq->desc_ring = lio_dma_alloc(oct, desc_ring_size, in octeon_init_droq()
270 dev_err(&oct->pci_dev->dev, in octeon_init_droq()
275 dev_dbg(&oct->pci_dev->dev, "droq[%d]: desc_ring: virt: 0x%p, dma: %lx\n", in octeon_init_droq()
277 dev_dbg(&oct->pci_dev->dev, "droq[%d]: num_desc: %d\n", q_no, in octeon_init_droq()
285 dev_err(&oct->pci_dev->dev, "Output queue recv buf list alloc failed\n"); in octeon_init_droq()
289 if (octeon_droq_setup_ring_buffers(oct, droq)) in octeon_init_droq()
295 dev_dbg(&oct->pci_dev->dev, "DROQ INIT: max_empty_descs: %d\n", in octeon_init_droq()
301 oct->fn_list.setup_oq_regs(oct, q_no); in octeon_init_droq()
303 oct->io_qmask.oq |= BIT_ULL(q_no); in octeon_init_droq()
308 octeon_delete_droq(oct, q_no); in octeon_init_droq()
497 struct octeon_device *oct = droq->oct_dev; in octeon_retry_droq_refill() local
502 desc_refilled = octeon_droq_refill(oct, droq); in octeon_retry_droq_refill()
525 octeon_droq_dispatch_pkt(struct octeon_device *oct, in octeon_droq_dispatch_pkt() argument
536 disp_fn = octeon_get_dispatch(oct, (u16)rh->r.opcode, in octeon_droq_dispatch_pkt()
539 rinfo = octeon_create_recv_info(oct, droq, cnt, droq->read_idx); in octeon_droq_dispatch_pkt()
552 dev_err(&oct->pci_dev->dev, "DROQ: No dispatch function (opcode %u/%u)\n", in octeon_droq_dispatch_pkt()
561 static inline void octeon_droq_drop_packets(struct octeon_device *oct, in octeon_droq_drop_packets() argument
579 dev_err(&oct->pci_dev->dev, "DROQ: In drop: pkt with len 0\n"); in octeon_droq_drop_packets()
590 octeon_droq_fast_process_packets(struct octeon_device *oct, in octeon_droq_fast_process_packets() argument
611 dev_err(&oct->pci_dev->dev, in octeon_droq_fast_process_packets()
629 buf_cnt = octeon_droq_dispatch_pkt(oct, droq, rh, info); in octeon_droq_fast_process_packets()
640 if (recv_buffer_recycle(oct, pg_info)) in octeon_droq_fast_process_packets()
687 droq->ops.fptr(oct->octeon_id, in octeon_droq_fast_process_packets()
698 int desc_refilled = octeon_droq_refill(oct, droq); in octeon_droq_fast_process_packets()
717 octeon_droq_drop_packets(oct, droq, (pkts_to_process - pkt)); in octeon_droq_fast_process_packets()
731 octeon_schedule_rxq_oom_work(oct, droq); in octeon_droq_fast_process_packets()
738 octeon_droq_process_packets(struct octeon_device *oct, in octeon_droq_process_packets() argument
754 octeon_droq_fast_process_packets(oct, droq, pkt_count); in octeon_droq_process_packets()
762 (oct, in octeon_droq_process_packets()
781 octeon_droq_process_poll_pkts(struct octeon_device *oct, in octeon_droq_process_poll_pkts() argument
801 octeon_droq_fast_process_packets(oct, droq, in octeon_droq_process_poll_pkts()
813 (oct, in octeon_droq_process_poll_pkts()
823 octeon_enable_irq(struct octeon_device *oct, u32 q_no) in octeon_enable_irq() argument
825 switch (oct->chip_id) { in octeon_enable_irq()
829 (struct octeon_cn6xxx *)oct->chip; in octeon_enable_irq()
835 value = octeon_read_csr(oct, CN6XXX_SLI_PKT_TIME_INT_ENB); in octeon_enable_irq()
837 octeon_write_csr(oct, CN6XXX_SLI_PKT_TIME_INT_ENB, value); in octeon_enable_irq()
838 value = octeon_read_csr(oct, CN6XXX_SLI_PKT_CNT_INT_ENB); in octeon_enable_irq()
840 octeon_write_csr(oct, CN6XXX_SLI_PKT_CNT_INT_ENB, value); in octeon_enable_irq()
849 lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]); in octeon_enable_irq()
853 lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]); in octeon_enable_irq()
856 dev_err(&oct->pci_dev->dev, "%s Unknown Chip\n", __func__); in octeon_enable_irq()
863 int octeon_register_droq_ops(struct octeon_device *oct, u32 q_no, in octeon_register_droq_ops() argument
869 oct_cfg = octeon_get_conf(oct); in octeon_register_droq_ops()
875 dev_err(&oct->pci_dev->dev, "%s: droq_ops pointer is NULL\n", in octeon_register_droq_ops()
881 dev_err(&oct->pci_dev->dev, "%s: droq id (%d) exceeds MAX (%d)\n", in octeon_register_droq_ops()
882 __func__, q_no, (oct->num_oqs - 1)); in octeon_register_droq_ops()
886 droq = oct->droq[q_no]; in octeon_register_droq_ops()
892 int octeon_unregister_droq_ops(struct octeon_device *oct, u32 q_no) in octeon_unregister_droq_ops() argument
897 oct_cfg = octeon_get_conf(oct); in octeon_unregister_droq_ops()
903 dev_err(&oct->pci_dev->dev, "%s: droq id (%d) exceeds MAX (%d)\n", in octeon_unregister_droq_ops()
904 __func__, q_no, oct->num_oqs - 1); in octeon_unregister_droq_ops()
908 droq = oct->droq[q_no]; in octeon_unregister_droq_ops()
911 dev_info(&oct->pci_dev->dev, in octeon_unregister_droq_ops()
924 int octeon_create_droq(struct octeon_device *oct, in octeon_create_droq() argument
929 int numa_node = dev_to_node(&oct->pci_dev->dev); in octeon_create_droq()
931 if (oct->droq[q_no]) { in octeon_create_droq()
932 dev_dbg(&oct->pci_dev->dev, "Droq already in use. Cannot create droq %d again\n", in octeon_create_droq()
947 octeon_set_droq_pkt_op(oct, q_no, 0); in octeon_create_droq()
948 oct->droq[q_no] = droq; in octeon_create_droq()
951 if (octeon_init_droq(oct, q_no, num_descs, desc_size, app_ctx)) { in octeon_create_droq()
952 vfree(oct->droq[q_no]); in octeon_create_droq()
953 oct->droq[q_no] = NULL; in octeon_create_droq()
957 oct->num_oqs++; in octeon_create_droq()
959 dev_dbg(&oct->pci_dev->dev, "%s: Total number of OQ: %d\n", __func__, in octeon_create_droq()
960 oct->num_oqs); in octeon_create_droq()