Lines Matching refs:ha
50 static void qla_del_rcv_cntxt(qla_host_t *ha);
51 static int qla_init_rcv_cntxt(qla_host_t *ha);
52 static int qla_del_xmt_cntxt(qla_host_t *ha);
53 static int qla_init_xmt_cntxt(qla_host_t *ha);
54 static int qla_mbx_cmd(qla_host_t *ha, uint32_t *h_mbox, uint32_t n_hmbox,
56 static int qla_config_intr_cntxt(qla_host_t *ha, uint32_t start_idx,
58 static int qla_config_rss(qla_host_t *ha, uint16_t cntxt_id);
59 static int qla_config_intr_coalesce(qla_host_t *ha, uint16_t cntxt_id,
61 static int qla_set_mac_rcv_mode(qla_host_t *ha, uint32_t mode);
62 static int qla_link_event_req(qla_host_t *ha, uint16_t cntxt_id);
64 static int qla_tx_tso(qla_host_t *ha, struct mbuf *mp, q80_tx_cmd_t *tx_cmd,
66 static int qla_hw_add_all_mcast(qla_host_t *ha);
67 static int qla_add_rcv_rings(qla_host_t *ha, uint32_t sds_idx, uint32_t nsds);
69 static int qla_init_nic_func(qla_host_t *ha);
70 static int qla_stop_nic_func(qla_host_t *ha);
71 static int qla_query_fw_dcbx_caps(qla_host_t *ha);
72 static int qla_set_port_config(qla_host_t *ha, uint32_t cfg_bits);
73 static int qla_get_port_config(qla_host_t *ha, uint32_t *cfg_bits);
74 static int qla_set_cam_search_mode(qla_host_t *ha, uint32_t search_mode);
75 static int qla_get_cam_search_mode(qla_host_t *ha);
77 static void ql_minidump_free(qla_host_t *ha);
82 qla_stop_pegs(qla_host_t *ha) in qla_stop_pegs() argument
86 ql_rdwr_indreg32(ha, Q8_CRB_PEG_0, &val, 0); in qla_stop_pegs()
87 ql_rdwr_indreg32(ha, Q8_CRB_PEG_1, &val, 0); in qla_stop_pegs()
88 ql_rdwr_indreg32(ha, Q8_CRB_PEG_2, &val, 0); in qla_stop_pegs()
89 ql_rdwr_indreg32(ha, Q8_CRB_PEG_3, &val, 0); in qla_stop_pegs()
90 ql_rdwr_indreg32(ha, Q8_CRB_PEG_4, &val, 0); in qla_stop_pegs()
91 device_printf(ha->pci_dev, "%s PEGS HALTED!!!!!\n", __func__); in qla_stop_pegs()
98 qla_host_t *ha; in qla_sysctl_stop_pegs() local
106 ha = (qla_host_t *)arg1; in qla_sysctl_stop_pegs()
107 if (QLA_LOCK(ha, __func__, QLA_LOCK_DEFAULT_MS_TIMEOUT, 0) == 0) { in qla_sysctl_stop_pegs()
108 qla_stop_pegs(ha); in qla_sysctl_stop_pegs()
109 QLA_UNLOCK(ha, __func__); in qla_sysctl_stop_pegs()
136 qla_host_t *ha; in qla_sysctl_port_cfg() local
144 ha = (qla_host_t *)arg1; in qla_sysctl_port_cfg()
147 err = qla_get_port_config(ha, &cfg_bits); in qla_sysctl_port_cfg()
180 if (QLA_LOCK(ha, __func__, QLA_LOCK_DEFAULT_MS_TIMEOUT, 0) == 0) { in qla_sysctl_port_cfg()
181 err = qla_set_port_config(ha, cfg_bits); in qla_sysctl_port_cfg()
182 QLA_UNLOCK(ha, __func__); in qla_sysctl_port_cfg()
184 device_printf(ha->pci_dev, "%s: failed\n", __func__); in qla_sysctl_port_cfg()
187 if (QLA_LOCK(ha, __func__, QLA_LOCK_DEFAULT_MS_TIMEOUT, 0) == 0) { in qla_sysctl_port_cfg()
188 err = qla_get_port_config(ha, &cfg_bits); in qla_sysctl_port_cfg()
189 QLA_UNLOCK(ha, __func__); in qla_sysctl_port_cfg()
191 device_printf(ha->pci_dev, "%s: failed\n", __func__); in qla_sysctl_port_cfg()
203 qla_host_t *ha; in qla_sysctl_set_cam_search_mode() local
210 ha = (qla_host_t *)arg1; in qla_sysctl_set_cam_search_mode()
214 if (QLA_LOCK(ha, __func__, QLA_LOCK_DEFAULT_MS_TIMEOUT, 0) == 0) { in qla_sysctl_set_cam_search_mode()
215 err = qla_set_cam_search_mode(ha, (uint32_t)ret); in qla_sysctl_set_cam_search_mode()
216 QLA_UNLOCK(ha, __func__); in qla_sysctl_set_cam_search_mode()
218 device_printf(ha->pci_dev, "%s: failed\n", __func__); in qla_sysctl_set_cam_search_mode()
222 device_printf(ha->pci_dev, "%s: ret = %d\n", __func__, ret); in qla_sysctl_set_cam_search_mode()
232 qla_host_t *ha; in qla_sysctl_get_cam_search_mode() local
239 ha = (qla_host_t *)arg1; in qla_sysctl_get_cam_search_mode()
240 if (QLA_LOCK(ha, __func__, QLA_LOCK_DEFAULT_MS_TIMEOUT, 0) == 0) { in qla_sysctl_get_cam_search_mode()
241 err = qla_get_cam_search_mode(ha); in qla_sysctl_get_cam_search_mode()
242 QLA_UNLOCK(ha, __func__); in qla_sysctl_get_cam_search_mode()
244 device_printf(ha->pci_dev, "%s: failed\n", __func__); in qla_sysctl_get_cam_search_mode()
251 qlnx_add_hw_mac_stats_sysctls(qla_host_t *ha) in qlnx_add_hw_mac_stats_sysctls() argument
257 ctx = device_get_sysctl_ctx(ha->pci_dev); in qlnx_add_hw_mac_stats_sysctls()
258 children = SYSCTL_CHILDREN(device_get_sysctl_tree(ha->pci_dev)); in qlnx_add_hw_mac_stats_sysctls()
266 CTLFLAG_RD, &ha->hw.mac.xmt_frames, in qlnx_add_hw_mac_stats_sysctls()
271 CTLFLAG_RD, &ha->hw.mac.xmt_bytes, in qlnx_add_hw_mac_stats_sysctls()
276 CTLFLAG_RD, &ha->hw.mac.xmt_mcast_pkts, in qlnx_add_hw_mac_stats_sysctls()
281 CTLFLAG_RD, &ha->hw.mac.xmt_bcast_pkts, in qlnx_add_hw_mac_stats_sysctls()
286 CTLFLAG_RD, &ha->hw.mac.xmt_pause_frames, in qlnx_add_hw_mac_stats_sysctls()
291 CTLFLAG_RD, &ha->hw.mac.xmt_cntrl_pkts, in qlnx_add_hw_mac_stats_sysctls()
296 CTLFLAG_RD, &ha->hw.mac.xmt_pkt_lt_64bytes, in qlnx_add_hw_mac_stats_sysctls()
301 CTLFLAG_RD, &ha->hw.mac.xmt_pkt_lt_127bytes, in qlnx_add_hw_mac_stats_sysctls()
306 CTLFLAG_RD, &ha->hw.mac.xmt_pkt_lt_255bytes, in qlnx_add_hw_mac_stats_sysctls()
311 CTLFLAG_RD, &ha->hw.mac.xmt_pkt_lt_511bytes, in qlnx_add_hw_mac_stats_sysctls()
316 CTLFLAG_RD, &ha->hw.mac.xmt_pkt_lt_1023bytes, in qlnx_add_hw_mac_stats_sysctls()
321 CTLFLAG_RD, &ha->hw.mac.xmt_pkt_lt_1518bytes, in qlnx_add_hw_mac_stats_sysctls()
326 CTLFLAG_RD, &ha->hw.mac.xmt_pkt_gt_1518bytes, in qlnx_add_hw_mac_stats_sysctls()
331 CTLFLAG_RD, &ha->hw.mac.rcv_frames, in qlnx_add_hw_mac_stats_sysctls()
336 CTLFLAG_RD, &ha->hw.mac.rcv_bytes, in qlnx_add_hw_mac_stats_sysctls()
341 CTLFLAG_RD, &ha->hw.mac.rcv_mcast_pkts, in qlnx_add_hw_mac_stats_sysctls()
346 CTLFLAG_RD, &ha->hw.mac.rcv_bcast_pkts, in qlnx_add_hw_mac_stats_sysctls()
351 CTLFLAG_RD, &ha->hw.mac.rcv_pause_frames, in qlnx_add_hw_mac_stats_sysctls()
356 CTLFLAG_RD, &ha->hw.mac.rcv_cntrl_pkts, in qlnx_add_hw_mac_stats_sysctls()
361 CTLFLAG_RD, &ha->hw.mac.rcv_pkt_lt_64bytes, in qlnx_add_hw_mac_stats_sysctls()
366 CTLFLAG_RD, &ha->hw.mac.rcv_pkt_lt_127bytes, in qlnx_add_hw_mac_stats_sysctls()
371 CTLFLAG_RD, &ha->hw.mac.rcv_pkt_lt_255bytes, in qlnx_add_hw_mac_stats_sysctls()
376 CTLFLAG_RD, &ha->hw.mac.rcv_pkt_lt_511bytes, in qlnx_add_hw_mac_stats_sysctls()
381 CTLFLAG_RD, &ha->hw.mac.rcv_pkt_lt_1023bytes, in qlnx_add_hw_mac_stats_sysctls()
386 CTLFLAG_RD, &ha->hw.mac.rcv_pkt_lt_1518bytes, in qlnx_add_hw_mac_stats_sysctls()
391 CTLFLAG_RD, &ha->hw.mac.rcv_pkt_gt_1518bytes, in qlnx_add_hw_mac_stats_sysctls()
396 CTLFLAG_RD, &ha->hw.mac.rcv_len_error, in qlnx_add_hw_mac_stats_sysctls()
401 CTLFLAG_RD, &ha->hw.mac.rcv_len_small, in qlnx_add_hw_mac_stats_sysctls()
406 CTLFLAG_RD, &ha->hw.mac.rcv_len_large, in qlnx_add_hw_mac_stats_sysctls()
411 CTLFLAG_RD, &ha->hw.mac.rcv_jabber, in qlnx_add_hw_mac_stats_sysctls()
416 CTLFLAG_RD, &ha->hw.mac.rcv_dropped, in qlnx_add_hw_mac_stats_sysctls()
421 CTLFLAG_RD, &ha->hw.mac.fcs_error, in qlnx_add_hw_mac_stats_sysctls()
426 CTLFLAG_RD, &ha->hw.mac.align_error, in qlnx_add_hw_mac_stats_sysctls()
431 CTLFLAG_RD, &ha->hw.mac.eswitched_frames, in qlnx_add_hw_mac_stats_sysctls()
436 CTLFLAG_RD, &ha->hw.mac.eswitched_bytes, in qlnx_add_hw_mac_stats_sysctls()
441 CTLFLAG_RD, &ha->hw.mac.eswitched_mcast_frames, in qlnx_add_hw_mac_stats_sysctls()
446 CTLFLAG_RD, &ha->hw.mac.eswitched_bcast_frames, in qlnx_add_hw_mac_stats_sysctls()
451 CTLFLAG_RD, &ha->hw.mac.eswitched_ucast_frames, in qlnx_add_hw_mac_stats_sysctls()
456 CTLFLAG_RD, &ha->hw.mac.eswitched_err_free_frames, in qlnx_add_hw_mac_stats_sysctls()
461 CTLFLAG_RD, &ha->hw.mac.eswitched_err_free_bytes, in qlnx_add_hw_mac_stats_sysctls()
468 qlnx_add_hw_rcv_stats_sysctls(qla_host_t *ha) in qlnx_add_hw_rcv_stats_sysctls() argument
474 ctx = device_get_sysctl_ctx(ha->pci_dev); in qlnx_add_hw_rcv_stats_sysctls()
475 children = SYSCTL_CHILDREN(device_get_sysctl_tree(ha->pci_dev)); in qlnx_add_hw_rcv_stats_sysctls()
483 CTLFLAG_RD, &ha->hw.rcv.total_bytes, in qlnx_add_hw_rcv_stats_sysctls()
488 CTLFLAG_RD, &ha->hw.rcv.total_pkts, in qlnx_add_hw_rcv_stats_sysctls()
493 CTLFLAG_RD, &ha->hw.rcv.lro_pkt_count, in qlnx_add_hw_rcv_stats_sysctls()
498 CTLFLAG_RD, &ha->hw.rcv.sw_pkt_count, in qlnx_add_hw_rcv_stats_sysctls()
503 CTLFLAG_RD, &ha->hw.rcv.ip_chksum_err, in qlnx_add_hw_rcv_stats_sysctls()
508 CTLFLAG_RD, &ha->hw.rcv.pkts_wo_acntxts, in qlnx_add_hw_rcv_stats_sysctls()
513 CTLFLAG_RD, &ha->hw.rcv.pkts_dropped_no_sds_card, in qlnx_add_hw_rcv_stats_sysctls()
518 CTLFLAG_RD, &ha->hw.rcv.pkts_dropped_no_sds_host, in qlnx_add_hw_rcv_stats_sysctls()
523 CTLFLAG_RD, &ha->hw.rcv.oversized_pkts, in qlnx_add_hw_rcv_stats_sysctls()
528 CTLFLAG_RD, &ha->hw.rcv.pkts_dropped_no_rds, in qlnx_add_hw_rcv_stats_sysctls()
533 CTLFLAG_RD, &ha->hw.rcv.unxpctd_mcast_pkts, in qlnx_add_hw_rcv_stats_sysctls()
538 CTLFLAG_RD, &ha->hw.rcv.re1_fbq_error, in qlnx_add_hw_rcv_stats_sysctls()
543 CTLFLAG_RD, &ha->hw.rcv.invalid_mac_addr, in qlnx_add_hw_rcv_stats_sysctls()
548 CTLFLAG_RD, &ha->hw.rcv.rds_prime_trys, in qlnx_add_hw_rcv_stats_sysctls()
553 CTLFLAG_RD, &ha->hw.rcv.rds_prime_success, in qlnx_add_hw_rcv_stats_sysctls()
558 CTLFLAG_RD, &ha->hw.rcv.lro_flows_added, in qlnx_add_hw_rcv_stats_sysctls()
563 CTLFLAG_RD, &ha->hw.rcv.lro_flows_deleted, in qlnx_add_hw_rcv_stats_sysctls()
568 CTLFLAG_RD, &ha->hw.rcv.lro_flows_active, in qlnx_add_hw_rcv_stats_sysctls()
573 CTLFLAG_RD, &ha->hw.rcv.pkts_droped_unknown, in qlnx_add_hw_rcv_stats_sysctls()
578 CTLFLAG_RD, &ha->hw.rcv.pkts_cnt_oversized, in qlnx_add_hw_rcv_stats_sysctls()
585 qlnx_add_hw_xmt_stats_sysctls(qla_host_t *ha) in qlnx_add_hw_xmt_stats_sysctls() argument
594 ctx = device_get_sysctl_ctx(ha->pci_dev); in qlnx_add_hw_xmt_stats_sysctls()
595 children = SYSCTL_CHILDREN(device_get_sysctl_tree(ha->pci_dev)); in qlnx_add_hw_xmt_stats_sysctls()
601 for (i = 0; i < ha->hw.num_tx_rings; i++) { in qlnx_add_hw_xmt_stats_sysctls()
613 CTLFLAG_RD, &ha->hw.xmt[i].total_bytes, in qlnx_add_hw_xmt_stats_sysctls()
618 CTLFLAG_RD, &ha->hw.xmt[i].total_pkts, in qlnx_add_hw_xmt_stats_sysctls()
623 CTLFLAG_RD, &ha->hw.xmt[i].errors, in qlnx_add_hw_xmt_stats_sysctls()
628 CTLFLAG_RD, &ha->hw.xmt[i].pkts_dropped, in qlnx_add_hw_xmt_stats_sysctls()
633 CTLFLAG_RD, &ha->hw.xmt[i].switch_pkts, in qlnx_add_hw_xmt_stats_sysctls()
638 CTLFLAG_RD, &ha->hw.xmt[i].num_buffers, in qlnx_add_hw_xmt_stats_sysctls()
646 qlnx_add_hw_mbx_cmpl_stats_sysctls(qla_host_t *ha) in qlnx_add_hw_mbx_cmpl_stats_sysctls() argument
651 ctx = device_get_sysctl_ctx(ha->pci_dev); in qlnx_add_hw_mbx_cmpl_stats_sysctls()
652 node_children = SYSCTL_CHILDREN(device_get_sysctl_tree(ha->pci_dev)); in qlnx_add_hw_mbx_cmpl_stats_sysctls()
656 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[0], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
661 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[1], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
666 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[2], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
671 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[3], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
676 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[4], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
681 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[5], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
686 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[6], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
691 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[7], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
696 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[8], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
701 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[9], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
706 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[10], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
711 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[11], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
716 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[12], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
721 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[13], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
726 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[14], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
731 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[15], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
736 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[16], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
741 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[17], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
746 CTLFLAG_RD, &ha->hw.mbx_comp_msecs[18], in qlnx_add_hw_mbx_cmpl_stats_sysctls()
752 qlnx_add_hw_stats_sysctls(qla_host_t *ha) in qlnx_add_hw_stats_sysctls() argument
754 qlnx_add_hw_mac_stats_sysctls(ha); in qlnx_add_hw_stats_sysctls()
755 qlnx_add_hw_rcv_stats_sysctls(ha); in qlnx_add_hw_stats_sysctls()
756 qlnx_add_hw_xmt_stats_sysctls(ha); in qlnx_add_hw_stats_sysctls()
757 qlnx_add_hw_mbx_cmpl_stats_sysctls(ha); in qlnx_add_hw_stats_sysctls()
763 qlnx_add_drvr_sds_stats(qla_host_t *ha) in qlnx_add_drvr_sds_stats() argument
772 ctx = device_get_sysctl_ctx(ha->pci_dev); in qlnx_add_drvr_sds_stats()
773 children = SYSCTL_CHILDREN(device_get_sysctl_tree(ha->pci_dev)); in qlnx_add_drvr_sds_stats()
779 for (i = 0; i < ha->hw.num_sds_rings; i++) { in qlnx_add_drvr_sds_stats()
789 CTLFLAG_RD, &ha->hw.sds[i].intr_count, in qlnx_add_drvr_sds_stats()
794 CTLFLAG_RD, &ha->hw.sds[i].rx_free, in qlnx_add_drvr_sds_stats()
795 ha->hw.sds[i].rx_free, "rx_free"); in qlnx_add_drvr_sds_stats()
801 qlnx_add_drvr_rds_stats(qla_host_t *ha) in qlnx_add_drvr_rds_stats() argument
810 ctx = device_get_sysctl_ctx(ha->pci_dev); in qlnx_add_drvr_rds_stats()
811 children = SYSCTL_CHILDREN(device_get_sysctl_tree(ha->pci_dev)); in qlnx_add_drvr_rds_stats()
817 for (i = 0; i < ha->hw.num_rds_rings; i++) { in qlnx_add_drvr_rds_stats()
827 CTLFLAG_RD, &ha->hw.rds[i].count, in qlnx_add_drvr_rds_stats()
832 CTLFLAG_RD, &ha->hw.rds[i].lro_pkt_count, in qlnx_add_drvr_rds_stats()
837 CTLFLAG_RD, &ha->hw.rds[i].lro_bytes, in qlnx_add_drvr_rds_stats()
845 qlnx_add_drvr_tx_stats(qla_host_t *ha) in qlnx_add_drvr_tx_stats() argument
854 ctx = device_get_sysctl_ctx(ha->pci_dev); in qlnx_add_drvr_tx_stats()
855 children = SYSCTL_CHILDREN(device_get_sysctl_tree(ha->pci_dev)); in qlnx_add_drvr_tx_stats()
861 for (i = 0; i < ha->hw.num_tx_rings; i++) { in qlnx_add_drvr_tx_stats()
871 CTLFLAG_RD, &ha->tx_ring[i].count, in qlnx_add_drvr_tx_stats()
877 CTLFLAG_RD, &ha->tx_ring[i].iscsi_pkt_count, in qlnx_add_drvr_tx_stats()
886 qlnx_add_drvr_stats_sysctls(qla_host_t *ha) in qlnx_add_drvr_stats_sysctls() argument
888 qlnx_add_drvr_sds_stats(ha); in qlnx_add_drvr_stats_sysctls()
889 qlnx_add_drvr_rds_stats(ha); in qlnx_add_drvr_stats_sysctls()
890 qlnx_add_drvr_tx_stats(ha); in qlnx_add_drvr_stats_sysctls()
899 ql_hw_add_sysctls(qla_host_t *ha) in ql_hw_add_sysctls() argument
903 dev = ha->pci_dev; in ql_hw_add_sysctls()
907 OID_AUTO, "num_rds_rings", CTLFLAG_RD, &ha->hw.num_rds_rings, in ql_hw_add_sysctls()
908 ha->hw.num_rds_rings, "Number of Rcv Descriptor Rings"); in ql_hw_add_sysctls()
912 OID_AUTO, "num_sds_rings", CTLFLAG_RD, &ha->hw.num_sds_rings, in ql_hw_add_sysctls()
913 ha->hw.num_sds_rings, "Number of Status Descriptor Rings"); in ql_hw_add_sysctls()
917 OID_AUTO, "num_tx_rings", CTLFLAG_RD, &ha->hw.num_tx_rings, in ql_hw_add_sysctls()
918 ha->hw.num_tx_rings, "Number of Transmit Rings"); in ql_hw_add_sysctls()
922 OID_AUTO, "tx_ring_index", CTLFLAG_RW, &ha->txr_idx, in ql_hw_add_sysctls()
923 ha->txr_idx, "Tx Ring Used"); in ql_hw_add_sysctls()
927 OID_AUTO, "max_tx_segs", CTLFLAG_RD, &ha->hw.max_tx_segs, in ql_hw_add_sysctls()
928 ha->hw.max_tx_segs, "Max # of Segments in a non-TSO pkt"); in ql_hw_add_sysctls()
930 ha->hw.sds_cidx_thres = 32; in ql_hw_add_sysctls()
933 OID_AUTO, "sds_cidx_thres", CTLFLAG_RW, &ha->hw.sds_cidx_thres, in ql_hw_add_sysctls()
934 ha->hw.sds_cidx_thres, in ql_hw_add_sysctls()
938 ha->hw.rds_pidx_thres = 32; in ql_hw_add_sysctls()
941 OID_AUTO, "rds_pidx_thres", CTLFLAG_RW, &ha->hw.rds_pidx_thres, in ql_hw_add_sysctls()
942 ha->hw.rds_pidx_thres, in ql_hw_add_sysctls()
946 ha->hw.rcv_intr_coalesce = (3 << 16) | 256; in ql_hw_add_sysctls()
950 &ha->hw.rcv_intr_coalesce, in ql_hw_add_sysctls()
951 ha->hw.rcv_intr_coalesce, in ql_hw_add_sysctls()
959 ha->hw.xmt_intr_coalesce = (64 << 16) | 64; in ql_hw_add_sysctls()
963 &ha->hw.xmt_intr_coalesce, in ql_hw_add_sysctls()
964 ha->hw.xmt_intr_coalesce, in ql_hw_add_sysctls()
975 (void *)ha, 0, qla_sysctl_port_cfg, "I", in ql_hw_add_sysctls()
986 (void *)ha, 0, qla_sysctl_set_cam_search_mode, "I", in ql_hw_add_sysctls()
994 CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, (void *)ha, 0, in ql_hw_add_sysctls()
1000 ha->hw.enable_9kb = 1; in ql_hw_add_sysctls()
1004 OID_AUTO, "enable_9kb", CTLFLAG_RW, &ha->hw.enable_9kb, in ql_hw_add_sysctls()
1005 ha->hw.enable_9kb, "Enable 9Kbyte Buffers when MTU = 9000"); in ql_hw_add_sysctls()
1007 ha->hw.enable_hw_lro = 1; in ql_hw_add_sysctls()
1011 OID_AUTO, "enable_hw_lro", CTLFLAG_RW, &ha->hw.enable_hw_lro, in ql_hw_add_sysctls()
1012 ha->hw.enable_hw_lro, "Enable Hardware LRO; Default is true \n" in ql_hw_add_sysctls()
1020 OID_AUTO, "sp_log_index", CTLFLAG_RW, &ha->hw.sp_log_index, in ql_hw_add_sysctls()
1021 ha->hw.sp_log_index, "sp_log_index"); in ql_hw_add_sysctls()
1025 OID_AUTO, "sp_log_stop", CTLFLAG_RW, &ha->hw.sp_log_stop, in ql_hw_add_sysctls()
1026 ha->hw.sp_log_stop, "sp_log_stop"); in ql_hw_add_sysctls()
1028 ha->hw.sp_log_stop_events = 0; in ql_hw_add_sysctls()
1033 &ha->hw.sp_log_stop_events, in ql_hw_add_sysctls()
1034 ha->hw.sp_log_stop_events, "Slow path event log is stopped" in ql_hw_add_sysctls()
1042 ha->hw.mdump_active = 0; in ql_hw_add_sysctls()
1045 OID_AUTO, "minidump_active", CTLFLAG_RW, &ha->hw.mdump_active, in ql_hw_add_sysctls()
1046 ha->hw.mdump_active, in ql_hw_add_sysctls()
1049 ha->hw.mdump_done = 0; in ql_hw_add_sysctls()
1053 &ha->hw.mdump_done, ha->hw.mdump_done, in ql_hw_add_sysctls()
1056 ha->hw.mdump_capture_mask = 0xF; in ql_hw_add_sysctls()
1060 &ha->hw.mdump_capture_mask, ha->hw.mdump_capture_mask, in ql_hw_add_sysctls()
1064 ha->err_inject = 0; in ql_hw_add_sysctls()
1068 CTLFLAG_RW, &ha->err_inject, ha->err_inject, in ql_hw_add_sysctls()
1090 (void *)ha, 0, qla_sysctl_stop_pegs, "I", "Peg Stop"); in ql_hw_add_sysctls()
1094 ha->hw.user_pri_nic = 0; in ql_hw_add_sysctls()
1097 OID_AUTO, "user_pri_nic", CTLFLAG_RW, &ha->hw.user_pri_nic, in ql_hw_add_sysctls()
1098 ha->hw.user_pri_nic, in ql_hw_add_sysctls()
1101 ha->hw.user_pri_iscsi = 4; in ql_hw_add_sysctls()
1104 OID_AUTO, "user_pri_iscsi", CTLFLAG_RW, &ha->hw.user_pri_iscsi, in ql_hw_add_sysctls()
1105 ha->hw.user_pri_iscsi, in ql_hw_add_sysctls()
1108 qlnx_add_hw_stats_sysctls(ha); in ql_hw_add_sysctls()
1109 qlnx_add_drvr_stats_sysctls(ha); in ql_hw_add_sysctls()
1115 ql_hw_link_status(qla_host_t *ha) in ql_hw_link_status() argument
1117 device_printf(ha->pci_dev, "cable_oui\t\t 0x%08x\n", ha->hw.cable_oui); in ql_hw_link_status()
1119 if (ha->hw.link_up) { in ql_hw_link_status()
1120 device_printf(ha->pci_dev, "link Up\n"); in ql_hw_link_status()
1122 device_printf(ha->pci_dev, "link Down\n"); in ql_hw_link_status()
1125 if (ha->hw.fduplex) { in ql_hw_link_status()
1126 device_printf(ha->pci_dev, "Full Duplex\n"); in ql_hw_link_status()
1128 device_printf(ha->pci_dev, "Half Duplex\n"); in ql_hw_link_status()
1131 if (ha->hw.autoneg) { in ql_hw_link_status()
1132 device_printf(ha->pci_dev, "Auto Negotiation Enabled\n"); in ql_hw_link_status()
1134 device_printf(ha->pci_dev, "Auto Negotiation Disabled\n"); in ql_hw_link_status()
1137 switch (ha->hw.link_speed) { in ql_hw_link_status()
1139 device_printf(ha->pci_dev, "link speed\t\t 10Gps\n"); in ql_hw_link_status()
1143 device_printf(ha->pci_dev, "link speed\t\t 1Gps\n"); in ql_hw_link_status()
1147 device_printf(ha->pci_dev, "link speed\t\t 100Mbps\n"); in ql_hw_link_status()
1151 device_printf(ha->pci_dev, "link speed\t\t Unknown\n"); in ql_hw_link_status()
1155 switch (ha->hw.module_type) { in ql_hw_link_status()
1157 device_printf(ha->pci_dev, "Module Type 10GBase-LRM\n"); in ql_hw_link_status()
1161 device_printf(ha->pci_dev, "Module Type 10GBase-LR\n"); in ql_hw_link_status()
1165 device_printf(ha->pci_dev, "Module Type 10GBase-SR\n"); in ql_hw_link_status()
1169 device_printf(ha->pci_dev, in ql_hw_link_status()
1171 ha->hw.cable_length); in ql_hw_link_status()
1175 device_printf(ha->pci_dev, "Module Type 10GE Active" in ql_hw_link_status()
1177 ha->hw.cable_length); in ql_hw_link_status()
1181 device_printf(ha->pci_dev, in ql_hw_link_status()
1184 ha->hw.cable_length); in ql_hw_link_status()
1188 device_printf(ha->pci_dev, "Module Type 1000Base-SX\n"); in ql_hw_link_status()
1192 device_printf(ha->pci_dev, "Module Type 1000Base-LX\n"); in ql_hw_link_status()
1196 device_printf(ha->pci_dev, "Module Type 1000Base-CX\n"); in ql_hw_link_status()
1200 device_printf(ha->pci_dev, "Module Type 1000Base-T\n"); in ql_hw_link_status()
1204 device_printf(ha->pci_dev, "Module Type 1GE Passive Copper" in ql_hw_link_status()
1209 device_printf(ha->pci_dev, "Unknown Module Type 0x%x\n", in ql_hw_link_status()
1210 ha->hw.module_type); in ql_hw_link_status()
1214 if (ha->hw.link_faults == 1) in ql_hw_link_status()
1215 device_printf(ha->pci_dev, "SFP Power Fault\n"); in ql_hw_link_status()
1223 ql_free_dma(qla_host_t *ha) in ql_free_dma() argument
1227 if (ha->hw.dma_buf.flags.sds_ring) { in ql_free_dma()
1228 for (i = 0; i < ha->hw.num_sds_rings; i++) { in ql_free_dma()
1229 ql_free_dmabuf(ha, &ha->hw.dma_buf.sds_ring[i]); in ql_free_dma()
1231 ha->hw.dma_buf.flags.sds_ring = 0; in ql_free_dma()
1234 if (ha->hw.dma_buf.flags.rds_ring) { in ql_free_dma()
1235 for (i = 0; i < ha->hw.num_rds_rings; i++) { in ql_free_dma()
1236 ql_free_dmabuf(ha, &ha->hw.dma_buf.rds_ring[i]); in ql_free_dma()
1238 ha->hw.dma_buf.flags.rds_ring = 0; in ql_free_dma()
1241 if (ha->hw.dma_buf.flags.tx_ring) { in ql_free_dma()
1242 ql_free_dmabuf(ha, &ha->hw.dma_buf.tx_ring); in ql_free_dma()
1243 ha->hw.dma_buf.flags.tx_ring = 0; in ql_free_dma()
1245 ql_minidump_free(ha); in ql_free_dma()
1253 ql_alloc_dma(qla_host_t *ha) in ql_alloc_dma() argument
1262 dev = ha->pci_dev; in ql_alloc_dma()
1264 QL_DPRINT2(ha, (dev, "%s: enter\n", __func__)); in ql_alloc_dma()
1266 hw = &ha->hw; in ql_alloc_dma()
1271 size = (tx_ring_size * ha->hw.num_tx_rings); in ql_alloc_dma()
1276 if (ql_alloc_dmabuf(ha, &hw->dma_buf.tx_ring)) { in ql_alloc_dma()
1284 for (i = 0; i < ha->hw.num_tx_rings; i++) { in ql_alloc_dma()
1294 for (i = 0; i < ha->hw.num_tx_rings; i++) { in ql_alloc_dma()
1304 ha->hw.dma_buf.flags.tx_ring = 1; in ql_alloc_dma()
1306 QL_DPRINT2(ha, (dev, "%s: tx_ring phys %p virt %p\n", in ql_alloc_dma()
1318 if (ql_alloc_dmabuf(ha, &hw->dma_buf.rds_ring[i])) { in ql_alloc_dma()
1323 ql_free_dmabuf(ha, &hw->dma_buf.rds_ring[j]); in ql_alloc_dma()
1327 QL_DPRINT4(ha, (dev, "%s: rx_ring[%d] phys %p virt %p\n", in ql_alloc_dma()
1343 if (ql_alloc_dmabuf(ha, &hw->dma_buf.sds_ring[i])) { in ql_alloc_dma()
1348 ql_free_dmabuf(ha, &hw->dma_buf.sds_ring[j]); in ql_alloc_dma()
1352 QL_DPRINT4(ha, (dev, "%s: sds_ring[%d] phys %p virt %p\n", in ql_alloc_dma()
1367 ql_free_dma(ha); in ql_alloc_dma()
1374 qla_mbx_cmd(qla_host_t *ha, uint32_t *h_mbox, uint32_t n_hmbox, in qla_mbx_cmd() argument
1384 ql_sp_log(ha, 0, 5, no_pause, h_mbox[0], h_mbox[1], h_mbox[2], h_mbox[3]); in qla_mbx_cmd()
1386 if (ha->offline || ha->qla_initiate_recovery) { in qla_mbx_cmd()
1387 ql_sp_log(ha, 1, 2, ha->offline, ha->qla_initiate_recovery, 0, 0, 0); in qla_mbx_cmd()
1391 if (((ha->err_inject & 0xFFFF) == INJCT_MBX_CMD_FAILURE) && in qla_mbx_cmd()
1392 (((ha->err_inject & ~0xFFFF) == ((h_mbox[0] & 0xFFFF) << 16))|| in qla_mbx_cmd()
1393 !(ha->err_inject & ~0xFFFF))) { in qla_mbx_cmd()
1395 QL_INITIATE_RECOVERY(ha); in qla_mbx_cmd()
1407 if (ha->qla_initiate_recovery) { in qla_mbx_cmd()
1408 ql_sp_log(ha, 2, 1, ha->qla_initiate_recovery, 0, 0, 0, 0); in qla_mbx_cmd()
1412 data = READ_REG32(ha, Q8_HOST_MBOX_CNTRL); in qla_mbx_cmd()
1424 device_printf(ha->pci_dev, "%s: host_mbx_cntrl 0x%08x\n", in qla_mbx_cmd()
1426 ql_sp_log(ha, 3, 1, data, 0, 0, 0, 0); in qla_mbx_cmd()
1428 ha->hw.mbx_comp_msecs[(Q8_MBX_COMP_MSECS - 2)]++; in qla_mbx_cmd()
1429 QL_INITIATE_RECOVERY(ha); in qla_mbx_cmd()
1434 WRITE_REG32(ha, (Q8_HOST_MBOX0 + (i << 2)), *h_mbox); in qla_mbx_cmd()
1438 WRITE_REG32(ha, Q8_HOST_MBOX_CNTRL, 0x1); in qla_mbx_cmd()
1442 if (ha->qla_initiate_recovery) { in qla_mbx_cmd()
1443 ql_sp_log(ha, 4, 1, ha->qla_initiate_recovery, 0, 0, 0, 0); in qla_mbx_cmd()
1447 data = READ_REG32(ha, Q8_FW_MBOX_CNTRL); in qla_mbx_cmd()
1450 data = READ_REG32(ha, Q8_FW_MBOX0); in qla_mbx_cmd()
1462 device_printf(ha->pci_dev, "%s: fw_mbx_cntrl 0x%08x\n", in qla_mbx_cmd()
1464 ql_sp_log(ha, 5, 1, data, 0, 0, 0, 0); in qla_mbx_cmd()
1466 ha->hw.mbx_comp_msecs[(Q8_MBX_COMP_MSECS - 1)]++; in qla_mbx_cmd()
1467 QL_INITIATE_RECOVERY(ha); in qla_mbx_cmd()
1472 if (ha->qla_initiate_recovery) { in qla_mbx_cmd()
1473 ql_sp_log(ha, 6, 1, ha->qla_initiate_recovery, 0, 0, 0, 0); in qla_mbx_cmd()
1477 *fw_mbox++ = READ_REG32(ha, (Q8_FW_MBOX0 + (i << 2))); in qla_mbx_cmd()
1480 WRITE_REG32(ha, Q8_FW_MBOX_CNTRL, 0x0); in qla_mbx_cmd()
1481 WRITE_REG32(ha, ha->hw.mbx_intr_mask_offset, 0x0); in qla_mbx_cmd()
1489 ha->hw.mbx_comp_msecs[msecs_200]++; in qla_mbx_cmd()
1491 ha->hw.mbx_comp_msecs[15]++; in qla_mbx_cmd()
1493 device_printf(ha->pci_dev, "%s: [%ld, %ld] %ld\n", __func__, in qla_mbx_cmd()
1495 ha->hw.mbx_comp_msecs[16]++; in qla_mbx_cmd()
1498 ql_sp_log(ha, 7, 5, fw_mbox[0], fw_mbox[1], fw_mbox[2], fw_mbox[3], fw_mbox[4]); in qla_mbx_cmd()
1505 qla_get_nic_partition(qla_host_t *ha, uint32_t *supports_9kb, in qla_get_nic_partition() argument
1509 device_t dev = ha->pci_dev; in qla_get_nic_partition()
1511 bzero(ha->hw.mbox, (sizeof (uint32_t) * Q8_NUM_MBOX)); in qla_get_nic_partition()
1513 mbox = ha->hw.mbox; in qla_get_nic_partition()
1517 if (qla_mbx_cmd(ha, mbox, 2, mbox, 19, 0)) { in qla_get_nic_partition()
1541 qla_config_intr_cntxt(qla_host_t *ha, uint32_t start_idx, uint32_t num_intrs, in qla_config_intr_cntxt() argument
1545 device_t dev = ha->pci_dev; in qla_config_intr_cntxt()
1549 c_intr = (q80_config_intr_t *)ha->hw.mbox; in qla_config_intr_cntxt()
1566 ha->hw.intr_id[(start_idx + i)]; in qla_config_intr_cntxt()
1572 if (qla_mbx_cmd(ha, (uint32_t *)c_intr, in qla_config_intr_cntxt()
1574 ha->hw.mbox, (sizeof (q80_config_intr_rsp_t) >> 2), 0)) { in qla_config_intr_cntxt()
1580 c_intr_rsp = (q80_config_intr_rsp_t *)ha->hw.mbox; in qla_config_intr_cntxt()
1601 ha->hw.intr_id[(start_idx + i)] = in qla_config_intr_cntxt()
1603 ha->hw.intr_src[(start_idx + i)] = in qla_config_intr_cntxt()
1621 qla_config_rss(qla_host_t *ha, uint16_t cntxt_id) in qla_config_rss() argument
1626 device_t dev = ha->pci_dev; in qla_config_rss()
1628 c_rss = (q80_config_rss_t *)ha->hw.mbox; in qla_config_rss()
1655 if (qla_mbx_cmd(ha, (uint32_t *)c_rss, in qla_config_rss()
1657 ha->hw.mbox, (sizeof(q80_config_rss_rsp_t) >> 2), 0)) { in qla_config_rss()
1661 c_rss_rsp = (q80_config_rss_rsp_t *)ha->hw.mbox; in qla_config_rss()
1673 qla_set_rss_ind_table(qla_host_t *ha, uint32_t start_idx, uint32_t count, in qla_set_rss_ind_table() argument
1679 device_t dev = ha->pci_dev; in qla_set_rss_ind_table()
1688 c_rss_ind = (q80_config_rss_ind_table_t *)ha->hw.mbox; in qla_set_rss_ind_table()
1700 if (qla_mbx_cmd(ha, (uint32_t *)c_rss_ind, in qla_set_rss_ind_table()
1701 (sizeof (q80_config_rss_ind_table_t) >> 2), ha->hw.mbox, in qla_set_rss_ind_table()
1707 c_rss_ind_rsp = (q80_config_rss_ind_table_rsp_t *)ha->hw.mbox; in qla_set_rss_ind_table()
1722 qla_config_intr_coalesce(qla_host_t *ha, uint16_t cntxt_id, int tenable, in qla_config_intr_coalesce() argument
1728 device_t dev = ha->pci_dev; in qla_config_intr_coalesce()
1730 intrc = (q80_config_intr_coalesc_t *)ha->hw.mbox; in qla_config_intr_coalesce()
1739 intrc->max_pkts = ha->hw.rcv_intr_coalesce & 0xFFFF; in qla_config_intr_coalesce()
1740 intrc->max_mswait = (ha->hw.rcv_intr_coalesce >> 16) & 0xFFFF; in qla_config_intr_coalesce()
1743 intrc->max_pkts = ha->hw.xmt_intr_coalesce & 0xFFFF; in qla_config_intr_coalesce()
1744 intrc->max_mswait = (ha->hw.xmt_intr_coalesce >> 16) & 0xFFFF; in qla_config_intr_coalesce()
1753 for (i = 0; i < ha->hw.num_sds_rings; i++) { in qla_config_intr_coalesce()
1759 if (qla_mbx_cmd(ha, (uint32_t *)intrc, in qla_config_intr_coalesce()
1761 ha->hw.mbox, (sizeof(q80_config_intr_coalesc_rsp_t) >> 2), 0)) { in qla_config_intr_coalesce()
1765 intrc_rsp = (q80_config_intr_coalesc_rsp_t *)ha->hw.mbox; in qla_config_intr_coalesce()
1783 qla_config_mac_addr(qla_host_t *ha, uint8_t *mac_addr, uint32_t add_mac, in qla_config_mac_addr() argument
1789 device_t dev = ha->pci_dev; in qla_config_mac_addr()
1799 cmac = (q80_config_mac_addr_t *)ha->hw.mbox; in qla_config_mac_addr()
1814 cmac->cntxt_id = ha->hw.rcv_cntxt_id; in qla_config_mac_addr()
1821 if (qla_mbx_cmd(ha, (uint32_t *)cmac, in qla_config_mac_addr()
1823 ha->hw.mbox, (sizeof(q80_config_mac_addr_rsp_t) >> 2), 1)) { in qla_config_mac_addr()
1828 cmac_rsp = (q80_config_mac_addr_rsp_t *)ha->hw.mbox; in qla_config_mac_addr()
1852 qla_set_mac_rcv_mode(qla_host_t *ha, uint32_t mode) in qla_set_mac_rcv_mode() argument
1857 device_t dev = ha->pci_dev; in qla_set_mac_rcv_mode()
1859 rcv_mode = (q80_config_mac_rcv_mode_t *)ha->hw.mbox; in qla_set_mac_rcv_mode()
1868 rcv_mode->cntxt_id = ha->hw.rcv_cntxt_id; in qla_set_mac_rcv_mode()
1870 if (qla_mbx_cmd(ha, (uint32_t *)rcv_mode, in qla_set_mac_rcv_mode()
1872 ha->hw.mbox, (sizeof(q80_config_mac_rcv_mode_rsp_t) >> 2), 1)) { in qla_set_mac_rcv_mode()
1876 rcv_mode_rsp = (q80_config_mac_rcv_mode_rsp_t *)ha->hw.mbox; in qla_set_mac_rcv_mode()
1889 ql_set_promisc(qla_host_t *ha) in ql_set_promisc() argument
1893 ha->hw.mac_rcv_mode |= Q8_MBX_MAC_RCV_PROMISC_ENABLE; in ql_set_promisc()
1894 ret = qla_set_mac_rcv_mode(ha, ha->hw.mac_rcv_mode); in ql_set_promisc()
1899 qla_reset_promisc(qla_host_t *ha) in qla_reset_promisc() argument
1901 ha->hw.mac_rcv_mode &= ~Q8_MBX_MAC_RCV_PROMISC_ENABLE; in qla_reset_promisc()
1902 (void)qla_set_mac_rcv_mode(ha, ha->hw.mac_rcv_mode); in qla_reset_promisc()
1906 ql_set_allmulti(qla_host_t *ha) in ql_set_allmulti() argument
1910 ha->hw.mac_rcv_mode |= Q8_MBX_MAC_ALL_MULTI_ENABLE; in ql_set_allmulti()
1911 ret = qla_set_mac_rcv_mode(ha, ha->hw.mac_rcv_mode); in ql_set_allmulti()
1916 qla_reset_allmulti(qla_host_t *ha) in qla_reset_allmulti() argument
1918 ha->hw.mac_rcv_mode &= ~Q8_MBX_MAC_ALL_MULTI_ENABLE; in qla_reset_allmulti()
1919 (void)qla_set_mac_rcv_mode(ha, ha->hw.mac_rcv_mode); in qla_reset_allmulti()
1928 ql_set_max_mtu(qla_host_t *ha, uint32_t mtu, uint16_t cntxt_id) in ql_set_max_mtu() argument
1935 dev = ha->pci_dev; in ql_set_max_mtu()
1937 max_mtu = (q80_set_max_mtu_t *)ha->hw.mbox; in ql_set_max_mtu()
1947 if (qla_mbx_cmd(ha, (uint32_t *)max_mtu, in ql_set_max_mtu()
1949 ha->hw.mbox, (sizeof (q80_set_max_mtu_rsp_t) >> 2), 1)) { in ql_set_max_mtu()
1954 max_mtu_rsp = (q80_set_max_mtu_rsp_t *)ha->hw.mbox; in ql_set_max_mtu()
1966 qla_link_event_req(qla_host_t *ha, uint16_t cntxt_id) in qla_link_event_req() argument
1973 dev = ha->pci_dev; in qla_link_event_req()
1975 lnk = (q80_link_event_t *)ha->hw.mbox; in qla_link_event_req()
1985 if (qla_mbx_cmd(ha, (uint32_t *)lnk, (sizeof (q80_link_event_t) >> 2), in qla_link_event_req()
1986 ha->hw.mbox, (sizeof (q80_link_event_rsp_t) >> 2), 0)) { in qla_link_event_req()
1991 lnk_rsp = (q80_link_event_rsp_t *)ha->hw.mbox; in qla_link_event_req()
2003 qla_config_fw_lro(qla_host_t *ha, uint16_t cntxt_id) in qla_config_fw_lro() argument
2010 dev = ha->pci_dev; in qla_config_fw_lro()
2012 fw_lro = (q80_config_fw_lro_t *)ha->hw.mbox; in qla_config_fw_lro()
2024 if (qla_mbx_cmd(ha, (uint32_t *)fw_lro, in qla_config_fw_lro()
2026 ha->hw.mbox, (sizeof (q80_config_fw_lro_rsp_t) >> 2), 0)) { in qla_config_fw_lro()
2031 fw_lro_rsp = (q80_config_fw_lro_rsp_t *)ha->hw.mbox; in qla_config_fw_lro()
2043 qla_set_cam_search_mode(qla_host_t *ha, uint32_t search_mode) in qla_set_cam_search_mode() argument
2050 dev = ha->pci_dev; in qla_set_cam_search_mode()
2052 hw_config = (q80_hw_config_t *)ha->hw.mbox; in qla_set_cam_search_mode()
2063 if (qla_mbx_cmd(ha, (uint32_t *)hw_config, in qla_set_cam_search_mode()
2065 ha->hw.mbox, (sizeof (q80_hw_config_rsp_t) >> 2), 0)) { in qla_set_cam_search_mode()
2069 hw_config_rsp = (q80_hw_config_rsp_t *)ha->hw.mbox; in qla_set_cam_search_mode()
2081 qla_get_cam_search_mode(qla_host_t *ha) in qla_get_cam_search_mode() argument
2088 dev = ha->pci_dev; in qla_get_cam_search_mode()
2090 hw_config = (q80_hw_config_t *)ha->hw.mbox; in qla_get_cam_search_mode()
2099 if (qla_mbx_cmd(ha, (uint32_t *)hw_config, in qla_get_cam_search_mode()
2101 ha->hw.mbox, (sizeof (q80_hw_config_rsp_t) >> 2), 0)) { in qla_get_cam_search_mode()
2105 hw_config_rsp = (q80_hw_config_rsp_t *)ha->hw.mbox; in qla_get_cam_search_mode()
2120 qla_get_hw_stats(qla_host_t *ha, uint32_t cmd, uint32_t rsp_size) in qla_get_hw_stats() argument
2127 dev = ha->pci_dev; in qla_get_hw_stats()
2129 stat = (q80_get_stats_t *)ha->hw.mbox; in qla_get_hw_stats()
2138 if (qla_mbx_cmd(ha, (uint32_t *)stat, 2, in qla_get_hw_stats()
2139 ha->hw.mbox, (rsp_size >> 2), 0)) { in qla_get_hw_stats()
2144 stat_rsp = (q80_get_stats_rsp_t *)ha->hw.mbox; in qla_get_hw_stats()
2156 ql_get_stats(qla_host_t *ha) in ql_get_stats() argument
2164 if_t ifp = ha->ifp; in ql_get_stats()
2169 if (QLA_LOCK(ha, __func__, QLA_LOCK_DEFAULT_MS_TIMEOUT, 0) != 0) { in ql_get_stats()
2170 device_printf(ha->pci_dev, "%s: failed\n", __func__); in ql_get_stats()
2175 QLA_UNLOCK(ha, __func__); in ql_get_stats()
2179 stat_rsp = (q80_get_stats_rsp_t *)ha->hw.mbox; in ql_get_stats()
2186 cmd |= ((ha->pci_func & 0x1) << 16); in ql_get_stats()
2188 if (ha->qla_watchdog_pause || (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) || in ql_get_stats()
2189 ha->offline) in ql_get_stats()
2192 if (qla_get_hw_stats(ha, cmd, sizeof (q80_get_stats_rsp_t)) == 0) { in ql_get_stats()
2194 bcopy(mstat, &ha->hw.mac, sizeof(q80_mac_stats_t)); in ql_get_stats()
2196 device_printf(ha->pci_dev, "%s: mac failed [0x%08x]\n", in ql_get_stats()
2197 __func__, ha->hw.mbox[0]); in ql_get_stats()
2204 cmd |= (ha->hw.rcv_cntxt_id << 16); in ql_get_stats()
2206 if (ha->qla_watchdog_pause || (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) || in ql_get_stats()
2207 ha->offline) in ql_get_stats()
2210 if (qla_get_hw_stats(ha, cmd, sizeof (q80_get_stats_rsp_t)) == 0) { in ql_get_stats()
2212 bcopy(rstat, &ha->hw.rcv, sizeof(q80_rcv_stats_t)); in ql_get_stats()
2214 device_printf(ha->pci_dev, "%s: rcv failed [0x%08x]\n", in ql_get_stats()
2215 __func__, ha->hw.mbox[0]); in ql_get_stats()
2218 if (ha->qla_watchdog_pause || (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) || in ql_get_stats()
2219 ha->offline) in ql_get_stats()
2224 for (i = 0 ; (i < ha->hw.num_tx_rings); i++) { in ql_get_stats()
2225 if (ha->qla_watchdog_pause || in ql_get_stats()
2227 ha->offline) in ql_get_stats()
2232 cmd |= (ha->hw.tx_cntxt[i].tx_cntxt_id << 16); in ql_get_stats()
2234 if (qla_get_hw_stats(ha, cmd, sizeof(q80_get_stats_rsp_t)) in ql_get_stats()
2237 bcopy(xstat, &ha->hw.xmt[i], sizeof(q80_xmt_stats_t)); in ql_get_stats()
2239 device_printf(ha->pci_dev, "%s: xmt failed [0x%08x]\n", in ql_get_stats()
2240 __func__, ha->hw.mbox[0]); in ql_get_stats()
2245 QLA_UNLOCK(ha, __func__); in ql_get_stats()
2257 qla_tx_tso(qla_host_t *ha, struct mbuf *mp, q80_tx_cmd_t *tx_cmd, uint8_t *hdr) in qla_tx_tso() argument
2328 QL_DPRINT8(ha, (ha->pci_dev, "%s: type!=ip\n", __func__)); in qla_tx_tso()
2377 qla_tx_chksum(qla_host_t *ha, struct mbuf *mp, uint32_t *op_code, in qla_tx_chksum() argument
2468 ql_hw_send(qla_host_t *ha, bus_dma_segment_t *segs, int nsegs, in ql_hw_send() argument
2472 qla_hw_t *hw = &ha->hw; in ql_hw_send()
2484 dev = ha->pci_dev; in ql_hw_send()
2504 ret = qla_tx_tso(ha, mp, &tso_cmd, src); in ql_hw_send()
2532 (void)qla_tx_chksum(ha, mp, &op_code, &tcp_hdr_off); in ql_hw_send()
2536 ql_hw_tx_done_locked(ha, txr_idx); in ql_hw_send()
2539 QL_DPRINT8(ha, (dev, "%s: (hw->txr_free <= " in ql_hw_send()
2551 if (NULL != ha->tx_ring[txr_idx].tx_buf[j].m_head) { in ql_hw_send()
2552 QL_ASSERT(ha, 0, \ in ql_hw_send()
2555 ha->tx_ring[txr_idx].tx_buf[j].m_head)); in ql_hw_send()
2563 if (nsegs > ha->hw.max_tx_segs) in ql_hw_send()
2564 ha->hw.max_tx_segs = nsegs; in ql_hw_send()
2577 ha->tx_tso_frames++; in ql_hw_send()
2584 eh->evl_tag |= ha->hw.user_pri_iscsi << 13; in ql_hw_send()
2594 ha->hw_vlan_tx_frames++; in ql_hw_send()
2598 tx_cmd->vlan_tci |= ha->hw.user_pri_iscsi << 13; in ql_hw_send()
2606 tx_cmd->cntxtid = Q8_TX_CMD_PORT_CNXTID(ha->pci_func); in ql_hw_send()
2715 QL_UPDATE_TX_PRODUCER_INDEX(ha, hw->tx_cntxt[txr_idx].txr_next,\ in ql_hw_send()
2717 QL_DPRINT8(ha, (dev, "%s: return\n", __func__)); in ql_hw_send()
2724 qla_config_rss_ind_table(qla_host_t *ha) in qla_config_rss_ind_table() argument
2730 rss_ind_tbl[i] = i % ha->hw.num_sds_rings; in qla_config_rss_ind_table()
2741 if (qla_set_rss_ind_table(ha, i, count, ha->hw.rcv_cntxt_id, in qla_config_rss_ind_table()
2750 qla_config_soft_lro(qla_host_t *ha) in qla_config_soft_lro() argument
2754 qla_hw_t *hw = &ha->hw; in qla_config_soft_lro()
2762 if (tcp_lro_init_args(lro, ha->ifp, 0, NUM_RX_DESCRIPTORS)) { in qla_config_soft_lro()
2763 device_printf(ha->pci_dev, in qla_config_soft_lro()
2769 lro->ifp = ha->ifp; in qla_config_soft_lro()
2772 QL_DPRINT2(ha, (ha->pci_dev, "%s: LRO initialized\n", __func__)); in qla_config_soft_lro()
2778 qla_drain_soft_lro(qla_host_t *ha) in qla_drain_soft_lro() argument
2782 qla_hw_t *hw = &ha->hw; in qla_drain_soft_lro()
2796 qla_free_soft_lro(qla_host_t *ha) in qla_free_soft_lro() argument
2800 qla_hw_t *hw = &ha->hw; in qla_free_soft_lro()
2818 ql_del_hw_if(qla_host_t *ha) in ql_del_hw_if() argument
2823 (void)qla_stop_nic_func(ha); in ql_del_hw_if()
2825 qla_del_rcv_cntxt(ha); in ql_del_hw_if()
2827 if(qla_del_xmt_cntxt(ha)) in ql_del_hw_if()
2830 if (ha->hw.flags.init_intr_cnxt) { in ql_del_hw_if()
2831 for (i = 0; i < ha->hw.num_sds_rings; ) { in ql_del_hw_if()
2832 if ((i + Q8_MAX_INTR_VECTORS) < ha->hw.num_sds_rings) in ql_del_hw_if()
2835 num_msix = ha->hw.num_sds_rings - i; in ql_del_hw_if()
2837 if (qla_config_intr_cntxt(ha, i, num_msix, 0)) in ql_del_hw_if()
2843 ha->hw.flags.init_intr_cnxt = 0; in ql_del_hw_if()
2847 if (ha->hw.enable_soft_lro) { in ql_del_hw_if()
2848 qla_drain_soft_lro(ha); in ql_del_hw_if()
2849 qla_free_soft_lro(ha); in ql_del_hw_if()
2856 qla_confirm_9kb_enable(qla_host_t *ha) in qla_confirm_9kb_enable() argument
2860 ha->hw.mbx_intr_mask_offset = READ_REG32(ha, Q8_MBOX_INT_MASK_MSIX); in qla_confirm_9kb_enable()
2863 WRITE_REG32(ha, Q8_MBOX_INT_ENABLE, BIT_2); in qla_confirm_9kb_enable()
2864 WRITE_REG32(ha, ha->hw.mbx_intr_mask_offset, 0x0); in qla_confirm_9kb_enable()
2867 qla_get_nic_partition(ha, &supports_9kb, NULL); in qla_confirm_9kb_enable()
2871 ha->hw.enable_9kb = 0; in qla_confirm_9kb_enable()
2883 ql_init_hw_if(qla_host_t *ha) in ql_init_hw_if() argument
2890 for (i = 0; i < ha->hw.num_sds_rings; i++) { in ql_init_hw_if()
2891 bzero(ha->hw.dma_buf.sds_ring[i].dma_b, in ql_init_hw_if()
2892 ha->hw.dma_buf.sds_ring[i].size); in ql_init_hw_if()
2895 for (i = 0; i < ha->hw.num_sds_rings; ) { in ql_init_hw_if()
2896 if ((i + Q8_MAX_INTR_VECTORS) < ha->hw.num_sds_rings) in ql_init_hw_if()
2899 num_msix = ha->hw.num_sds_rings - i; in ql_init_hw_if()
2901 if (qla_config_intr_cntxt(ha, i, num_msix, 1)) { in ql_init_hw_if()
2906 qla_config_intr_cntxt(ha, i, in ql_init_hw_if()
2917 ha->hw.flags.init_intr_cnxt = 1; in ql_init_hw_if()
2922 if (qla_init_rcv_cntxt(ha)) { in ql_init_hw_if()
2926 for (i = 0; i < ha->hw.num_rds_rings; i++) { in ql_init_hw_if()
2927 rdesc = &ha->hw.rds[i]; in ql_init_hw_if()
2931 QL_UPDATE_RDS_PRODUCER_INDEX(ha, rdesc->prod_std,\ in ql_init_hw_if()
2938 if (qla_init_xmt_cntxt(ha)) { in ql_init_hw_if()
2939 qla_del_rcv_cntxt(ha); in ql_init_hw_if()
2942 ha->hw.max_tx_segs = 0; in ql_init_hw_if()
2944 if (qla_config_mac_addr(ha, ha->hw.mac_addr, 1, 1)) in ql_init_hw_if()
2947 ha->hw.flags.unicast_mac = 1; in ql_init_hw_if()
2952 if (qla_config_mac_addr(ha, bcast_mac, 1, 1)) in ql_init_hw_if()
2955 ha->hw.flags.bcast_mac = 1; in ql_init_hw_if()
2960 if (qla_hw_add_all_mcast(ha)) in ql_init_hw_if()
2963 if (ql_set_max_mtu(ha, ha->max_frame_size, ha->hw.rcv_cntxt_id)) in ql_init_hw_if()
2966 if (qla_config_rss(ha, ha->hw.rcv_cntxt_id)) in ql_init_hw_if()
2969 if (qla_config_rss_ind_table(ha)) in ql_init_hw_if()
2972 if (qla_config_intr_coalesce(ha, ha->hw.rcv_cntxt_id, 0, 1)) in ql_init_hw_if()
2975 if (qla_link_event_req(ha, ha->hw.rcv_cntxt_id)) in ql_init_hw_if()
2978 if (if_getcapenable(ha->ifp) & IFCAP_LRO) { in ql_init_hw_if()
2979 if (ha->hw.enable_hw_lro) { in ql_init_hw_if()
2980 ha->hw.enable_soft_lro = 0; in ql_init_hw_if()
2982 if (qla_config_fw_lro(ha, ha->hw.rcv_cntxt_id)) in ql_init_hw_if()
2985 ha->hw.enable_soft_lro = 1; in ql_init_hw_if()
2987 if (qla_config_soft_lro(ha)) in ql_init_hw_if()
2992 if (qla_init_nic_func(ha)) in ql_init_hw_if()
2995 if (qla_query_fw_dcbx_caps(ha)) in ql_init_hw_if()
2998 for (i = 0; i < ha->hw.num_sds_rings; i++) in ql_init_hw_if()
2999 QL_ENABLE_INTERRUPTS(ha, i); in ql_init_hw_if()
3005 qla_map_sds_to_rds(qla_host_t *ha, uint32_t start_idx, uint32_t num_idx) in qla_map_sds_to_rds() argument
3007 device_t dev = ha->pci_dev; in qla_map_sds_to_rds()
3011 qla_hw_t *hw = &ha->hw; in qla_map_sds_to_rds()
3013 map_rings = (q80_rq_map_sds_to_rds_t *)ha->hw.mbox; in qla_map_sds_to_rds()
3028 if (qla_mbx_cmd(ha, (uint32_t *)map_rings, in qla_map_sds_to_rds()
3030 ha->hw.mbox, (sizeof(q80_rsp_add_rcv_rings_t) >> 2), 0)) { in qla_map_sds_to_rds()
3035 map_rings_rsp = (q80_rsp_map_sds_to_rds_t *)ha->hw.mbox; in qla_map_sds_to_rds()
3052 qla_init_rcv_cntxt(qla_host_t *ha) in qla_init_rcv_cntxt() argument
3058 qla_hw_t *hw = &ha->hw; in qla_init_rcv_cntxt()
3065 dev = ha->pci_dev; in qla_init_rcv_cntxt()
3089 rcntxt = (q80_rq_rcv_cntxt_t *)ha->hw.mbox; in qla_init_rcv_cntxt()
3102 if (ha->hw.enable_9kb) in qla_init_rcv_cntxt()
3107 if (ha->hw.num_rds_rings > 1) { in qla_init_rcv_cntxt()
3132 if (ha->hw.enable_9kb) in qla_init_rcv_cntxt()
3142 if (qla_mbx_cmd(ha, (uint32_t *)rcntxt, in qla_init_rcv_cntxt()
3144 ha->hw.mbox, (sizeof(q80_rsp_rcv_cntxt_t) >> 2), 0)) { in qla_init_rcv_cntxt()
3149 rcntxt_rsp = (q80_rsp_rcv_cntxt_t *)ha->hw.mbox; in qla_init_rcv_cntxt()
3168 ha->hw.flags.init_rx_cnxt = 1; in qla_init_rcv_cntxt()
3177 err = qla_add_rcv_rings(ha, i, max_idx); in qla_init_rcv_cntxt()
3192 err = qla_map_sds_to_rds(ha, i, max_idx); in qla_init_rcv_cntxt()
3204 qla_add_rcv_rings(qla_host_t *ha, uint32_t sds_idx, uint32_t nsds) in qla_add_rcv_rings() argument
3206 device_t dev = ha->pci_dev; in qla_add_rcv_rings()
3210 qla_hw_t *hw = &ha->hw; in qla_add_rcv_rings()
3212 add_rcv = (q80_rq_add_rcv_rings_t *)ha->hw.mbox; in qla_add_rcv_rings()
3242 if (ha->hw.enable_9kb) in qla_add_rcv_rings()
3252 if (qla_mbx_cmd(ha, (uint32_t *)add_rcv, in qla_add_rcv_rings()
3254 ha->hw.mbox, (sizeof(q80_rsp_add_rcv_rings_t) >> 2), 0)) { in qla_add_rcv_rings()
3259 add_rcv_rsp = (q80_rsp_add_rcv_rings_t *)ha->hw.mbox; in qla_add_rcv_rings()
3284 qla_del_rcv_cntxt(qla_host_t *ha) in qla_del_rcv_cntxt() argument
3286 device_t dev = ha->pci_dev; in qla_del_rcv_cntxt()
3292 if (!ha->hw.flags.init_rx_cnxt) in qla_del_rcv_cntxt()
3295 if (qla_hw_del_all_mcast(ha)) in qla_del_rcv_cntxt()
3298 if (ha->hw.flags.bcast_mac) { in qla_del_rcv_cntxt()
3302 if (qla_config_mac_addr(ha, bcast_mac, 0, 1)) in qla_del_rcv_cntxt()
3304 ha->hw.flags.bcast_mac = 0; in qla_del_rcv_cntxt()
3307 if (ha->hw.flags.unicast_mac) { in qla_del_rcv_cntxt()
3308 if (qla_config_mac_addr(ha, ha->hw.mac_addr, 0, 1)) in qla_del_rcv_cntxt()
3310 ha->hw.flags.unicast_mac = 0; in qla_del_rcv_cntxt()
3313 rcntxt = (q80_rcv_cntxt_destroy_t *)ha->hw.mbox; in qla_del_rcv_cntxt()
3320 rcntxt->cntxt_id = ha->hw.rcv_cntxt_id; in qla_del_rcv_cntxt()
3322 if (qla_mbx_cmd(ha, (uint32_t *)rcntxt, in qla_del_rcv_cntxt()
3324 ha->hw.mbox, (sizeof(q80_rcv_cntxt_destroy_rsp_t) >> 2), 0)) { in qla_del_rcv_cntxt()
3328 rcntxt_rsp = (q80_rcv_cntxt_destroy_rsp_t *)ha->hw.mbox; in qla_del_rcv_cntxt()
3336 ha->hw.flags.init_rx_cnxt = 0; in qla_del_rcv_cntxt()
3345 qla_init_xmt_cntxt_i(qla_host_t *ha, uint32_t txr_idx) in qla_init_xmt_cntxt_i() argument
3348 qla_hw_t *hw = &ha->hw; in qla_init_xmt_cntxt_i()
3357 dev = ha->pci_dev; in qla_init_xmt_cntxt_i()
3362 tcntxt = (q80_rq_tx_cntxt_t *)ha->hw.mbox; in qla_init_xmt_cntxt_i()
3376 if (txr_idx >= (ha->hw.num_tx_rings >> 1)) { in qla_init_xmt_cntxt_i()
3380 intr_idx = txr_idx % (ha->hw.num_tx_rings >> 1); in qla_init_xmt_cntxt_i()
3402 if (qla_mbx_cmd(ha, (uint32_t *)tcntxt, in qla_init_xmt_cntxt_i()
3404 ha->hw.mbox, in qla_init_xmt_cntxt_i()
3409 tcntxt_rsp = (q80_rsp_tx_cntxt_t *)ha->hw.mbox; in qla_init_xmt_cntxt_i()
3421 if (qla_config_intr_coalesce(ha, hw_tx_cntxt->tx_cntxt_id, 0, 0)) in qla_init_xmt_cntxt_i()
3432 qla_del_xmt_cntxt_i(qla_host_t *ha, uint32_t txr_idx) in qla_del_xmt_cntxt_i() argument
3434 device_t dev = ha->pci_dev; in qla_del_xmt_cntxt_i()
3439 tcntxt = (q80_tx_cntxt_destroy_t *)ha->hw.mbox; in qla_del_xmt_cntxt_i()
3446 tcntxt->cntxt_id = ha->hw.tx_cntxt[txr_idx].tx_cntxt_id; in qla_del_xmt_cntxt_i()
3448 if (qla_mbx_cmd(ha, (uint32_t *)tcntxt, in qla_del_xmt_cntxt_i()
3450 ha->hw.mbox, (sizeof (q80_tx_cntxt_destroy_rsp_t) >> 2), 0)) { in qla_del_xmt_cntxt_i()
3454 tcntxt_rsp = (q80_tx_cntxt_destroy_rsp_t *)ha->hw.mbox; in qla_del_xmt_cntxt_i()
3466 qla_del_xmt_cntxt(qla_host_t *ha) in qla_del_xmt_cntxt() argument
3471 if (!ha->hw.flags.init_tx_cnxt) in qla_del_xmt_cntxt()
3474 for (i = 0; i < ha->hw.num_tx_rings; i++) { in qla_del_xmt_cntxt()
3475 if ((ret = qla_del_xmt_cntxt_i(ha, i)) != 0) in qla_del_xmt_cntxt()
3478 ha->hw.flags.init_tx_cnxt = 0; in qla_del_xmt_cntxt()
3484 qla_init_xmt_cntxt(qla_host_t *ha) in qla_init_xmt_cntxt() argument
3488 for (i = 0; i < ha->hw.num_tx_rings; i++) { in qla_init_xmt_cntxt()
3489 if (qla_init_xmt_cntxt_i(ha, i) != 0) { in qla_init_xmt_cntxt()
3491 if (qla_del_xmt_cntxt_i(ha, j)) in qla_init_xmt_cntxt()
3497 ha->hw.flags.init_tx_cnxt = 1; in qla_init_xmt_cntxt()
3502 qla_hw_all_mcast(qla_host_t *ha, uint32_t add_mcast) in qla_hw_all_mcast() argument
3508 nmcast = ha->hw.nmcast; in qla_hw_all_mcast()
3510 QL_DPRINT2(ha, (ha->pci_dev, in qla_hw_all_mcast()
3513 mcast = ha->hw.mac_addr_arr; in qla_hw_all_mcast()
3517 if ((ha->hw.mcast[i].addr[0] != 0) || in qla_hw_all_mcast()
3518 (ha->hw.mcast[i].addr[1] != 0) || in qla_hw_all_mcast()
3519 (ha->hw.mcast[i].addr[2] != 0) || in qla_hw_all_mcast()
3520 (ha->hw.mcast[i].addr[3] != 0) || in qla_hw_all_mcast()
3521 (ha->hw.mcast[i].addr[4] != 0) || in qla_hw_all_mcast()
3522 (ha->hw.mcast[i].addr[5] != 0)) { in qla_hw_all_mcast()
3523 bcopy(ha->hw.mcast[i].addr, mcast, ETHER_ADDR_LEN); in qla_hw_all_mcast()
3527 device_printf(ha->pci_dev, in qla_hw_all_mcast()
3529 __func__, ha->hw.mcast[i].addr[0], in qla_hw_all_mcast()
3530 ha->hw.mcast[i].addr[1], ha->hw.mcast[i].addr[2], in qla_hw_all_mcast()
3531 ha->hw.mcast[i].addr[3], ha->hw.mcast[i].addr[4], in qla_hw_all_mcast()
3532 ha->hw.mcast[i].addr[5]); in qla_hw_all_mcast()
3535 if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr, in qla_hw_all_mcast()
3537 device_printf(ha->pci_dev, in qla_hw_all_mcast()
3543 mcast = ha->hw.mac_addr_arr; in qla_hw_all_mcast()
3553 if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr, add_mcast, in qla_hw_all_mcast()
3555 device_printf(ha->pci_dev, "%s: failed\n", __func__); in qla_hw_all_mcast()
3559 QL_DPRINT2(ha, (ha->pci_dev, in qla_hw_all_mcast()
3566 qla_hw_add_all_mcast(qla_host_t *ha) in qla_hw_add_all_mcast() argument
3570 ret = qla_hw_all_mcast(ha, 1); in qla_hw_add_all_mcast()
3576 qla_hw_del_all_mcast(qla_host_t *ha) in qla_hw_del_all_mcast() argument
3580 ret = qla_hw_all_mcast(ha, 0); in qla_hw_del_all_mcast()
3582 bzero(ha->hw.mcast, (sizeof (qla_mcast_t) * Q8_MAX_NUM_MULTICAST_ADDRS)); in qla_hw_del_all_mcast()
3583 ha->hw.nmcast = 0; in qla_hw_del_all_mcast()
3589 qla_hw_mac_addr_present(qla_host_t *ha, uint8_t *mta) in qla_hw_mac_addr_present() argument
3594 if (QL_MAC_CMP(ha->hw.mcast[i].addr, mta) == 0) in qla_hw_mac_addr_present()
3601 qla_hw_add_mcast(qla_host_t *ha, uint8_t *mta, uint32_t nmcast) in qla_hw_add_mcast() argument
3606 if ((ha->hw.mcast[i].addr[0] == 0) && in qla_hw_add_mcast()
3607 (ha->hw.mcast[i].addr[1] == 0) && in qla_hw_add_mcast()
3608 (ha->hw.mcast[i].addr[2] == 0) && in qla_hw_add_mcast()
3609 (ha->hw.mcast[i].addr[3] == 0) && in qla_hw_add_mcast()
3610 (ha->hw.mcast[i].addr[4] == 0) && in qla_hw_add_mcast()
3611 (ha->hw.mcast[i].addr[5] == 0)) { in qla_hw_add_mcast()
3612 bcopy(mta, ha->hw.mcast[i].addr, Q8_MAC_ADDR_LEN); in qla_hw_add_mcast()
3613 ha->hw.nmcast++; in qla_hw_add_mcast()
3626 qla_hw_del_mcast(qla_host_t *ha, uint8_t *mta, uint32_t nmcast) in qla_hw_del_mcast() argument
3631 if (QL_MAC_CMP(ha->hw.mcast[i].addr, mta) == 0) { in qla_hw_del_mcast()
3632 ha->hw.mcast[i].addr[0] = 0; in qla_hw_del_mcast()
3633 ha->hw.mcast[i].addr[1] = 0; in qla_hw_del_mcast()
3634 ha->hw.mcast[i].addr[2] = 0; in qla_hw_del_mcast()
3635 ha->hw.mcast[i].addr[3] = 0; in qla_hw_del_mcast()
3636 ha->hw.mcast[i].addr[4] = 0; in qla_hw_del_mcast()
3637 ha->hw.mcast[i].addr[5] = 0; in qla_hw_del_mcast()
3639 ha->hw.nmcast--; in qla_hw_del_mcast()
3657 ql_hw_set_multi(qla_host_t *ha, uint8_t *mcast_addr, uint32_t mcnt, in ql_hw_set_multi() argument
3666 mcast = ha->hw.mac_addr_arr; in ql_hw_set_multi()
3672 if (qla_hw_mac_addr_present(ha, mta) != 0) { in ql_hw_set_multi()
3678 if (qla_hw_mac_addr_present(ha, mta) == 0) { in ql_hw_set_multi()
3686 if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr, in ql_hw_set_multi()
3688 device_printf(ha->pci_dev, "%s: failed\n", in ql_hw_set_multi()
3694 qla_hw_add_mcast(ha, ha->hw.mac_addr_arr, in ql_hw_set_multi()
3697 qla_hw_del_mcast(ha, ha->hw.mac_addr_arr, in ql_hw_set_multi()
3702 mcast = ha->hw.mac_addr_arr; in ql_hw_set_multi()
3710 if (qla_config_mac_addr(ha, ha->hw.mac_addr_arr, add_mac, in ql_hw_set_multi()
3712 device_printf(ha->pci_dev, "%s: failed\n", __func__); in ql_hw_set_multi()
3716 qla_hw_add_mcast(ha, ha->hw.mac_addr_arr, count); in ql_hw_set_multi()
3718 qla_hw_del_mcast(ha, ha->hw.mac_addr_arr, count); in ql_hw_set_multi()
3730 ql_hw_tx_done_locked(qla_host_t *ha, uint32_t txr_idx) in ql_hw_tx_done_locked() argument
3733 qla_hw_t *hw = &ha->hw; in ql_hw_tx_done_locked()
3743 txb = &ha->tx_ring[txr_idx].tx_buf[hw_tx_cntxt->txr_comp]; in ql_hw_tx_done_locked()
3752 if_inc_counter(ha->ifp, IFCOUNTER_OPACKETS, 1); in ql_hw_tx_done_locked()
3754 bus_dmamap_sync(ha->tx_tag, txb->map, in ql_hw_tx_done_locked()
3756 bus_dmamap_unload(ha->tx_tag, txb->map); in ql_hw_tx_done_locked()
3766 device_printf(ha->pci_dev, "%s [%d]: txr_idx = %d txr_free = %d" in ql_hw_tx_done_locked()
3771 QL_ASSERT(ha, (hw_tx_cntxt->txr_free <= NUM_TX_DESCRIPTORS), \ in ql_hw_tx_done_locked()
3780 ql_update_link_state(qla_host_t *ha) in ql_update_link_state() argument
3785 prev_link_state = ha->hw.link_up; in ql_update_link_state()
3787 if (if_getdrvflags(ha->ifp) & IFF_DRV_RUNNING) { in ql_update_link_state()
3788 link_state = READ_REG32(ha, Q8_LINK_STATE); in ql_update_link_state()
3790 if (ha->pci_func == 0) { in ql_update_link_state()
3797 atomic_store_rel_8(&ha->hw.link_up, (uint8_t)link_state); in ql_update_link_state()
3799 if (prev_link_state != ha->hw.link_up) { in ql_update_link_state()
3800 if (ha->hw.link_up) { in ql_update_link_state()
3801 if_link_state_change(ha->ifp, LINK_STATE_UP); in ql_update_link_state()
3803 if_link_state_change(ha->ifp, LINK_STATE_DOWN); in ql_update_link_state()
3810 ql_hw_check_health(qla_host_t *ha) in ql_hw_check_health() argument
3814 ha->hw.health_count++; in ql_hw_check_health()
3816 if (ha->hw.health_count < 500) in ql_hw_check_health()
3819 ha->hw.health_count = 0; in ql_hw_check_health()
3821 val = READ_REG32(ha, Q8_ASIC_TEMPERATURE); in ql_hw_check_health()
3824 (QL_ERR_INJECT(ha, INJCT_TEMPERATURE_FAILURE))) { in ql_hw_check_health()
3825 device_printf(ha->pci_dev, "%s: Temperature Alert" in ql_hw_check_health()
3829 if (ha->hw.sp_log_stop_events & Q8_SP_LOG_STOP_TEMP_FAILURE) in ql_hw_check_health()
3830 ha->hw.sp_log_stop = -1; in ql_hw_check_health()
3832 QL_INITIATE_RECOVERY(ha); in ql_hw_check_health()
3836 val = READ_REG32(ha, Q8_FIRMWARE_HEARTBEAT); in ql_hw_check_health()
3838 if ((val != ha->hw.hbeat_value) && in ql_hw_check_health()
3839 (!(QL_ERR_INJECT(ha, INJCT_HEARTBEAT_FAILURE)))) { in ql_hw_check_health()
3840 ha->hw.hbeat_value = val; in ql_hw_check_health()
3841 ha->hw.hbeat_failure = 0; in ql_hw_check_health()
3845 ha->hw.hbeat_failure++; in ql_hw_check_health()
3847 if ((ha->dbg_level & 0x8000) && (ha->hw.hbeat_failure == 1)) in ql_hw_check_health()
3848 device_printf(ha->pci_dev, "%s: Heartbeat Failue 1[0x%08x]\n", in ql_hw_check_health()
3850 if (ha->hw.hbeat_failure < 2) /* we ignore the first failure */ in ql_hw_check_health()
3856 peg_halt_status1 = READ_REG32(ha, Q8_PEG_HALT_STATUS1); in ql_hw_check_health()
3857 peg_halt_status2 = READ_REG32(ha, Q8_PEG_HALT_STATUS2); in ql_hw_check_health()
3859 device_printf(ha->pci_dev, in ql_hw_check_health()
3867 if (ha->hw.sp_log_stop_events & Q8_SP_LOG_STOP_HBEAT_FAILURE) in ql_hw_check_health()
3868 ha->hw.sp_log_stop = -1; in ql_hw_check_health()
3870 QL_INITIATE_RECOVERY(ha); in ql_hw_check_health()
3876 qla_init_nic_func(qla_host_t *ha) in qla_init_nic_func() argument
3883 dev = ha->pci_dev; in qla_init_nic_func()
3885 init_nic = (q80_init_nic_func_t *)ha->hw.mbox; in qla_init_nic_func()
3897 if (qla_mbx_cmd(ha, (uint32_t *)init_nic, in qla_init_nic_func()
3899 ha->hw.mbox, (sizeof (q80_init_nic_func_rsp_t) >> 2), 0)) { in qla_init_nic_func()
3904 init_nic_rsp = (q80_init_nic_func_rsp_t *)ha->hw.mbox; in qla_init_nic_func()
3919 qla_stop_nic_func(qla_host_t *ha) in qla_stop_nic_func() argument
3926 dev = ha->pci_dev; in qla_stop_nic_func()
3928 stop_nic = (q80_stop_nic_func_t *)ha->hw.mbox; in qla_stop_nic_func()
3939 if (qla_mbx_cmd(ha, (uint32_t *)stop_nic, in qla_stop_nic_func()
3941 ha->hw.mbox, (sizeof (q80_stop_nic_func_rsp_t) >> 2), 0)) { in qla_stop_nic_func()
3946 stop_nic_rsp = (q80_stop_nic_func_rsp_t *)ha->hw.mbox; in qla_stop_nic_func()
3959 qla_query_fw_dcbx_caps(qla_host_t *ha) in qla_query_fw_dcbx_caps() argument
3966 dev = ha->pci_dev; in qla_query_fw_dcbx_caps()
3968 fw_dcbx = (q80_query_fw_dcbx_caps_t *)ha->hw.mbox; in qla_query_fw_dcbx_caps()
3975 ql_dump_buf8(ha, __func__, fw_dcbx, sizeof (q80_query_fw_dcbx_caps_t)); in qla_query_fw_dcbx_caps()
3976 if (qla_mbx_cmd(ha, (uint32_t *)fw_dcbx, in qla_query_fw_dcbx_caps()
3978 ha->hw.mbox, (sizeof (q80_query_fw_dcbx_caps_rsp_t) >> 2), 0)) { in qla_query_fw_dcbx_caps()
3983 fw_dcbx_rsp = (q80_query_fw_dcbx_caps_rsp_t *)ha->hw.mbox; in qla_query_fw_dcbx_caps()
3984 ql_dump_buf8(ha, __func__, fw_dcbx_rsp, in qla_query_fw_dcbx_caps()
3997 qla_idc_ack(qla_host_t *ha, uint32_t aen_mb1, uint32_t aen_mb2, in qla_idc_ack() argument
4006 dev = ha->pci_dev; in qla_idc_ack()
4008 idc_ack = (q80_idc_ack_t *)ha->hw.mbox; in qla_idc_ack()
4020 ha->hw.imd_compl= 0; in qla_idc_ack()
4022 if (qla_mbx_cmd(ha, (uint32_t *)idc_ack, in qla_idc_ack()
4024 ha->hw.mbox, (sizeof (q80_idc_ack_rsp_t) >> 2), 0)) { in qla_idc_ack()
4029 idc_ack_rsp = (q80_idc_ack_rsp_t *)ha->hw.mbox; in qla_idc_ack()
4038 while (count && !ha->hw.imd_compl) { in qla_idc_ack()
4052 qla_set_port_config(qla_host_t *ha, uint32_t cfg_bits) in qla_set_port_config() argument
4060 dev = ha->pci_dev; in qla_set_port_config()
4062 pcfg = (q80_set_port_cfg_t *)ha->hw.mbox; in qla_set_port_config()
4078 ha->hw.imd_compl= 0; in qla_set_port_config()
4080 if (qla_mbx_cmd(ha, (uint32_t *)pcfg, in qla_set_port_config()
4082 ha->hw.mbox, (sizeof (q80_set_port_cfg_rsp_t) >> 2), 0)) { in qla_set_port_config()
4087 pfg_rsp = (q80_set_port_cfg_rsp_t *)ha->hw.mbox; in qla_set_port_config()
4092 while (count && !ha->hw.imd_compl) { in qla_set_port_config()
4112 qla_get_minidump_tmplt_size(qla_host_t *ha, uint32_t *size) in qla_get_minidump_tmplt_size() argument
4115 device_t dev = ha->pci_dev; in qla_get_minidump_tmplt_size()
4129 md_size = (q80_config_md_templ_size_t *) ha->hw.mbox; in qla_get_minidump_tmplt_size()
4136 if (qla_mbx_cmd(ha, (uint32_t *) md_size, in qla_get_minidump_tmplt_size()
4137 (sizeof(q80_config_md_templ_size_t) >> 2), ha->hw.mbox, in qla_get_minidump_tmplt_size()
4144 md_size_rsp = (q80_config_md_templ_size_rsp_t *) ha->hw.mbox; in qla_get_minidump_tmplt_size()
4159 qla_get_port_config(qla_host_t *ha, uint32_t *cfg_bits) in qla_get_port_config() argument
4166 dev = ha->pci_dev; in qla_get_port_config()
4168 pcfg = (q80_get_port_cfg_t *)ha->hw.mbox; in qla_get_port_config()
4175 if (qla_mbx_cmd(ha, (uint32_t *)pcfg, in qla_get_port_config()
4177 ha->hw.mbox, (sizeof (q80_get_port_cfg_rsp_t) >> 2), 0)) { in qla_get_port_config()
4182 pcfg_rsp = (q80_get_port_cfg_rsp_t *)ha->hw.mbox; in qla_get_port_config()
4206 ql_iscsi_pdu(qla_host_t *ha, struct mbuf *mp) in ql_iscsi_pdu() argument
4281 qla_hw_async_event(qla_host_t *ha) in qla_hw_async_event() argument
4283 switch (ha->hw.aen_mb0) { in qla_hw_async_event()
4285 (void)qla_idc_ack(ha, ha->hw.aen_mb1, ha->hw.aen_mb2, in qla_hw_async_event()
4286 ha->hw.aen_mb3, ha->hw.aen_mb4); in qla_hw_async_event()
4299 ql_get_minidump_template(qla_host_t *ha) in ql_get_minidump_template() argument
4302 device_t dev = ha->pci_dev; in ql_get_minidump_template()
4306 md_templ = (q80_config_md_templ_cmd_t *) ha->hw.mbox; in ql_get_minidump_template()
4313 md_templ->buf_addr = ha->hw.dma_buf.minidump.dma_addr; in ql_get_minidump_template()
4314 md_templ->buff_size = ha->hw.dma_buf.minidump.size; in ql_get_minidump_template()
4316 if (qla_mbx_cmd(ha, (uint32_t *) md_templ, in ql_get_minidump_template()
4318 ha->hw.mbox, in ql_get_minidump_template()
4325 md_templ_rsp = (q80_config_md_templ_cmd_rsp_t *) ha->hw.mbox; in ql_get_minidump_template()
4343 static int ql_parse_template(qla_host_t *ha);
4345 static uint32_t ql_rdcrb(qla_host_t *ha,
4349 static uint32_t ql_pollrd(qla_host_t *ha,
4353 static uint32_t ql_pollrd_modify_write(qla_host_t *ha,
4357 static uint32_t ql_L2Cache(qla_host_t *ha,
4361 static uint32_t ql_L1Cache(qla_host_t *ha,
4365 static uint32_t ql_rdocm(qla_host_t *ha,
4369 static uint32_t ql_rdmem(qla_host_t *ha,
4373 static uint32_t ql_rdrom(qla_host_t *ha,
4377 static uint32_t ql_rdmux(qla_host_t *ha,
4381 static uint32_t ql_rdmux2(qla_host_t *ha,
4385 static uint32_t ql_rdqueue(qla_host_t *ha,
4389 static uint32_t ql_cntrl(qla_host_t *ha,
4394 ql_minidump_size(qla_host_t *ha) in ql_minidump_size() argument
4400 hdr = (ql_minidump_template_hdr_t *)ha->hw.dma_buf.minidump.dma_b; in ql_minidump_size()
4405 if (i & ha->hw.mdump_capture_mask) in ql_minidump_size()
4413 ql_free_minidump_buffer(qla_host_t *ha) in ql_free_minidump_buffer() argument
4415 if (ha->hw.mdump_buffer != NULL) { in ql_free_minidump_buffer()
4416 free(ha->hw.mdump_buffer, M_QLA83XXBUF); in ql_free_minidump_buffer()
4417 ha->hw.mdump_buffer = NULL; in ql_free_minidump_buffer()
4418 ha->hw.mdump_buffer_size = 0; in ql_free_minidump_buffer()
4424 ql_alloc_minidump_buffer(qla_host_t *ha) in ql_alloc_minidump_buffer() argument
4426 ha->hw.mdump_buffer_size = ql_minidump_size(ha); in ql_alloc_minidump_buffer()
4428 if (!ha->hw.mdump_buffer_size) in ql_alloc_minidump_buffer()
4431 ha->hw.mdump_buffer = malloc(ha->hw.mdump_buffer_size, M_QLA83XXBUF, in ql_alloc_minidump_buffer()
4434 if (ha->hw.mdump_buffer == NULL) in ql_alloc_minidump_buffer()
4441 ql_free_minidump_template_buffer(qla_host_t *ha) in ql_free_minidump_template_buffer() argument
4443 if (ha->hw.mdump_template != NULL) { in ql_free_minidump_template_buffer()
4444 free(ha->hw.mdump_template, M_QLA83XXBUF); in ql_free_minidump_template_buffer()
4445 ha->hw.mdump_template = NULL; in ql_free_minidump_template_buffer()
4446 ha->hw.mdump_template_size = 0; in ql_free_minidump_template_buffer()
4452 ql_alloc_minidump_template_buffer(qla_host_t *ha) in ql_alloc_minidump_template_buffer() argument
4454 ha->hw.mdump_template_size = ha->hw.dma_buf.minidump.size; in ql_alloc_minidump_template_buffer()
4456 ha->hw.mdump_template = malloc(ha->hw.mdump_template_size, in ql_alloc_minidump_template_buffer()
4459 if (ha->hw.mdump_template == NULL) in ql_alloc_minidump_template_buffer()
4466 ql_alloc_minidump_buffers(qla_host_t *ha) in ql_alloc_minidump_buffers() argument
4470 ret = ql_alloc_minidump_template_buffer(ha); in ql_alloc_minidump_buffers()
4475 ret = ql_alloc_minidump_buffer(ha); in ql_alloc_minidump_buffers()
4478 ql_free_minidump_template_buffer(ha); in ql_alloc_minidump_buffers()
4484 ql_validate_minidump_checksum(qla_host_t *ha) in ql_validate_minidump_checksum() argument
4490 count = ha->hw.dma_buf.minidump.size / sizeof (uint32_t); in ql_validate_minidump_checksum()
4491 template_buff = ha->hw.dma_buf.minidump.dma_b; in ql_validate_minidump_checksum()
4505 ql_minidump_init(qla_host_t *ha) in ql_minidump_init() argument
4509 device_t dev = ha->pci_dev; in ql_minidump_init()
4514 ret = qla_get_minidump_tmplt_size(ha, &template_size); in ql_minidump_init()
4526 ha->hw.dma_buf.minidump.alignment = 8; in ql_minidump_init()
4527 ha->hw.dma_buf.minidump.size = template_size; in ql_minidump_init()
4530 if (ql_alloc_dmabuf(ha, &ha->hw.dma_buf.minidump)) { in ql_minidump_init()
4535 ha->hw.dma_buf.flags.minidump = 1; in ql_minidump_init()
4540 ret = ql_get_minidump_template(ha); in ql_minidump_init()
4542 ha->hw.dma_buf.minidump.dma_b = ql83xx_minidump; in ql_minidump_init()
4547 ret = ql_validate_minidump_checksum(ha); in ql_minidump_init()
4550 ret = ql_alloc_minidump_buffers(ha); in ql_minidump_init()
4553 ha->hw.mdump_init = 1; in ql_minidump_init()
4568 ql_minidump_free(ha); in ql_minidump_init()
4574 ql_minidump_free(qla_host_t *ha) in ql_minidump_free() argument
4576 ha->hw.mdump_init = 0; in ql_minidump_free()
4577 if (ha->hw.dma_buf.flags.minidump) { in ql_minidump_free()
4578 ha->hw.dma_buf.flags.minidump = 0; in ql_minidump_free()
4579 ql_free_dmabuf(ha, &ha->hw.dma_buf.minidump); in ql_minidump_free()
4582 ql_free_minidump_template_buffer(ha); in ql_minidump_free()
4583 ql_free_minidump_buffer(ha); in ql_minidump_free()
4589 ql_minidump(qla_host_t *ha) in ql_minidump() argument
4591 if (!ha->hw.mdump_init) in ql_minidump()
4594 if (ha->hw.mdump_done) in ql_minidump()
4596 ha->hw.mdump_usec_ts = qla_get_usec_timestamp(); in ql_minidump()
4597 ha->hw.mdump_start_seq_index = ql_stop_sequence(ha); in ql_minidump()
4599 bzero(ha->hw.mdump_buffer, ha->hw.mdump_buffer_size); in ql_minidump()
4600 bzero(ha->hw.mdump_template, ha->hw.mdump_template_size); in ql_minidump()
4602 bcopy(ha->hw.dma_buf.minidump.dma_b, ha->hw.mdump_template, in ql_minidump()
4603 ha->hw.mdump_template_size); in ql_minidump()
4605 ql_parse_template(ha); in ql_minidump()
4607 ql_start_sequence(ha, ha->hw.mdump_start_seq_index); in ql_minidump()
4609 ha->hw.mdump_done = 1; in ql_minidump()
4628 ql_parse_template(qla_host_t *ha) in ql_parse_template() argument
4640 template_hdr = (ql_minidump_template_hdr_t *)ha->hw.mdump_template; in ql_parse_template()
4645 dump_buff = (char *) ha->hw.mdump_buffer; in ql_parse_template()
4653 template_hdr->ocm_window_array[ha->pci_func]; in ql_parse_template()
4654 template_hdr->saved_state_array[QL_PCIE_FUNC_INDX] = ha->pci_func; in ql_parse_template()
4656 capture_mask = ha->hw.mdump_capture_mask; in ql_parse_template()
4657 dump_size = ha->hw.mdump_buffer_size; in ql_parse_template()
4661 QL_DPRINT80(ha, (ha->pci_dev, in ql_parse_template()
4713 esize = ql_rdcrb(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4720 esize = ql_pollrd(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4727 esize = ql_pollrd_modify_write(ha, (void *)entry, in ql_parse_template()
4738 esize = ql_L2Cache(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4750 esize = ql_L1Cache(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4757 esize = ql_rdocm(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4764 esize = ql_rdmem(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4772 esize = ql_rdrom(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4779 esize = ql_rdmux(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4786 esize = ql_rdmux2(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4793 esize = ql_rdqueue(ha, (void *)entry, (void *)dbuff); in ql_parse_template()
4799 if ((rv = ql_cntrl(ha, template_hdr, (void *)entry))) { in ql_parse_template()
4813 device_printf(ha->pci_dev, in ql_parse_template()
4818 QL_DPRINT80(ha, (ha->pci_dev, "%s: Minidump num of entries = %d\n", in ql_parse_template()
4828 ql_rdcrb(qla_host_t *ha, ql_minidump_entry_rdcrb_t * crb_entry, in ql_rdcrb() argument
4840 ret = ql_rdwr_indreg32(ha, addr, &value, 1); in ql_rdcrb()
4861 ql_L2Cache(qla_host_t *ha, ql_minidump_entry_cache_t *cacheEntry, in ql_L2Cache() argument
4887 ret = ql_rdwr_indreg32(ha, tag_reg_addr, &tag_value, 0); in ql_L2Cache()
4893 ret = ql_rdwr_indreg32(ha, cntrl_addr, in ql_L2Cache()
4903 ret = ql_rdwr_indreg32(ha, cntrl_addr, &data, 1); in ql_L2Cache()
4916 ret = ql_rdwr_indreg32(ha, cntrl_addr, in ql_L2Cache()
4937 ret = ql_rdwr_indreg32(ha, addr, &read_value, 1); in ql_L2Cache()
4956 ql_L1Cache(qla_host_t *ha, in ql_L1Cache() argument
4981 ret = ql_rdwr_indreg32(ha, tag_reg_addr, &tag_value, 0); in ql_L1Cache()
4985 ret = ql_rdwr_indreg32(ha, cntrl_addr, &cntl_value_w, 0); in ql_L1Cache()
4991 ret = ql_rdwr_indreg32(ha, addr, &read_value, 1); in ql_L1Cache()
5010 ql_rdocm(qla_host_t *ha, in ql_rdocm() argument
5022 value = READ_REG32(ha, addr); in ql_rdocm()
5034 ql_rdmem(qla_host_t *ha, in ql_rdmem() argument
5049 ret = ql_rdwr_offchip_mem(ha, (addr & 0x0ffffffff), &val, 1); in ql_rdmem()
5069 ql_rdrom(qla_host_t *ha, in ql_rdrom() argument
5083 ret = ql_rd_flash32(ha, addr, &value); in ql_rdrom()
5099 ql_rdmux(qla_host_t *ha, in ql_rdmux() argument
5113 ret = ql_rdwr_indreg32(ha, select_addr, &sel_value, 0); in ql_rdmux()
5117 ret = ql_rdwr_indreg32(ha, read_addr, &read_value, 1); in ql_rdmux()
5131 ql_rdmux2(qla_host_t *ha, in ql_rdmux2() argument
5155 ret = ql_rdwr_indreg32(ha, select_addr_1, &select_value_1, 0); in ql_rdmux2()
5161 ret = ql_rdwr_indreg32(ha, select_addr_2, &temp_sel_val, 0); in ql_rdmux2()
5165 ret = ql_rdwr_indreg32(ha, read_addr, &read_value, 1); in ql_rdmux2()
5172 ret = ql_rdwr_indreg32(ha, select_addr_1, &select_value_2, 0); in ql_rdmux2()
5178 ret = ql_rdwr_indreg32(ha, select_addr_2, &temp_sel_val, 0); in ql_rdmux2()
5182 ret = ql_rdwr_indreg32(ha, read_addr, &read_value, 1); in ql_rdmux2()
5201 ql_rdqueue(qla_host_t *ha, in ql_rdqueue() argument
5217 ret = ql_rdwr_indreg32(ha, select_addr, &queue_id, 0); in ql_rdqueue()
5224 ret = ql_rdwr_indreg32(ha, read_addr, &read_value, 1); in ql_rdqueue()
5243 ql_cntrl(qla_host_t *ha, in ql_cntrl() argument
5258 ret = ql_rdwr_indreg32(ha, entry_addr, in ql_cntrl()
5267 ret = ql_rdwr_indreg32(ha, entry_addr, &read_value, 1); in ql_cntrl()
5271 ret = ql_rdwr_indreg32(ha, entry_addr, &read_value, 0); in ql_cntrl()
5279 ret = ql_rdwr_indreg32(ha, entry_addr, &read_value, 1); in ql_cntrl()
5291 ret = ql_rdwr_indreg32(ha, entry_addr, &read_value, 0); in ql_cntrl()
5297 ret = ql_rdwr_indreg32(ha, entry_addr, &read_value, 1); in ql_cntrl()
5303 ret = ql_rdwr_indreg32(ha, entry_addr, &read_value, 0); in ql_cntrl()
5315 ret = ql_rdwr_indreg32(ha, addr, &read_value, 1); in ql_cntrl()
5327 ret = ql_rdwr_indreg32(ha, addr, in ql_cntrl()
5357 ret = ql_rdwr_indreg32(ha, addr, &read_value, 1); in ql_cntrl()
5386 ret = ql_rdwr_indreg32(ha, addr, &read_value, 0); in ql_cntrl()
5427 ql_pollrd(qla_host_t *ha, ql_minidump_entry_pollrd_t *entry, in ql_pollrd() argument
5445 ret = ql_rdwr_indreg32(ha, select_addr, &select_value, 0); in ql_pollrd()
5454 ret = ql_rdwr_indreg32(ha, select_addr, &temp, 1); in ql_pollrd()
5465 device_printf(ha->pci_dev, in ql_pollrd()
5467 device_printf(ha->pci_dev, in ql_pollrd()
5473 ret = ql_rdwr_indreg32(ha, read_addr, &data, 1); in ql_pollrd()
5493 ql_pollrd_modify_write(qla_host_t *ha, in ql_pollrd_modify_write() argument
5511 ret = ql_rdwr_indreg32(ha, addr_1, &value_1, 0); in ql_pollrd_modify_write()
5519 ret = ql_rdwr_indreg32(ha, addr_1, &temp, 1); in ql_pollrd_modify_write()
5530 device_printf(ha->pci_dev, "%s Error in processing entry\n", in ql_pollrd_modify_write()
5533 ret = ql_rdwr_indreg32(ha, addr_2, &data, 1); in ql_pollrd_modify_write()
5539 ret = ql_rdwr_indreg32(ha, addr_2, &data, 0); in ql_pollrd_modify_write()
5543 ret = ql_rdwr_indreg32(ha, addr_1, &value_2, 0); in ql_pollrd_modify_write()
5552 ret = ql_rdwr_indreg32(ha, addr_1, &temp, 1); in ql_pollrd_modify_write()