Lines Matching refs:oct
107 u32 octeon_droq_check_hw_for_pkts(struct octeon_device *oct, in octeon_droq_check_hw_for_pkts() argument
150 octeon_droq_destroy_ring_buffers(struct octeon_device *oct, in octeon_droq_destroy_ring_buffers() argument
158 lio_unmap_ring_info(oct->pci_dev, in octeon_droq_destroy_ring_buffers()
162 lio_unmap_ring(oct->pci_dev, in octeon_droq_destroy_ring_buffers()
176 octeon_droq_setup_ring_buffers(struct octeon_device *oct, in octeon_droq_setup_ring_buffers() argument
184 buf = recv_buffer_alloc(oct, droq->q_no, droq->buffer_size); in octeon_droq_setup_ring_buffers()
187 dev_err(&oct->pci_dev->dev, "%s buffer alloc failed\n", in octeon_droq_setup_ring_buffers()
200 lio_map_ring(oct->pci_dev, in octeon_droq_setup_ring_buffers()
212 int octeon_delete_droq(struct octeon_device *oct, u32 q_no) in octeon_delete_droq() argument
214 struct octeon_droq *droq = oct->droq[q_no]; in octeon_delete_droq()
216 dev_dbg(&oct->pci_dev->dev, "%s[%d]\n", __func__, q_no); in octeon_delete_droq()
218 octeon_droq_destroy_ring_buffers(oct, droq); in octeon_delete_droq()
222 cnnic_free_aligned_dma(oct->pci_dev, droq->info_list, in octeon_delete_droq()
228 lio_dma_free(oct, (droq->max_count * OCT_DROQ_DESC_SIZE), in octeon_delete_droq()
236 int octeon_init_droq(struct octeon_device *oct, in octeon_init_droq() argument
246 dev_dbg(&oct->pci_dev->dev, "%s[%d]\n", __func__, q_no); in octeon_init_droq()
248 droq = oct->droq[q_no]; in octeon_init_droq()
251 droq->oct_dev = oct; in octeon_init_droq()
260 if (OCTEON_CN6XXX(oct)) { in octeon_init_droq()
261 struct octeon_config *conf6x = CHIP_FIELD(oct, cn6xxx, conf); in octeon_init_droq()
271 droq->desc_ring = lio_dma_alloc(oct, desc_ring_size, in octeon_init_droq()
275 dev_err(&oct->pci_dev->dev, in octeon_init_droq()
280 dev_dbg(&oct->pci_dev->dev, "droq[%d]: desc_ring: virt: 0x%p, dma: %lx\n", in octeon_init_droq()
282 dev_dbg(&oct->pci_dev->dev, "droq[%d]: num_desc: %d\n", q_no, in octeon_init_droq()
286 cnnic_alloc_aligned_dma(oct->pci_dev, in octeon_init_droq()
293 dev_err(&oct->pci_dev->dev, "Cannot allocate memory for info list.\n"); in octeon_init_droq()
294 lio_dma_free(oct, (droq->max_count * OCT_DROQ_DESC_SIZE), in octeon_init_droq()
303 dev_err(&oct->pci_dev->dev, "Output queue recv buf list alloc failed\n"); in octeon_init_droq()
307 if (octeon_droq_setup_ring_buffers(oct, droq)) in octeon_init_droq()
313 dev_dbg(&oct->pci_dev->dev, "DROQ INIT: max_empty_descs: %d\n", in octeon_init_droq()
321 oct->fn_list.setup_oq_regs(oct, q_no); in octeon_init_droq()
323 oct->io_qmask.oq |= (1 << q_no); in octeon_init_droq()
328 octeon_delete_droq(oct, q_no); in octeon_init_droq()
515 octeon_droq_dispatch_pkt(struct octeon_device *oct, in octeon_droq_dispatch_pkt() argument
526 disp_fn = octeon_get_dispatch(oct, (u16)rh->r.opcode, in octeon_droq_dispatch_pkt()
529 rinfo = octeon_create_recv_info(oct, droq, cnt, droq->read_idx); in octeon_droq_dispatch_pkt()
542 dev_err(&oct->pci_dev->dev, "DROQ: No dispatch function\n"); in octeon_droq_dispatch_pkt()
549 static inline void octeon_droq_drop_packets(struct octeon_device *oct, in octeon_droq_drop_packets() argument
566 dev_err(&oct->pci_dev->dev, "DROQ: In drop: pkt with len 0\n"); in octeon_droq_drop_packets()
576 octeon_droq_fast_process_packets(struct octeon_device *oct, in octeon_droq_fast_process_packets() argument
594 dev_err(&oct->pci_dev->dev, in octeon_droq_fast_process_packets()
612 buf_cnt = octeon_droq_dispatch_pkt(oct, droq, rh, info); in octeon_droq_fast_process_packets()
617 lio_unmap_ring(oct->pci_dev, in octeon_droq_fast_process_packets()
630 nicbuf = octeon_fast_packet_alloc(oct, droq, in octeon_droq_fast_process_packets()
648 lio_unmap_ring(oct->pci_dev, in octeon_droq_fast_process_packets()
672 droq->ops.fptr(oct->octeon_id, in octeon_droq_fast_process_packets()
681 int desc_refilled = octeon_droq_refill(oct, droq); in octeon_droq_fast_process_packets()
700 octeon_droq_drop_packets(oct, droq, (pkts_to_process - pkt)); in octeon_droq_fast_process_packets()
710 octeon_droq_process_packets(struct octeon_device *oct, in octeon_droq_process_packets() argument
727 pkts_processed = octeon_droq_fast_process_packets(oct, droq, pkt_count); in octeon_droq_process_packets()
740 (oct, in octeon_droq_process_packets()
758 octeon_droq_process_poll_pkts(struct octeon_device *oct, in octeon_droq_process_poll_pkts() argument
779 octeon_droq_fast_process_packets(oct, droq, in octeon_droq_process_poll_pkts()
786 octeon_droq_check_hw_for_pkts(oct, droq); in octeon_droq_process_poll_pkts()
797 (oct, in octeon_droq_process_poll_pkts()
806 octeon_process_droq_poll_cmd(struct octeon_device *oct, u32 q_no, int cmd, in octeon_process_droq_poll_cmd() argument
812 oct_cfg = octeon_get_conf(oct); in octeon_process_droq_poll_cmd()
818 dev_err(&oct->pci_dev->dev, "%s: droq id (%d) exceeds MAX (%d)\n", in octeon_process_droq_poll_cmd()
819 __func__, q_no, (oct->num_oqs - 1)); in octeon_process_droq_poll_cmd()
823 droq = oct->droq[q_no]; in octeon_process_droq_poll_cmd()
826 return octeon_droq_process_poll_pkts(oct, droq, arg); in octeon_process_droq_poll_cmd()
831 return octeon_droq_process_packets(oct, droq, pkt_cnt); in octeon_process_droq_poll_cmd()
839 switch (oct->chip_id) { in octeon_process_droq_poll_cmd()
843 (struct octeon_cn6xxx *)oct->chip; in octeon_process_droq_poll_cmd()
847 octeon_read_csr(oct, in octeon_process_droq_poll_cmd()
850 octeon_write_csr(oct, in octeon_process_droq_poll_cmd()
854 octeon_read_csr(oct, in octeon_process_droq_poll_cmd()
857 octeon_write_csr(oct, in octeon_process_droq_poll_cmd()
873 dev_err(&oct->pci_dev->dev, "%s Unknown command: %d\n", __func__, cmd); in octeon_process_droq_poll_cmd()
877 int octeon_register_droq_ops(struct octeon_device *oct, u32 q_no, in octeon_register_droq_ops() argument
884 oct_cfg = octeon_get_conf(oct); in octeon_register_droq_ops()
890 dev_err(&oct->pci_dev->dev, "%s: droq_ops pointer is NULL\n", in octeon_register_droq_ops()
896 dev_err(&oct->pci_dev->dev, "%s: droq id (%d) exceeds MAX (%d)\n", in octeon_register_droq_ops()
897 __func__, q_no, (oct->num_oqs - 1)); in octeon_register_droq_ops()
901 droq = oct->droq[q_no]; in octeon_register_droq_ops()
912 int octeon_unregister_droq_ops(struct octeon_device *oct, u32 q_no) in octeon_unregister_droq_ops() argument
918 oct_cfg = octeon_get_conf(oct); in octeon_unregister_droq_ops()
924 dev_err(&oct->pci_dev->dev, "%s: droq id (%d) exceeds MAX (%d)\n", in octeon_unregister_droq_ops()
925 __func__, q_no, oct->num_oqs - 1); in octeon_unregister_droq_ops()
929 droq = oct->droq[q_no]; in octeon_unregister_droq_ops()
932 dev_info(&oct->pci_dev->dev, in octeon_unregister_droq_ops()
947 int octeon_create_droq(struct octeon_device *oct, in octeon_create_droq() argument
953 if (oct->droq[q_no]) { in octeon_create_droq()
954 dev_dbg(&oct->pci_dev->dev, "Droq already in use. Cannot create droq %d again\n", in octeon_create_droq()
966 octeon_set_droq_pkt_op(oct, q_no, 0); in octeon_create_droq()
967 oct->droq[q_no] = droq; in octeon_create_droq()
970 octeon_init_droq(oct, q_no, num_descs, desc_size, app_ctx); in octeon_create_droq()
972 oct->num_oqs++; in octeon_create_droq()
974 dev_dbg(&oct->pci_dev->dev, "%s: Total number of OQ: %d\n", __func__, in octeon_create_droq()
975 oct->num_oqs); in octeon_create_droq()
985 octeon_delete_droq(oct, q_no); in octeon_create_droq()