Lines Matching full:oct

80 static int	lio_cn23xx_pf_read_csr_reg(char *s, struct octeon_device *oct);
91 static int lio_irq_reallocate_irqs(struct octeon_device *oct,
111 struct octeon_device *oct = lio->oct_dev; in lio_send_queue_count_update() local
127 lio_dev_err(oct, "Failed to send Queue reset command (ret: 0x%x)\n", in lio_send_queue_count_update()
661 struct octeon_device *oct = lio->oct_dev; in lio_get_set_pauseparam() local
667 if (oct->chip_id != LIO_CN23XX_PF_VID) in lio_get_set_pauseparam()
670 if (oct->rx_pause) in lio_get_set_pauseparam()
673 if (oct->tx_pause) in lio_get_set_pauseparam()
718 lio_dev_err(oct, "Failed to set pause parameter\n"); in lio_get_set_pauseparam()
722 oct->rx_pause = new_pause & LIO_RX_PAUSE; in lio_get_set_pauseparam()
723 oct->tx_pause = new_pause & LIO_TX_PAUSE; in lio_get_set_pauseparam()
733 struct octeon_device *oct = lio->oct_dev; in lio_get_regs() local
747 switch (oct->chip_id) { in lio_get_regs()
749 len += lio_cn23xx_pf_read_csr_reg(regbuf, oct); in lio_get_regs()
753 __func__, oct->chip_id); in lio_get_regs()
763 lio_cn23xx_pf_read_csr_reg(char *s, struct octeon_device *oct) in lio_cn23xx_pf_read_csr_reg() argument
767 uint8_t pf_num = oct->pf_num; in lio_cn23xx_pf_read_csr_reg()
774 reg = LIO_CN23XX_SLI_PKT_MAC_RINFO64(oct->pcie_port, oct->pf_num); in lio_cn23xx_pf_read_csr_reg()
776 reg, oct->pcie_port, oct->pf_num, in lio_cn23xx_pf_read_csr_reg()
777 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
780 reg = LIO_CN23XX_SLI_MAC_PF_INT_ENB64(oct->pcie_port, oct->pf_num); in lio_cn23xx_pf_read_csr_reg()
782 reg, oct->pcie_port, oct->pf_num, in lio_cn23xx_pf_read_csr_reg()
783 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
786 reg = LIO_CN23XX_SLI_MAC_PF_INT_SUM64(oct->pcie_port, oct->pf_num); in lio_cn23xx_pf_read_csr_reg()
788 reg, oct->pcie_port, oct->pf_num, in lio_cn23xx_pf_read_csr_reg()
789 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
794 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
797 reg = 0x27300 + oct->pcie_port * LIO_CN23XX_MAC_INT_OFFSET + in lio_cn23xx_pf_read_csr_reg()
798 (oct->pf_num) * LIO_CN23XX_PF_INT_OFFSET; in lio_cn23xx_pf_read_csr_reg()
800 reg, oct->pcie_port, oct->pf_num, in lio_cn23xx_pf_read_csr_reg()
801 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
804 reg = 0x27200 + oct->pcie_port * LIO_CN23XX_MAC_INT_OFFSET + in lio_cn23xx_pf_read_csr_reg()
805 (oct->pf_num) * LIO_CN23XX_PF_INT_OFFSET; in lio_cn23xx_pf_read_csr_reg()
807 reg, oct->pcie_port, oct->pf_num, in lio_cn23xx_pf_read_csr_reg()
808 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
813 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
818 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
823 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
828 reg, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
833 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
838 LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
843 reg, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
850 reg, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
855 reg, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
861 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
868 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
875 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
882 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
889 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
896 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
903 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
910 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
917 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
924 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
931 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
938 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
945 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
952 reg, i, LIO_CAST64(lio_read_csr64(oct, reg))); in lio_cn23xx_pf_read_csr_reg()
961 struct octeon_device *oct = lio->oct_dev; in lio_get_ringparam() local
965 if (LIO_CN23XX_PF(oct)) { in lio_get_ringparam()
986 struct octeon_device *oct = lio->oct_dev; in lio_reset_queues() local
989 if (lio_wait_for_pending_requests(oct)) in lio_reset_queues()
990 lio_dev_err(oct, "There were pending requests\n"); in lio_reset_queues()
992 if (lio_wait_for_instr_fetch(oct)) in lio_reset_queues()
993 lio_dev_err(oct, "IQ had pending instructions\n"); in lio_reset_queues()
1000 oct->fn_list.disable_io_queues(oct); in lio_reset_queues()
1002 if (num_qs != oct->num_iqs) in lio_reset_queues()
1005 for (i = 0; i < LIO_MAX_OUTPUT_QUEUES(oct); i++) { in lio_reset_queues()
1006 if (!(oct->io_qmask.oq & BIT_ULL(i))) in lio_reset_queues()
1009 lio_delete_droq(oct, i); in lio_reset_queues()
1012 for (i = 0; i < LIO_MAX_INSTR_QUEUES(oct); i++) { in lio_reset_queues()
1013 if (!(oct->io_qmask.iq & BIT_ULL(i))) in lio_reset_queues()
1016 lio_delete_instr_queue(oct, i); in lio_reset_queues()
1019 if (oct->fn_list.setup_device_regs(oct)) { in lio_reset_queues()
1020 lio_dev_err(oct, "Failed to configure device registers\n"); in lio_reset_queues()
1024 if (lio_setup_io_queues(oct, 0, num_qs, num_qs)) { in lio_reset_queues()
1025 lio_dev_err(oct, "IO queues initialization failed\n"); in lio_reset_queues()
1039 struct octeon_device *oct = lio->oct_dev; in lio_set_ringparam() local
1043 if (!LIO_CN23XX_PF(oct)) in lio_set_ringparam()
1048 rx_count = rx_count_old = oct->droq[0]->max_count; in lio_set_ringparam()
1068 LIO_SET_NUM_RX_DESCS_NIC_IF(lio_get_conf(oct), in lio_set_ringparam()
1072 tx_count = tx_count_old = oct->instr_queue[0]->max_count; in lio_set_ringparam()
1092 LIO_SET_NUM_TX_DESCS_NIC_IF(lio_get_conf(oct), in lio_set_ringparam()
1100 lio_irq_reallocate_irqs(oct, lio->linfo.num_txpciq); in lio_set_ringparam()
1110 LIO_SET_NUM_RX_DESCS_NIC_IF(lio_get_conf(oct), lio->ifidx, in lio_set_ringparam()
1114 LIO_SET_NUM_TX_DESCS_NIC_IF(lio_get_conf(oct), lio->ifidx, in lio_set_ringparam()
1124 struct octeon_device *oct = lio->oct_dev; in lio_get_channels() local
1127 if (LIO_CN23XX_PF(oct)) in lio_get_channels()
1133 lio_irq_reallocate_irqs(struct octeon_device *oct, uint32_t num_ioqs) in lio_irq_reallocate_irqs() argument
1137 if (!oct->msix_on) in lio_irq_reallocate_irqs()
1144 oct->fn_list.disable_interrupt(oct, OCTEON_ALL_INTR); in lio_irq_reallocate_irqs()
1146 if (oct->msix_on) { in lio_irq_reallocate_irqs()
1147 if (LIO_CN23XX_PF(oct)) in lio_irq_reallocate_irqs()
1148 num_msix_irqs = oct->num_msix_irqs - 1; in lio_irq_reallocate_irqs()
1151 if (oct->ioq_vector[i].tag != NULL) { in lio_irq_reallocate_irqs()
1152 bus_teardown_intr(oct->device, in lio_irq_reallocate_irqs()
1153 oct->ioq_vector[i].msix_res, in lio_irq_reallocate_irqs()
1154 oct->ioq_vector[i].tag); in lio_irq_reallocate_irqs()
1155 oct->ioq_vector[i].tag = NULL; in lio_irq_reallocate_irqs()
1158 if (oct->ioq_vector[i].msix_res != NULL) { in lio_irq_reallocate_irqs()
1159 bus_release_resource(oct->device, SYS_RES_IRQ, in lio_irq_reallocate_irqs()
1160 oct->ioq_vector[i].vector, in lio_irq_reallocate_irqs()
1161 oct->ioq_vector[i].msix_res); in lio_irq_reallocate_irqs()
1162 oct->ioq_vector[i].msix_res = NULL; in lio_irq_reallocate_irqs()
1167 if (oct->tag != NULL) { in lio_irq_reallocate_irqs()
1168 bus_teardown_intr(oct->device, oct->msix_res, oct->tag); in lio_irq_reallocate_irqs()
1169 oct->tag = NULL; in lio_irq_reallocate_irqs()
1172 if (oct->msix_res != NULL) { in lio_irq_reallocate_irqs()
1173 bus_release_resource(oct->device, SYS_RES_IRQ, in lio_irq_reallocate_irqs()
1174 oct->aux_vector, in lio_irq_reallocate_irqs()
1175 oct->msix_res); in lio_irq_reallocate_irqs()
1176 oct->msix_res = NULL; in lio_irq_reallocate_irqs()
1179 pci_release_msi(oct->device); in lio_irq_reallocate_irqs()
1183 if (lio_setup_interrupt(oct, num_ioqs)) { in lio_irq_reallocate_irqs()
1184 lio_dev_info(oct, "Setup interuupt failed\n"); in lio_irq_reallocate_irqs()
1189 oct->fn_list.enable_interrupt(oct, OCTEON_ALL_INTR); in lio_irq_reallocate_irqs()
1198 struct octeon_device *oct = lio->oct_dev; in lio_set_channels() local
1202 if (strcmp(oct->fw_info.lio_firmware_version, "1.6.1") < 0) { in lio_set_channels()
1203 lio_dev_err(oct, in lio_set_channels()
1208 combined_count = oct->num_iqs; in lio_set_channels()
1217 if (LIO_CN23XX_PF(oct)) { in lio_set_channels()
1226 if (combined_count == oct->num_iqs) in lio_set_channels()
1239 lio_irq_reallocate_irqs(oct, combined_count); in lio_set_channels()
1584 struct octeon_device *oct = lio->oct_dev; in lio_intrmod_cfg_rx_intrcnt() local
1588 switch (oct->chip_id) { in lio_intrmod_cfg_rx_intrcnt()
1597 for (q_no = 0; q_no < oct->num_oqs; q_no++) { in lio_intrmod_cfg_rx_intrcnt()
1598 q_no += oct->sriov_info.pf_srn; in lio_intrmod_cfg_rx_intrcnt()
1599 lio_write_csr64(oct, in lio_intrmod_cfg_rx_intrcnt()
1601 (lio_read_csr64(oct, in lio_intrmod_cfg_rx_intrcnt()
1609 oct->rx_max_coalesced_frames = rx_max_coalesced_frames; in lio_intrmod_cfg_rx_intrcnt()
1622 struct octeon_device *oct = lio->oct_dev; in lio_intrmod_cfg_rx_intrtime() local
1626 switch (oct->chip_id) { in lio_intrmod_cfg_rx_intrtime()
1637 lio_cn23xx_pf_get_oq_ticks(oct, rx_coalesce_usecs); in lio_intrmod_cfg_rx_intrtime()
1638 for (q_no = 0; q_no < oct->num_oqs; q_no++) { in lio_intrmod_cfg_rx_intrtime()
1639 q_no += oct->sriov_info.pf_srn; in lio_intrmod_cfg_rx_intrtime()
1640 lio_write_csr64(oct, in lio_intrmod_cfg_rx_intrtime()
1648 oct->rx_coalesce_usecs = rx_coalesce_usecs; in lio_intrmod_cfg_rx_intrtime()
1662 struct octeon_device *oct = lio->oct_dev; in lio_intrmod_cfg_tx_intrcnt() local
1668 switch (oct->chip_id) { in lio_intrmod_cfg_tx_intrcnt()
1678 for (q_no = 0; q_no < oct->num_iqs; q_no++) { in lio_intrmod_cfg_tx_intrcnt()
1680 (oct->instr_queue[q_no])->inst_cnt_reg; in lio_intrmod_cfg_tx_intrcnt()
1681 val = lio_read_csr64(oct, inst_cnt_reg); in lio_intrmod_cfg_tx_intrcnt()
1689 lio_write_csr64(oct, inst_cnt_reg, val); in lio_intrmod_cfg_tx_intrcnt()
1694 oct->tx_max_coalesced_frames = iq_intr_pkt; in lio_intrmod_cfg_tx_intrcnt()
1707 struct octeon_device *oct = lio->oct_dev; in lio_get_set_intr_coalesce() local
1745 new_val = old_val = oct->rx_coalesce_usecs; in lio_get_set_intr_coalesce()
1759 new_val = old_val = oct->rx_max_coalesced_frames; in lio_get_set_intr_coalesce()
1773 new_val = old_val = oct->tx_max_coalesced_frames; in lio_get_set_intr_coalesce()
1924 lio->intrmod_cfg.rx_usecs = LIO_GET_OQ_INTR_TIME_CFG(lio_get_conf(oct)); in lio_get_set_intr_coalesce()
1925 lio->intrmod_cfg.rx_frames = LIO_GET_OQ_INTR_PKT_CFG(lio_get_conf(oct)); in lio_get_set_intr_coalesce()
1926 lio->intrmod_cfg.tx_frames = LIO_GET_IQ_INTR_PKT_CFG(lio_get_conf(oct)); in lio_get_set_intr_coalesce()
1930 lio_dev_err(oct, "Interrupt coalescing updation to Firmware failed!\n"); in lio_get_set_intr_coalesce()
1934 rx_coalesce_usecs = oct->rx_coalesce_usecs; in lio_get_set_intr_coalesce()
1937 rx_max_coalesced_frames = oct->rx_max_coalesced_frames; in lio_get_set_intr_coalesce()
1949 oct->rx_coalesce_usecs = in lio_get_set_intr_coalesce()
1950 LIO_GET_OQ_INTR_TIME_CFG(lio_get_conf(oct)); in lio_get_set_intr_coalesce()
1951 oct->rx_max_coalesced_frames = in lio_get_set_intr_coalesce()
1952 LIO_GET_OQ_INTR_PKT_CFG(lio_get_conf(oct)); in lio_get_set_intr_coalesce()
1957 tx_coalesce_usecs = oct->tx_max_coalesced_frames; in lio_get_set_intr_coalesce()
1964 oct->tx_max_coalesced_frames = in lio_get_set_intr_coalesce()
1965 LIO_GET_IQ_INTR_PKT_CFG(lio_get_conf(oct)); in lio_get_set_intr_coalesce()