Lines Matching +full:milli +full:- +full:seconds
111 struct octeon_device *oct = lio->oct_dev; in lio_send_queue_count_update()
120 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in lio_send_queue_count_update()
125 ret = lio_send_ctrl_pkt(lio->oct_dev, &nctrl); in lio_send_queue_count_update()
129 return (-1); in lio_send_queue_count_update()
139 struct octeon_device *oct_dev = lio->oct_dev; in lio_add_hw_stats()
140 device_t dev = oct_dev->device; in lio_add_hw_stats()
150 callout_reset(&lio->stats_timer, lio_ms_to_ticks(lio->stats_interval), in lio_add_hw_stats()
154 oct_dev->fw_info.lio_firmware_version, 0, in lio_add_hw_stats()
159 "Set Stats Updation Timer in milli seconds"); in lio_add_hw_stats()
161 CTLFLAG_RD, &lio->link_changes, "Link Change Counter"); in lio_add_hw_stats()
162 SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "eeprom-dump", in lio_add_hw_stats()
169 "0 - off\n" \ in lio_add_hw_stats()
170 "1 - rx pause\n" \ in lio_add_hw_stats()
171 "2 - tx pause \n" \ in lio_add_hw_stats()
172 "3 - rx and tx pause"); in lio_add_hw_stats()
173 SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "register-dump", in lio_add_hw_stats()
198 CTLFLAG_RW, &oct_dev->tx_budget, in lio_add_hw_stats()
201 CTLFLAG_RW, &oct_dev->rx_budget, in lio_add_hw_stats()
210 if (lio_get_intrmod_cfg(lio, &lio->intrmod_cfg)) in lio_add_hw_stats()
213 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "sample-interval", in lio_add_hw_stats()
217 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "tx-frame-high", in lio_add_hw_stats()
221 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "rx-frame-high", in lio_add_hw_stats()
225 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "rx-usecs-high", in lio_add_hw_stats()
229 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "pkt-rate-high", in lio_add_hw_stats()
233 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "tx-frame-low", in lio_add_hw_stats()
237 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "rx-frame-low", in lio_add_hw_stats()
241 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "rx-usecs-low", in lio_add_hw_stats()
245 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "pkt-rate-low", in lio_add_hw_stats()
249 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "tx-frames", in lio_add_hw_stats()
253 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "rx-frames", in lio_add_hw_stats()
257 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "rx-usecs", in lio_add_hw_stats()
261 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "adaptive-tx", in lio_add_hw_stats()
265 SYSCTL_ADD_PROC(ctx, root_list, OID_AUTO, "adaptive-rx", in lio_add_hw_stats()
281 &oct_dev->link_stats.fromhost.fw_total_sent, in lio_add_hw_stats()
284 &oct_dev->link_stats.fromhost.fw_total_fwd, in lio_add_hw_stats()
288 &oct_dev->link_stats.fromhost.fw_total_fwd_bytes, in lio_add_hw_stats()
291 &oct_dev->link_stats.fromhost.fw_err_pko, in lio_add_hw_stats()
294 &oct_dev->link_stats.fromhost.fw_err_pki, in lio_add_hw_stats()
297 &oct_dev->link_stats.fromhost.fw_err_link, in lio_add_hw_stats()
300 &oct_dev->link_stats.fromhost.fw_err_drop, in lio_add_hw_stats()
303 &oct_dev->link_stats.fromhost.fw_tso, in lio_add_hw_stats()
306 &oct_dev->link_stats.fromhost.fw_tso_fwd, in lio_add_hw_stats()
309 //&oct_dev->link_stats.fromhost.fw_tso_err, in lio_add_hw_stats()
312 &oct_dev->link_stats.fromhost.fw_tx_vxlan, in lio_add_hw_stats()
322 &oct_dev->link_stats.fromhost.total_pkts_sent, in lio_add_hw_stats()
323 "Link-Level Total Packets Sent"); in lio_add_hw_stats()
326 &oct_dev->link_stats.fromhost.total_bytes_sent, in lio_add_hw_stats()
327 "Link-Level Total Bytes Sent"); in lio_add_hw_stats()
330 &oct_dev->link_stats.fromhost.mcast_pkts_sent, in lio_add_hw_stats()
331 "Link-Level Multicast Packets Sent"); in lio_add_hw_stats()
334 &oct_dev->link_stats.fromhost.bcast_pkts_sent, in lio_add_hw_stats()
335 "Link-Level Broadcast Packets Sent"); in lio_add_hw_stats()
338 &oct_dev->link_stats.fromhost.ctl_sent, in lio_add_hw_stats()
339 "Link-Level Control Packets Sent"); in lio_add_hw_stats()
342 &oct_dev->link_stats.fromhost.total_collisions, in lio_add_hw_stats()
343 "Link-Level Tx Total Collisions"); in lio_add_hw_stats()
346 &oct_dev->link_stats.fromhost.one_collision_sent, in lio_add_hw_stats()
347 "Link-Level Tx One Collision Sent"); in lio_add_hw_stats()
350 &oct_dev->link_stats.fromhost.multi_collision_sent, in lio_add_hw_stats()
351 "Link-Level Tx Multi-Collision Sent"); in lio_add_hw_stats()
354 &oct_dev->link_stats.fromhost.max_collision_fail, in lio_add_hw_stats()
355 "Link-Level Tx Max Collision Failed"); in lio_add_hw_stats()
358 &oct_dev->link_stats.fromhost.max_deferral_fail, in lio_add_hw_stats()
359 "Link-Level Tx Max Deferral Failed"); in lio_add_hw_stats()
362 &oct_dev->link_stats.fromhost.fifo_err, in lio_add_hw_stats()
363 "Link-Level Tx FIFO Errors"); in lio_add_hw_stats()
365 &oct_dev->link_stats.fromhost.runts, in lio_add_hw_stats()
366 "Link-Level Tx Runts"); in lio_add_hw_stats()
374 &oct_dev->link_stats.fromwire.fw_total_rcvd, in lio_add_hw_stats()
377 &oct_dev->link_stats.fromwire.fw_total_fwd, in lio_add_hw_stats()
380 &oct_dev->link_stats.fromwire.jabber_err, in lio_add_hw_stats()
383 &oct_dev->link_stats.fromwire.l2_err, in lio_add_hw_stats()
386 &oct_dev->link_stats.fromwire.frame_err, in lio_add_hw_stats()
389 &oct_dev->link_stats.fromwire.fw_err_pko, in lio_add_hw_stats()
392 &oct_dev->link_stats.fromwire.fw_err_link, in lio_add_hw_stats()
395 &oct_dev->link_stats.fromwire.fw_err_drop, in lio_add_hw_stats()
398 &oct_dev->link_stats.fromwire.fw_rx_vxlan, in lio_add_hw_stats()
401 &oct_dev->link_stats.fromwire.fw_rx_vxlan_err, in lio_add_hw_stats()
404 &oct_dev->link_stats.fromwire.fw_lro_pkts, in lio_add_hw_stats()
407 &oct_dev->link_stats.fromwire.fw_lro_octs, in lio_add_hw_stats()
410 &oct_dev->link_stats.fromwire.fw_total_lro, in lio_add_hw_stats()
413 &oct_dev->link_stats.fromwire.fw_lro_aborts, in lio_add_hw_stats()
417 &oct_dev->link_stats.fromwire.fw_lro_aborts_port, in lio_add_hw_stats()
421 &oct_dev->link_stats.fromwire.fw_lro_aborts_seq, in lio_add_hw_stats()
425 &oct_dev->link_stats.fromwire.fw_lro_aborts_tsval, in lio_add_hw_stats()
429 &oct_dev->link_stats.fromwire.fw_lro_aborts_timer, in lio_add_hw_stats()
433 &oct_dev->link_stats.fromwire.fwd_rate, in lio_add_hw_stats()
442 &oct_dev->link_stats.fromwire.total_rcvd, in lio_add_hw_stats()
443 "Link-Level Total Packets Received"); in lio_add_hw_stats()
446 &oct_dev->link_stats.fromwire.bytes_rcvd, in lio_add_hw_stats()
447 "Link-Level Total Bytes Received"); in lio_add_hw_stats()
450 &oct_dev->link_stats.fromwire.total_bcst, in lio_add_hw_stats()
451 "Link-Level Total Broadcast"); in lio_add_hw_stats()
454 &oct_dev->link_stats.fromwire.total_mcst, in lio_add_hw_stats()
455 "Link-Level Total Multicast"); in lio_add_hw_stats()
458 &oct_dev->link_stats.fromwire.runts, in lio_add_hw_stats()
459 "Link-Level Rx Runts"); in lio_add_hw_stats()
462 &oct_dev->link_stats.fromwire.ctl_rcvd, in lio_add_hw_stats()
463 "Link-Level Rx Control Packets"); in lio_add_hw_stats()
466 &oct_dev->link_stats.fromwire.fifo_err, in lio_add_hw_stats()
467 "Link-Level Rx FIFO Errors"); in lio_add_hw_stats()
470 &oct_dev->link_stats.fromwire.dmac_drop, in lio_add_hw_stats()
471 "Link-Level Rx DMA Dropped"); in lio_add_hw_stats()
474 &oct_dev->link_stats.fromwire.fcs_err, in lio_add_hw_stats()
475 "Link-Level Rx FCS Errors"); in lio_add_hw_stats()
478 for (int i = 0; i < oct_dev->num_iqs; i++) { in lio_add_hw_stats()
479 if (!(oct_dev->io_qmask.iq & BIT_ULL(i))) in lio_add_hw_stats()
482 snprintf(namebuf, QUEUE_NAME_LEN, "tx-%d", i); in lio_add_hw_stats()
491 &oct_dev->instr_queue[i]->stats.tx_done, in lio_add_hw_stats()
496 &oct_dev->instr_queue[i]->stats.tx_tot_bytes, in lio_add_hw_stats()
501 &oct_dev->instr_queue[i]->stats.tx_dropped, in lio_add_hw_stats()
506 &oct_dev->instr_queue[i]->stats.tx_iq_busy, in lio_add_hw_stats()
511 &oct_dev->instr_queue[i]->stats.sgentry_sent, in lio_add_hw_stats()
518 &oct_dev->instr_queue[i]->stats.instr_posted, in lio_add_hw_stats()
523 &oct_dev->instr_queue[i]->stats.instr_processed, in lio_add_hw_stats()
528 &oct_dev->instr_queue[i]->stats.instr_dropped, in lio_add_hw_stats()
533 &oct_dev->instr_queue[i]->stats.bytes_sent, in lio_add_hw_stats()
538 &oct_dev->instr_queue[i]->stats.tx_gso, in lio_add_hw_stats()
543 &oct_dev->instr_queue[i]->stats.tx_vxlan, in lio_add_hw_stats()
548 &oct_dev->instr_queue[i]->stats.tx_restart, in lio_add_hw_stats()
552 &oct_dev->instr_queue[i]->stats.tx_dmamap_fail, in lio_add_hw_stats()
556 &oct_dev->instr_queue[i]->stats.mbuf_defrag_failed, in lio_add_hw_stats()
561 for (int i = 0; i < oct_dev->num_oqs; i++) { in lio_add_hw_stats()
562 if (!(oct_dev->io_qmask.oq & BIT_ULL(i))) in lio_add_hw_stats()
565 snprintf(namebuf, QUEUE_NAME_LEN, "rx-%d", i); in lio_add_hw_stats()
574 &oct_dev->droq[i]->stats.rx_pkts_received, in lio_add_hw_stats()
579 &oct_dev->droq[i]->stats.rx_bytes_received, in lio_add_hw_stats()
584 &oct_dev->droq[i]->stats.dropped_nomem, in lio_add_hw_stats()
588 &oct_dev->droq[i]->stats.dropped_toomany, in lio_add_hw_stats()
592 &oct_dev->droq[i]->stats.rx_dropped, in lio_add_hw_stats()
598 &oct_dev->droq[i]->stats.pkts_received, in lio_add_hw_stats()
603 &oct_dev->droq[i]->stats.bytes_received, in lio_add_hw_stats()
608 &oct_dev->droq[i]->stats.dropped_nodispatch, in lio_add_hw_stats()
613 &oct_dev->droq[i]->stats.rx_vxlan, in lio_add_hw_stats()
618 &oct_dev->droq[i]->stats.rx_alloc_failure, in lio_add_hw_stats()
627 struct octeon_device *oct_dev = lio->oct_dev; in lio_get_eeprom()
631 board_info = (struct lio_board_info *)(&oct_dev->boardinfo); in lio_get_eeprom()
632 if (oct_dev->uboot_len == 0) in lio_get_eeprom()
634 board_info->name, board_info->serial_number, in lio_get_eeprom()
635 LIO_CAST64(board_info->major), in lio_get_eeprom()
636 LIO_CAST64(board_info->minor)); in lio_get_eeprom()
639 board_info->name, board_info->serial_number, in lio_get_eeprom()
640 LIO_CAST64(board_info->major), in lio_get_eeprom()
641 LIO_CAST64(board_info->minor), in lio_get_eeprom()
642 &oct_dev->uboot_version[oct_dev->uboot_sidx]); in lio_get_eeprom()
650 * 0 - off
651 * 1 - rx pause
652 * 2 - tx pause
653 * 3 - full
661 struct octeon_device *oct = lio->oct_dev; in lio_get_set_pauseparam()
662 struct octeon_link_info *linfo = &lio->linfo; in lio_get_set_pauseparam()
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()
679 if ((err) || (req->newptr == NULL)) in lio_get_set_pauseparam()
685 if (linfo->link.s.duplex == 0) { in lio_get_set_pauseparam()
695 nctrl.iq_no = lio->linfo.txpciq[0].s.q_no; in lio_get_set_pauseparam()
716 ret = lio_send_ctrl_pkt(lio->oct_dev, &nctrl); 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()
734 if_t ifp = lio->ifp; in lio_get_regs()
747 switch (oct->chip_id) { in lio_get_regs()
753 __func__, oct->chip_id); in lio_get_regs()
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()
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()
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()
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()
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()
961 struct octeon_device *oct = lio->oct_dev; in lio_get_ringparam()
986 struct octeon_device *oct = lio->oct_dev; 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()
1006 if (!(oct->io_qmask.oq & BIT_ULL(i))) in lio_reset_queues()
1013 if (!(oct->io_qmask.iq & BIT_ULL(i))) in lio_reset_queues()
1019 if (oct->fn_list.setup_device_regs(oct)) { in lio_reset_queues()
1021 return (-1); in lio_reset_queues()
1026 return (-1); in lio_reset_queues()
1030 return (-1); in lio_reset_queues()
1039 struct octeon_device *oct = lio->oct_dev; in lio_set_ringparam()
1048 rx_count = rx_count_old = oct->droq[0]->max_count; in lio_set_ringparam()
1051 if ((err) || (req->newptr == NULL)) in lio_set_ringparam()
1062 if (if_getdrvflags(lio->ifp) & IFF_DRV_RUNNING) { in lio_set_ringparam()
1063 lio_stop(lio->ifp); in lio_set_ringparam()
1069 lio->ifidx, rx_count); in lio_set_ringparam()
1072 tx_count = tx_count_old = oct->instr_queue[0]->max_count; in lio_set_ringparam()
1075 if ((err) || (req->newptr == NULL)) in lio_set_ringparam()
1086 if (if_getdrvflags(lio->ifp) & IFF_DRV_RUNNING) { in lio_set_ringparam()
1087 lio_stop(lio->ifp); in lio_set_ringparam()
1093 lio->ifidx, tx_count); in lio_set_ringparam()
1097 if (lio_reset_queues(lio->ifp, lio->linfo.num_txpciq)) 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()
1128 max_combined = lio->linfo.num_txpciq; in lio_get_channels()
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()
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()
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()
1202 if (strcmp(oct->fw_info.lio_firmware_version, "1.6.1") < 0) { in lio_set_channels()
1208 combined_count = oct->num_iqs; in lio_set_channels()
1211 if ((err) || (req->newptr == NULL)) in lio_set_channels()
1218 max_combined = lio->linfo.num_txpciq; in lio_set_channels()
1226 if (combined_count == oct->num_iqs) in lio_set_channels()
1231 if (if_getdrvflags(lio->ifp) & IFF_DRV_RUNNING) { in lio_set_channels()
1232 lio_stop(lio->ifp); in lio_set_channels()
1236 if (lio_reset_queues(lio->ifp, combined_count)) in lio_set_channels()
1253 if_t ifp = lio->ifp; in lio_get_set_fwmsglevel()
1259 old_msglvl = new_msglvl = lio->msg_enable; in lio_get_set_fwmsglevel()
1262 if ((err) || (req->newptr == NULL)) in lio_get_set_fwmsglevel()
1268 if (new_msglvl ^ lio->msg_enable) { in lio_get_set_fwmsglevel()
1275 lio->msg_enable = new_msglvl; in lio_get_set_fwmsglevel()
1286 old_time = new_time = lio->stats_interval; in lio_set_stats_interval()
1289 if ((err) || (req->newptr == NULL)) in lio_set_stats_interval()
1295 lio->stats_interval = new_time; in lio_set_stats_interval()
1305 (struct lio_fw_stats_resp *)sc->virtrptr; in lio_fw_stats_callback()
1306 struct octeon_rx_stats *rsp_rstats = &resp->stats.fromwire; in lio_fw_stats_callback()
1307 struct octeon_tx_stats *rsp_tstats = &resp->stats.fromhost; in lio_fw_stats_callback()
1308 struct octeon_rx_stats *rstats = &oct_dev->link_stats.fromwire; in lio_fw_stats_callback()
1309 struct octeon_tx_stats *tstats = &oct_dev->link_stats.fromhost; in lio_fw_stats_callback()
1310 if_t ifp = oct_dev->props.ifp; in lio_fw_stats_callback()
1313 if ((status != LIO_REQUEST_TIMEOUT) && !resp->status) { in lio_fw_stats_callback()
1314 lio_swap_8B_data((uint64_t *)&resp->stats, in lio_fw_stats_callback()
1317 /* RX link-level stats */ in lio_fw_stats_callback()
1318 rstats->total_rcvd = rsp_rstats->total_rcvd; in lio_fw_stats_callback()
1319 rstats->bytes_rcvd = rsp_rstats->bytes_rcvd; in lio_fw_stats_callback()
1320 rstats->total_bcst = rsp_rstats->total_bcst; in lio_fw_stats_callback()
1321 rstats->total_mcst = rsp_rstats->total_mcst; in lio_fw_stats_callback()
1322 rstats->runts = rsp_rstats->runts; in lio_fw_stats_callback()
1323 rstats->ctl_rcvd = rsp_rstats->ctl_rcvd; in lio_fw_stats_callback()
1324 /* Accounts for over/under-run of buffers */ in lio_fw_stats_callback()
1325 rstats->fifo_err = rsp_rstats->fifo_err; in lio_fw_stats_callback()
1326 rstats->dmac_drop = rsp_rstats->dmac_drop; in lio_fw_stats_callback()
1327 rstats->fcs_err = rsp_rstats->fcs_err; in lio_fw_stats_callback()
1328 rstats->jabber_err = rsp_rstats->jabber_err; in lio_fw_stats_callback()
1329 rstats->l2_err = rsp_rstats->l2_err; in lio_fw_stats_callback()
1330 rstats->frame_err = rsp_rstats->frame_err; in lio_fw_stats_callback()
1333 rstats->fw_total_rcvd = rsp_rstats->fw_total_rcvd; in lio_fw_stats_callback()
1334 rstats->fw_total_fwd = rsp_rstats->fw_total_fwd; in lio_fw_stats_callback()
1335 rstats->fw_err_pko = rsp_rstats->fw_err_pko; in lio_fw_stats_callback()
1336 rstats->fw_err_link = rsp_rstats->fw_err_link; in lio_fw_stats_callback()
1337 rstats->fw_err_drop = rsp_rstats->fw_err_drop; in lio_fw_stats_callback()
1338 rstats->fw_rx_vxlan = rsp_rstats->fw_rx_vxlan; in lio_fw_stats_callback()
1339 rstats->fw_rx_vxlan_err = rsp_rstats->fw_rx_vxlan_err; in lio_fw_stats_callback()
1342 rstats->fw_lro_pkts = rsp_rstats->fw_lro_pkts; in lio_fw_stats_callback()
1344 rstats->fw_lro_octs = rsp_rstats->fw_lro_octs; in lio_fw_stats_callback()
1346 rstats->fw_total_lro = rsp_rstats->fw_total_lro; in lio_fw_stats_callback()
1348 rstats->fw_lro_aborts = rsp_rstats->fw_lro_aborts; in lio_fw_stats_callback()
1349 rstats->fw_lro_aborts_port = rsp_rstats->fw_lro_aborts_port; in lio_fw_stats_callback()
1350 rstats->fw_lro_aborts_seq = rsp_rstats->fw_lro_aborts_seq; in lio_fw_stats_callback()
1351 rstats->fw_lro_aborts_tsval = rsp_rstats->fw_lro_aborts_tsval; in lio_fw_stats_callback()
1352 rstats->fw_lro_aborts_timer = rsp_rstats->fw_lro_aborts_timer; in lio_fw_stats_callback()
1354 rstats->fwd_rate = rsp_rstats->fwd_rate; in lio_fw_stats_callback()
1356 /* TX link-level stats */ in lio_fw_stats_callback()
1357 tstats->total_pkts_sent = rsp_tstats->total_pkts_sent; in lio_fw_stats_callback()
1358 tstats->total_bytes_sent = rsp_tstats->total_bytes_sent; in lio_fw_stats_callback()
1359 tstats->mcast_pkts_sent = rsp_tstats->mcast_pkts_sent; in lio_fw_stats_callback()
1360 tstats->bcast_pkts_sent = rsp_tstats->bcast_pkts_sent; in lio_fw_stats_callback()
1361 tstats->ctl_sent = rsp_tstats->ctl_sent; in lio_fw_stats_callback()
1363 tstats->one_collision_sent = rsp_tstats->one_collision_sent; in lio_fw_stats_callback()
1365 tstats->multi_collision_sent = rsp_tstats->multi_collision_sent; in lio_fw_stats_callback()
1367 tstats->max_collision_fail = rsp_tstats->max_collision_fail; in lio_fw_stats_callback()
1369 tstats->max_deferral_fail = rsp_tstats->max_deferral_fail; in lio_fw_stats_callback()
1370 /* Accounts for over/under-run of buffers */ in lio_fw_stats_callback()
1371 tstats->fifo_err = rsp_tstats->fifo_err; in lio_fw_stats_callback()
1372 tstats->runts = rsp_tstats->runts; in lio_fw_stats_callback()
1374 tstats->total_collisions = rsp_tstats->total_collisions; in lio_fw_stats_callback()
1377 tstats->fw_total_sent = rsp_tstats->fw_total_sent; in lio_fw_stats_callback()
1378 tstats->fw_total_fwd = rsp_tstats->fw_total_fwd; in lio_fw_stats_callback()
1379 tstats->fw_err_pko = rsp_tstats->fw_err_pko; in lio_fw_stats_callback()
1380 tstats->fw_err_pki = rsp_tstats->fw_err_pki; in lio_fw_stats_callback()
1381 tstats->fw_err_link = rsp_tstats->fw_err_link; in lio_fw_stats_callback()
1382 tstats->fw_err_drop = rsp_tstats->fw_err_drop; in lio_fw_stats_callback()
1383 tstats->fw_tso = rsp_tstats->fw_tso; in lio_fw_stats_callback()
1384 tstats->fw_tso_fwd = rsp_tstats->fw_tso_fwd; in lio_fw_stats_callback()
1385 tstats->fw_err_tso = rsp_tstats->fw_err_tso; in lio_fw_stats_callback()
1386 tstats->fw_tx_vxlan = rsp_tstats->fw_tx_vxlan; in lio_fw_stats_callback()
1389 callout_schedule(&lio->stats_timer, in lio_fw_stats_callback()
1390 lio_ms_to_ticks(lio->stats_interval)); in lio_fw_stats_callback()
1398 struct octeon_device *oct_dev = lio->oct_dev; in lio_get_fw_stats()
1403 if (callout_pending(&lio->stats_timer) || in lio_get_fw_stats()
1404 callout_active(&lio->stats_timer) == 0) in lio_get_fw_stats()
1414 resp = (struct lio_fw_stats_resp *)sc->virtrptr; in lio_get_fw_stats()
1417 sc->iq_no = lio->linfo.txpciq[0].s.q_no; in lio_get_fw_stats()
1422 sc->callback = lio_fw_stats_callback; in lio_get_fw_stats()
1423 sc->callback_arg = sc; in lio_get_fw_stats()
1424 sc->wait_time = 500; /* in milli seconds */ in lio_get_fw_stats()
1435 callout_schedule(&lio->stats_timer, in lio_get_fw_stats()
1436 lio_ms_to_ticks(lio->stats_interval)); in lio_get_fw_stats()
1445 if_t ifp = oct_dev->props.ifp; in lio_get_intrmod_callback()
1452 resp = (struct lio_intrmod_resp *)sc->virtrptr; in lio_get_intrmod_callback()
1453 lio_swap_8B_data((uint64_t *)&resp->intrmod, in lio_get_intrmod_callback()
1455 memcpy(&lio->intrmod_cfg, &resp->intrmod, in lio_get_intrmod_callback()
1468 struct octeon_device *oct_dev = lio->oct_dev; in lio_get_intrmod_cfg()
1478 resp = (struct lio_intrmod_resp *)sc->virtrptr; in lio_get_intrmod_cfg()
1480 sc->iq_no = lio->linfo.txpciq[0].s.q_no; in lio_get_intrmod_cfg()
1485 sc->callback = lio_get_intrmod_callback; in lio_get_intrmod_cfg()
1486 sc->callback_arg = sc; in lio_get_intrmod_cfg()
1487 sc->wait_time = 1000; in lio_get_intrmod_cfg()
1505 ctx = (struct lio_intrmod_context *)sc->ctxptr; in lio_set_intrmod_callback()
1507 ctx->status = status; in lio_set_intrmod_callback()
1509 ctx->cond = 1; in lio_set_intrmod_callback()
1525 struct octeon_device *oct_dev = lio->oct_dev; in lio_set_intrmod_cfg()
1535 ctx = (struct lio_intrmod_context *)sc->ctxptr; in lio_set_intrmod_cfg()
1537 ctx->cond = 0; in lio_set_intrmod_cfg()
1538 ctx->octeon_id = lio_get_device_id(oct_dev); in lio_set_intrmod_cfg()
1540 cfg = (struct octeon_intrmod_cfg *)sc->virtdptr; in lio_set_intrmod_cfg()
1546 sc->iq_no = lio->linfo.txpciq[0].s.q_no; in lio_set_intrmod_cfg()
1551 sc->callback = lio_set_intrmod_callback; in lio_set_intrmod_cfg()
1552 sc->callback_arg = sc; in lio_set_intrmod_cfg()
1553 sc->wait_time = 1000; in lio_set_intrmod_cfg()
1563 * response arrived or timed-out. in lio_set_intrmod_cfg()
1565 lio_sleep_cond(oct_dev, &ctx->cond); in lio_set_intrmod_cfg()
1567 retval = ctx->status; in lio_set_intrmod_cfg()
1572 lio_dev_info(oct_dev, "Rx-Adaptive Interrupt moderation enabled:%llx\n", in lio_set_intrmod_cfg()
1573 LIO_CAST64(intr_cfg->rx_enable)); in lio_set_intrmod_cfg()
1584 struct octeon_device *oct = lio->oct_dev; in lio_intrmod_cfg_rx_intrcnt()
1588 switch (oct->chip_id) { in lio_intrmod_cfg_rx_intrcnt()
1593 rx_max_coalesced_frames = intrmod->rx_frames; 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()
1604 (rx_max_coalesced_frames - 1)); in lio_intrmod_cfg_rx_intrcnt()
1608 intrmod->rx_frames = rx_max_coalesced_frames; 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()
1626 switch (oct->chip_id) { in lio_intrmod_cfg_rx_intrtime()
1632 rx_coalesce_usecs = intrmod->rx_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()
1642 (intrmod->rx_frames | in lio_intrmod_cfg_rx_intrtime()
1647 intrmod->rx_usecs = rx_coalesce_usecs; 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()
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()
1687 ((uint64_t)(iq_intr_pkt - 1) in lio_intrmod_cfg_tx_intrcnt()
1693 intrmod->tx_frames = iq_intr_pkt; in lio_intrmod_cfg_tx_intrcnt()
1694 oct->tx_max_coalesced_frames = iq_intr_pkt; in lio_intrmod_cfg_tx_intrcnt()
1698 return (-EINVAL); in lio_intrmod_cfg_tx_intrcnt()
1707 struct octeon_device *oct = lio->oct_dev; in lio_get_set_intr_coalesce()
1716 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1717 new_val = old_val = lio->intrmod_cfg.rx_enable; in lio_get_set_intr_coalesce()
1720 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1726 lio->intrmod_cfg.rx_enable = new_val ? 1 : 0; in lio_get_set_intr_coalesce()
1730 if (lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1731 new_val = old_val = lio->intrmod_cfg.tx_enable; in lio_get_set_intr_coalesce()
1734 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1740 lio->intrmod_cfg.tx_enable = new_val ? 1 : 0; in lio_get_set_intr_coalesce()
1744 if (!lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1745 new_val = old_val = oct->rx_coalesce_usecs; in lio_get_set_intr_coalesce()
1748 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1758 if (!lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1759 new_val = old_val = oct->rx_max_coalesced_frames; in lio_get_set_intr_coalesce()
1762 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1772 if (!lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1773 new_val = old_val = oct->tx_max_coalesced_frames; in lio_get_set_intr_coalesce()
1776 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1786 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1787 new_val = old_val = lio->intrmod_cfg.minpkt_ratethr; in lio_get_set_intr_coalesce()
1790 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1796 if (lio->intrmod_cfg.rx_enable || lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1797 lio->intrmod_cfg.minpkt_ratethr = new_val; in lio_get_set_intr_coalesce()
1801 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1802 new_val = old_val = lio->intrmod_cfg.rx_mintmr_trigger; in lio_get_set_intr_coalesce()
1805 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1811 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1812 lio->intrmod_cfg.rx_mintmr_trigger = new_val; in lio_get_set_intr_coalesce()
1816 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1817 new_val = old_val = lio->intrmod_cfg.rx_mincnt_trigger; in lio_get_set_intr_coalesce()
1820 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1826 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1827 lio->intrmod_cfg.rx_mincnt_trigger = new_val; in lio_get_set_intr_coalesce()
1831 if (lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1832 new_val = old_val = lio->intrmod_cfg.tx_mincnt_trigger; in lio_get_set_intr_coalesce()
1835 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1841 if (lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1842 lio->intrmod_cfg.tx_mincnt_trigger = new_val; in lio_get_set_intr_coalesce()
1846 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1847 new_val = old_val = lio->intrmod_cfg.maxpkt_ratethr; in lio_get_set_intr_coalesce()
1850 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1856 if (lio->intrmod_cfg.rx_enable || lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1857 lio->intrmod_cfg.maxpkt_ratethr = new_val; in lio_get_set_intr_coalesce()
1861 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1862 new_val = old_val = lio->intrmod_cfg.rx_maxtmr_trigger; in lio_get_set_intr_coalesce()
1865 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1871 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1872 lio->intrmod_cfg.rx_maxtmr_trigger = new_val; in lio_get_set_intr_coalesce()
1876 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1877 new_val = old_val = lio->intrmod_cfg.rx_maxcnt_trigger; in lio_get_set_intr_coalesce()
1880 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1886 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1887 lio->intrmod_cfg.rx_maxcnt_trigger = new_val; in lio_get_set_intr_coalesce()
1891 if (lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1892 new_val = old_val = lio->intrmod_cfg.tx_maxcnt_trigger; in lio_get_set_intr_coalesce()
1895 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1901 if (lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1902 lio->intrmod_cfg.tx_maxcnt_trigger = new_val; in lio_get_set_intr_coalesce()
1906 if (lio->intrmod_cfg.rx_enable) in lio_get_set_intr_coalesce()
1907 new_val = old_val = lio->intrmod_cfg.check_intrvl; in lio_get_set_intr_coalesce()
1910 if ((err) || (req->newptr == NULL)) in lio_get_set_intr_coalesce()
1916 if (lio->intrmod_cfg.rx_enable || lio->intrmod_cfg.tx_enable) in lio_get_set_intr_coalesce()
1917 lio->intrmod_cfg.check_intrvl = new_val; 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()
1928 ret = lio_set_intrmod_cfg(lio, &lio->intrmod_cfg); in lio_get_set_intr_coalesce()
1932 if (!lio->intrmod_cfg.rx_enable) { 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()
1939 ret = lio_intrmod_cfg_rx_intrtime(lio, &lio->intrmod_cfg, in lio_get_set_intr_coalesce()
1944 ret = lio_intrmod_cfg_rx_intrcnt(lio, &lio->intrmod_cfg, in lio_get_set_intr_coalesce()
1949 oct->rx_coalesce_usecs = in lio_get_set_intr_coalesce()
1951 oct->rx_max_coalesced_frames = in lio_get_set_intr_coalesce()
1955 if (!lio->intrmod_cfg.tx_enable) { in lio_get_set_intr_coalesce()
1957 tx_coalesce_usecs = oct->tx_max_coalesced_frames; in lio_get_set_intr_coalesce()
1959 ret = lio_intrmod_cfg_tx_intrcnt(lio, &lio->intrmod_cfg, in lio_get_set_intr_coalesce()
1964 oct->tx_max_coalesced_frames = in lio_get_set_intr_coalesce()