/kernel/linux/linux-5.10/drivers/net/ethernet/cavium/liquidio/ |
H A D | octeon_droq.c | 91 * @param droq - Droq on which count is checked. 94 u32 octeon_droq_check_hw_for_pkts(struct octeon_droq *droq) in octeon_droq_check_hw_for_pkts() argument 99 pkt_count = readl(droq->pkts_sent_reg); in octeon_droq_check_hw_for_pkts() 101 last_count = pkt_count - droq->pkt_count; in octeon_droq_check_hw_for_pkts() 102 droq->pkt_count = pkt_count; in octeon_droq_check_hw_for_pkts() 104 /* we shall write to cnts at napi irq enable or end of droq tasklet */ in octeon_droq_check_hw_for_pkts() 106 atomic_add(last_count, &droq->pkts_pending); in octeon_droq_check_hw_for_pkts() 111 static void octeon_droq_compute_max_packet_bufs(struct octeon_droq *droq) in octeon_droq_compute_max_packet_bufs() argument 120 droq->max_empty_descs = 0; in octeon_droq_compute_max_packet_bufs() 123 droq in octeon_droq_compute_max_packet_bufs() 130 octeon_droq_reset_indices(struct octeon_droq *droq) octeon_droq_reset_indices() argument 140 octeon_droq_destroy_ring_buffers(struct octeon_device *oct, struct octeon_droq *droq) octeon_droq_destroy_ring_buffers() argument 167 octeon_droq_setup_ring_buffers(struct octeon_device *oct, struct octeon_droq *droq) octeon_droq_setup_ring_buffers() argument 200 struct octeon_droq *droq = oct->droq[q_no]; octeon_delete_droq() local 226 struct octeon_droq *droq; octeon_init_droq() local 332 octeon_create_recv_info( struct octeon_device *octeon_dev, struct octeon_droq *droq, u32 buf_cnt, u32 idx) octeon_create_recv_info() argument 389 octeon_droq_refill_pullup_descs(struct octeon_droq *droq, struct octeon_droq_desc *desc_ring) octeon_droq_refill_pullup_descs() argument 431 octeon_droq_refill(struct octeon_device *octeon_dev, struct octeon_droq *droq) octeon_droq_refill() argument 498 octeon_retry_droq_refill(struct octeon_droq *droq) octeon_retry_droq_refill() argument 528 octeon_droq_dispatch_pkt(struct octeon_device *oct, struct octeon_droq *droq, union octeon_rh *rh, struct octeon_droq_info *info) octeon_droq_dispatch_pkt() argument 564 octeon_droq_drop_packets(struct octeon_device *oct, struct octeon_droq *droq, u32 cnt) octeon_droq_drop_packets() argument 593 octeon_droq_fast_process_packets(struct octeon_device *oct, struct octeon_droq *droq, u32 pkts_to_process) octeon_droq_fast_process_packets() argument 741 octeon_droq_process_packets(struct octeon_device *oct, struct octeon_droq *droq, u32 budget) octeon_droq_process_packets() argument 783 octeon_droq_process_poll_pkts(struct octeon_device *oct, struct octeon_droq *droq, u32 budget) octeon_droq_process_poll_pkts() argument 869 struct octeon_droq *droq; octeon_register_droq_ops() local 897 struct octeon_droq *droq; octeon_unregister_droq_ops() local 929 struct octeon_droq *droq; octeon_create_droq() local [all...] |
H A D | lio_core.c | 431 struct octeon_droq *droq) in octeon_schedule_rxq_oom_work() 435 struct cavium_wq *wq = &lio->rxq_status_wq[droq->q_no]; in octeon_schedule_rxq_oom_work() 447 struct octeon_droq *droq = oct->droq[q_no]; in octnet_poll_check_rxq_oom_status() local 449 if (!ifstate_check(lio, LIO_IFSTATE_RUNNING) || !droq) in octnet_poll_check_rxq_oom_status() 452 if (octeon_retry_droq_refill(droq)) in octnet_poll_check_rxq_oom_status() 453 octeon_schedule_rxq_oom_work(oct, droq); in octnet_poll_check_rxq_oom_status() 539 /* droq creation and local register settings. */ in octeon_setup_droq() 545 dev_dbg(&oct->pci_dev->dev, "Using default droq %d\n", q_no); in octeon_setup_droq() 549 /* Enable the droq queue in octeon_setup_droq() 430 octeon_schedule_rxq_oom_work(struct octeon_device *oct, struct octeon_droq *droq) octeon_schedule_rxq_oom_work() argument 578 struct octeon_droq *droq = liquidio_push_packet() local 723 struct octeon_droq *droq = arg; liquidio_napi_drv_callback() local 751 struct octeon_droq *droq; liquidio_napi_poll() local 813 struct octeon_droq *droq; liquidio_setup_io_queues() local 910 liquidio_schedule_msix_droq_pkt_handler(struct octeon_droq *droq, u64 ret) liquidio_schedule_msix_droq_pkt_handler() argument 939 struct octeon_droq *droq = oct->droq[ioq_vector->droq_index]; liquidio_msix_intr_handler() local 958 struct octeon_droq *droq; liquidio_schedule_droq_pkt_handlers() local [all...] |
H A D | cn66xx_device.c | 304 struct octeon_droq *droq = oct->droq[oq_no]; in lio_cn6xxx_setup_oq_regs() local 307 droq->desc_ring_dma); in lio_cn6xxx_setup_oq_regs() 308 octeon_write_csr(oct, CN6XXX_SLI_OQ_SIZE(oq_no), droq->max_count); in lio_cn6xxx_setup_oq_regs() 311 droq->buffer_size); in lio_cn6xxx_setup_oq_regs() 314 droq->pkts_sent_reg = in lio_cn6xxx_setup_oq_regs() 316 droq->pkts_credit_reg = in lio_cn6xxx_setup_oq_regs() 508 struct octeon_droq *droq; in lio_cn6xxx_process_droq_intr_regs() local 529 droq = oct->droq[oq_n in lio_cn6xxx_process_droq_intr_regs() [all...] |
H A D | octeon_droq.h | 222 * the octeon id, pointer to buffer from droq and length of 329 * Allocates space for the descriptor ring for the droq and sets the 333 * @param q_no - droq no. ranges from 0 - 3. 344 * Frees the space for descriptor ring for the droq. 347 * @param q_no - droq no. ranges from 0 - 3. 352 /** Register a change in droq operations. The ops field has a pointer to a 400 u32 octeon_droq_check_hw_for_pkts(struct octeon_droq *droq); 406 struct octeon_droq *droq, 410 struct octeon_droq *droq, u32 budget); 414 int octeon_retry_droq_refill(struct octeon_droq *droq); [all...] |
H A D | octeon_device.c | 651 vfree(oct->droq[i]); in octeon_free_device_mem() 929 oct->droq[0] = vzalloc_node(sizeof(*oct->droq[0]), numa_node); in octeon_setup_output_queues() 930 if (!oct->droq[0]) in octeon_setup_output_queues() 931 oct->droq[0] = vzalloc(sizeof(*oct->droq[0])); in octeon_setup_output_queues() 932 if (!oct->droq[0]) in octeon_setup_output_queues() 936 vfree(oct->droq[oq_no]); in octeon_setup_output_queues() 937 oct->droq[oq_no] = NULL; in octeon_setup_output_queues() 1281 return oct->droq[q_n in octeon_get_rx_qsize() 1429 lio_enable_irq(struct octeon_droq *droq, struct octeon_instr_queue *iq) lio_enable_irq() argument [all...] |
H A D | cn23xx_vf_device.c | 247 struct octeon_droq *droq = oct->droq[oq_no]; in cn23xx_setup_vf_oq_regs() local 250 droq->desc_ring_dma); in cn23xx_setup_vf_oq_regs() 251 octeon_write_csr(oct, CN23XX_VF_SLI_OQ_SIZE(oq_no), droq->max_count); in cn23xx_setup_vf_oq_regs() 254 droq->buffer_size); in cn23xx_setup_vf_oq_regs() 257 droq->pkts_sent_reg = in cn23xx_setup_vf_oq_regs() 259 droq->pkts_credit_reg = in cn23xx_setup_vf_oq_regs() 491 struct octeon_droq *droq = oct->droq[ioq_vector->droq_index]; in cn23xx_vf_msix_interrupt_handler() local 496 pkts_sent = readq(droq in cn23xx_vf_msix_interrupt_handler() [all...] |
H A D | lio_ethtool.c | 969 rx_pending = oct->droq[0]->max_count; in lio_ethtool_get_ringparam() 1213 writel(oct->droq[i]->max_count, in lio_reset_queues() 1214 oct->droq[i]->pkts_credit_reg); in lio_reset_queues() 1273 rx_count_old = oct->droq[0]->max_count; in lio_ethtool_set_ringparam() 1436 /*sum of oct->droq[oq_no]->stats->rx_pkts_received */ in lio_get_ethtool_stats() 1440 /*sum of oct->droq[oq_no]->stats->rx_bytes_received */ in lio_get_ethtool_stats() 1450 /*sum of oct->droq[oq_no]->stats->rx_dropped + in lio_get_ethtool_stats() 1451 *oct->droq[oq_no]->stats->dropped_nodispatch + in lio_get_ethtool_stats() 1452 *oct->droq[oq_no]->stats->dropped_toomany + in lio_get_ethtool_stats() 1453 *oct->droq[oq_n in lio_get_ethtool_stats() [all...] |
H A D | octeon_mailbox.c | 222 if (!oct->droq[i]) in get_vf_stats() 224 stats->rx_packets += oct->droq[i]->stats.rx_pkts_received; in get_vf_stats() 225 stats->rx_bytes += oct->droq[i]->stats.rx_bytes_received; in get_vf_stats()
|
H A D | cn23xx_pf_device.c | 631 struct octeon_droq *droq = oct->droq[oq_no]; in cn23xx_setup_oq_regs() local 639 droq->desc_ring_dma); in cn23xx_setup_oq_regs() 640 octeon_write_csr(oct, CN23XX_SLI_OQ_SIZE(oq_no), droq->max_count); in cn23xx_setup_oq_regs() 643 droq->buffer_size); in cn23xx_setup_oq_regs() 646 droq->pkts_sent_reg = in cn23xx_setup_oq_regs() 648 droq->pkts_credit_reg = in cn23xx_setup_oq_regs() 948 struct octeon_droq *droq = oct->droq[ioq_vector->droq_index]; in cn23xx_pf_msix_interrupt_handler() local 952 if (!droq) { in cn23xx_pf_msix_interrupt_handler() [all...] |
H A D | octeon_main.h | 76 struct octeon_droq *droq);
|
H A D | lio_vf_main.c | 87 pkt_cnt += octeon_droq_check_hw_for_pkts(oct->droq[i]); in lio_wait_for_oq_pkts() 687 oct->droq[0]->ops.poll_mode = 0; in liquidio_destroy_nic_device() 926 oct->droq[0]->ops.poll_mode = 1; in liquidio_open() 993 oct->droq[0]->ops.poll_mode = 0; in liquidio_stop() 1211 oq_stats = &oct->droq[oq_no]->stats; in liquidio_get_stats64() 2419 writel(oct->droq[j]->max_count, oct->droq[j]->pkts_credit_reg); in octeon_device_init()
|
H A D | octeon_network.h | 490 static inline void octeon_fast_packet_next(struct octeon_droq *droq, in octeon_fast_packet_next() argument 495 skb_put_data(nicbuf, get_rbd(droq->recv_buf_list[idx].buffer), in octeon_fast_packet_next()
|
H A D | octeon_device.h | 495 struct octeon_droq *droq[MAX_POSSIBLE_OCTEON_OUTPUT_QUEUES]; member 889 void lio_enable_irq(struct octeon_droq *droq, struct octeon_instr_queue *iq);
|
/kernel/linux/linux-6.6/drivers/net/ethernet/cavium/liquidio/ |
H A D | octeon_droq.c | 91 * @param droq - Droq on which count is checked. 94 u32 octeon_droq_check_hw_for_pkts(struct octeon_droq *droq) in octeon_droq_check_hw_for_pkts() argument 99 pkt_count = readl(droq->pkts_sent_reg); in octeon_droq_check_hw_for_pkts() 101 last_count = pkt_count - droq->pkt_count; in octeon_droq_check_hw_for_pkts() 102 droq->pkt_count = pkt_count; in octeon_droq_check_hw_for_pkts() 104 /* we shall write to cnts at napi irq enable or end of droq tasklet */ in octeon_droq_check_hw_for_pkts() 106 atomic_add(last_count, &droq->pkts_pending); in octeon_droq_check_hw_for_pkts() 112 static void octeon_droq_compute_max_packet_bufs(struct octeon_droq *droq) in octeon_droq_compute_max_packet_bufs() argument 121 droq->max_empty_descs = 0; in octeon_droq_compute_max_packet_bufs() 124 droq in octeon_droq_compute_max_packet_bufs() 131 octeon_droq_reset_indices(struct octeon_droq *droq) octeon_droq_reset_indices() argument 141 octeon_droq_destroy_ring_buffers(struct octeon_device *oct, struct octeon_droq *droq) octeon_droq_destroy_ring_buffers() argument 168 octeon_droq_setup_ring_buffers(struct octeon_device *oct, struct octeon_droq *droq) octeon_droq_setup_ring_buffers() argument 201 struct octeon_droq *droq = oct->droq[q_no]; octeon_delete_droq() local 228 struct octeon_droq *droq; octeon_init_droq() local 334 octeon_create_recv_info( struct octeon_device *octeon_dev, struct octeon_droq *droq, u32 buf_cnt, u32 idx) octeon_create_recv_info() argument 391 octeon_droq_refill_pullup_descs(struct octeon_droq *droq, struct octeon_droq_desc *desc_ring) octeon_droq_refill_pullup_descs() argument 433 octeon_droq_refill(struct octeon_device *octeon_dev, struct octeon_droq *droq) octeon_droq_refill() argument 500 octeon_retry_droq_refill(struct octeon_droq *droq) octeon_retry_droq_refill() argument 530 octeon_droq_dispatch_pkt(struct octeon_device *oct, struct octeon_droq *droq, union octeon_rh *rh, struct octeon_droq_info *info) octeon_droq_dispatch_pkt() argument 566 octeon_droq_drop_packets(struct octeon_device *oct, struct octeon_droq *droq, u32 cnt) octeon_droq_drop_packets() argument 595 octeon_droq_fast_process_packets(struct octeon_device *oct, struct octeon_droq *droq, u32 pkts_to_process) octeon_droq_fast_process_packets() argument 743 octeon_droq_process_packets(struct octeon_device *oct, struct octeon_droq *droq, u32 budget) octeon_droq_process_packets() argument 786 octeon_droq_process_poll_pkts(struct octeon_device *oct, struct octeon_droq *droq, u32 budget) octeon_droq_process_poll_pkts() argument 872 struct octeon_droq *droq; octeon_register_droq_ops() local 900 struct octeon_droq *droq; octeon_unregister_droq_ops() local 933 struct octeon_droq *droq; octeon_create_droq() local [all...] |
H A D | lio_core.c | 438 struct octeon_droq *droq) in octeon_schedule_rxq_oom_work() 442 struct cavium_wq *wq = &lio->rxq_status_wq[droq->q_no]; in octeon_schedule_rxq_oom_work() 454 struct octeon_droq *droq = oct->droq[q_no]; in octnet_poll_check_rxq_oom_status() local 456 if (!ifstate_check(lio, LIO_IFSTATE_RUNNING) || !droq) in octnet_poll_check_rxq_oom_status() 459 if (octeon_retry_droq_refill(droq)) in octnet_poll_check_rxq_oom_status() 460 octeon_schedule_rxq_oom_work(oct, droq); in octnet_poll_check_rxq_oom_status() 547 /* droq creation and local register settings. */ in octeon_setup_droq() 553 dev_dbg(&oct->pci_dev->dev, "Using default droq %d\n", q_no); in octeon_setup_droq() 557 /* Enable the droq queue in octeon_setup_droq() 437 octeon_schedule_rxq_oom_work(struct octeon_device *oct, struct octeon_droq *droq) octeon_schedule_rxq_oom_work() argument 586 struct octeon_droq *droq = liquidio_push_packet() local 731 struct octeon_droq *droq = arg; liquidio_napi_drv_callback() local 754 struct octeon_droq *droq; liquidio_napi_poll() local 816 struct octeon_droq *droq; liquidio_setup_io_queues() local 914 liquidio_schedule_msix_droq_pkt_handler(struct octeon_droq *droq, u64 ret) liquidio_schedule_msix_droq_pkt_handler() argument 943 struct octeon_droq *droq = oct->droq[ioq_vector->droq_index]; liquidio_msix_intr_handler() local 962 struct octeon_droq *droq; liquidio_schedule_droq_pkt_handlers() local [all...] |
H A D | cn66xx_device.c | 304 struct octeon_droq *droq = oct->droq[oq_no]; in lio_cn6xxx_setup_oq_regs() local 307 droq->desc_ring_dma); in lio_cn6xxx_setup_oq_regs() 308 octeon_write_csr(oct, CN6XXX_SLI_OQ_SIZE(oq_no), droq->max_count); in lio_cn6xxx_setup_oq_regs() 311 droq->buffer_size); in lio_cn6xxx_setup_oq_regs() 314 droq->pkts_sent_reg = in lio_cn6xxx_setup_oq_regs() 316 droq->pkts_credit_reg = in lio_cn6xxx_setup_oq_regs() 508 struct octeon_droq *droq; in lio_cn6xxx_process_droq_intr_regs() local 529 droq = oct->droq[oq_n in lio_cn6xxx_process_droq_intr_regs() [all...] |
H A D | octeon_droq.h | 222 * the octeon id, pointer to buffer from droq and length of 329 * Allocates space for the descriptor ring for the droq and sets the 333 * @param q_no - droq no. ranges from 0 - 3. 344 * Frees the space for descriptor ring for the droq. 347 * @param q_no - droq no. ranges from 0 - 3. 352 /** Register a change in droq operations. The ops field has a pointer to a 400 u32 octeon_droq_check_hw_for_pkts(struct octeon_droq *droq); 406 struct octeon_droq *droq, 410 struct octeon_droq *droq, u32 budget); 414 int octeon_retry_droq_refill(struct octeon_droq *droq); [all...] |
H A D | octeon_device.c | 652 vfree(oct->droq[i]); in octeon_free_device_mem() 937 oct->droq[0] = vzalloc_node(sizeof(*oct->droq[0]), numa_node); in octeon_setup_output_queues() 938 if (!oct->droq[0]) in octeon_setup_output_queues() 939 oct->droq[0] = vzalloc(sizeof(*oct->droq[0])); in octeon_setup_output_queues() 940 if (!oct->droq[0]) in octeon_setup_output_queues() 944 vfree(oct->droq[oq_no]); in octeon_setup_output_queues() 945 oct->droq[oq_no] = NULL; in octeon_setup_output_queues() 1296 return oct->droq[q_n in octeon_get_rx_qsize() 1451 lio_enable_irq(struct octeon_droq *droq, struct octeon_instr_queue *iq) lio_enable_irq() argument [all...] |
H A D | cn23xx_vf_device.c | 247 struct octeon_droq *droq = oct->droq[oq_no]; in cn23xx_setup_vf_oq_regs() local 250 droq->desc_ring_dma); in cn23xx_setup_vf_oq_regs() 251 octeon_write_csr(oct, CN23XX_VF_SLI_OQ_SIZE(oq_no), droq->max_count); in cn23xx_setup_vf_oq_regs() 254 droq->buffer_size); in cn23xx_setup_vf_oq_regs() 257 droq->pkts_sent_reg = in cn23xx_setup_vf_oq_regs() 259 droq->pkts_credit_reg = in cn23xx_setup_vf_oq_regs() 491 struct octeon_droq *droq = oct->droq[ioq_vector->droq_index]; in cn23xx_vf_msix_interrupt_handler() local 496 pkts_sent = readq(droq in cn23xx_vf_msix_interrupt_handler() [all...] |
H A D | lio_ethtool.c | 972 rx_pending = oct->droq[0]->max_count; in lio_ethtool_get_ringparam() 1216 writel(oct->droq[i]->max_count, in lio_reset_queues() 1217 oct->droq[i]->pkts_credit_reg); in lio_reset_queues() 1279 rx_count_old = oct->droq[0]->max_count; in lio_ethtool_set_ringparam() 1442 /*sum of oct->droq[oq_no]->stats->rx_pkts_received */ in lio_get_ethtool_stats() 1446 /*sum of oct->droq[oq_no]->stats->rx_bytes_received */ in lio_get_ethtool_stats() 1456 /*sum of oct->droq[oq_no]->stats->rx_dropped + in lio_get_ethtool_stats() 1457 *oct->droq[oq_no]->stats->dropped_nodispatch + in lio_get_ethtool_stats() 1458 *oct->droq[oq_no]->stats->dropped_toomany + in lio_get_ethtool_stats() 1459 *oct->droq[oq_n in lio_get_ethtool_stats() [all...] |
H A D | octeon_mailbox.c | 222 if (!oct->droq[i]) in get_vf_stats() 224 stats->rx_packets += oct->droq[i]->stats.rx_pkts_received; in get_vf_stats() 225 stats->rx_bytes += oct->droq[i]->stats.rx_bytes_received; in get_vf_stats()
|
H A D | cn23xx_pf_device.c | 631 struct octeon_droq *droq = oct->droq[oq_no]; in cn23xx_setup_oq_regs() local 639 droq->desc_ring_dma); in cn23xx_setup_oq_regs() 640 octeon_write_csr(oct, CN23XX_SLI_OQ_SIZE(oq_no), droq->max_count); in cn23xx_setup_oq_regs() 643 droq->buffer_size); in cn23xx_setup_oq_regs() 646 droq->pkts_sent_reg = in cn23xx_setup_oq_regs() 648 droq->pkts_credit_reg = in cn23xx_setup_oq_regs() 946 struct octeon_droq *droq = oct->droq[ioq_vector->droq_index]; in cn23xx_pf_msix_interrupt_handler() local 950 if (!droq) { in cn23xx_pf_msix_interrupt_handler() [all...] |
H A D | octeon_main.h | 76 struct octeon_droq *droq);
|
H A D | lio_vf_main.c | 86 pkt_cnt += octeon_droq_check_hw_for_pkts(oct->droq[i]); in lio_wait_for_oq_pkts() 683 oct->droq[0]->ops.poll_mode = 0; in liquidio_destroy_nic_device() 921 oct->droq[0]->ops.poll_mode = 1; in liquidio_open() 987 oct->droq[0]->ops.poll_mode = 0; in liquidio_stop() 1205 oq_stats = &oct->droq[oq_no]->stats; in liquidio_get_stats64() 2408 writel(oct->droq[j]->max_count, oct->droq[j]->pkts_credit_reg); in octeon_device_init()
|
H A D | octeon_network.h | 490 static inline void octeon_fast_packet_next(struct octeon_droq *droq, in octeon_fast_packet_next() argument 495 skb_put_data(nicbuf, get_rbd(droq->recv_buf_list[idx].buffer), in octeon_fast_packet_next()
|