Lines Matching refs:qdev
9 static u32 ql_read_other_func_reg(struct ql_adapter *qdev, in ql_read_other_func_reg() argument
18 | (qdev->alt_func << MPI_NIC_FUNCTION_SHIFT) in ql_read_other_func_reg()
20 status = ql_read_mpi_reg(qdev, register_to_read, ®_val); in ql_read_other_func_reg()
28 static int ql_write_other_func_reg(struct ql_adapter *qdev, in ql_write_other_func_reg() argument
36 | (qdev->alt_func << MPI_NIC_FUNCTION_SHIFT) in ql_write_other_func_reg()
38 status = ql_write_mpi_reg(qdev, register_to_read, reg_val); in ql_write_other_func_reg()
43 static int ql_wait_other_func_reg_rdy(struct ql_adapter *qdev, u32 reg, in ql_wait_other_func_reg_rdy() argument
50 temp = ql_read_other_func_reg(qdev, reg); in ql_wait_other_func_reg_rdy()
63 static int ql_read_other_func_serdes_reg(struct ql_adapter *qdev, u32 reg, in ql_read_other_func_serdes_reg() argument
69 status = ql_wait_other_func_reg_rdy(qdev, XG_SERDES_ADDR / 4, in ql_read_other_func_serdes_reg()
75 ql_write_other_func_reg(qdev, XG_SERDES_ADDR/4, reg | PROC_ADDR_R); in ql_read_other_func_serdes_reg()
78 status = ql_wait_other_func_reg_rdy(qdev, XG_SERDES_ADDR / 4, in ql_read_other_func_serdes_reg()
84 *data = ql_read_other_func_reg(qdev, (XG_SERDES_DATA / 4)); in ql_read_other_func_serdes_reg()
90 static int ql_read_serdes_reg(struct ql_adapter *qdev, u32 reg, u32 *data) in ql_read_serdes_reg() argument
95 status = ql_wait_reg_rdy(qdev, XG_SERDES_ADDR, XG_SERDES_ADDR_RDY, 0); in ql_read_serdes_reg()
100 ql_write32(qdev, XG_SERDES_ADDR, reg | PROC_ADDR_R); in ql_read_serdes_reg()
103 status = ql_wait_reg_rdy(qdev, XG_SERDES_ADDR, XG_SERDES_ADDR_RDY, 0); in ql_read_serdes_reg()
108 *data = ql_read32(qdev, XG_SERDES_DATA); in ql_read_serdes_reg()
113 static void ql_get_both_serdes(struct ql_adapter *qdev, u32 addr, in ql_get_both_serdes() argument
121 status = ql_read_serdes_reg(qdev, addr, direct_ptr); in ql_get_both_serdes()
129 qdev, addr, indirect_ptr); in ql_get_both_serdes()
135 static int ql_get_serdes_regs(struct ql_adapter *qdev, in ql_get_serdes_regs() argument
148 status = ql_read_other_func_serdes_reg(qdev, in ql_get_serdes_regs()
157 status = ql_read_serdes_reg(qdev, XG_SERDES_XAUI_HSS_PCS_START, &temp); in ql_get_serdes_regs()
170 status = ql_read_serdes_reg(qdev, XG_SERDES_ADDR_STS, &temp); in ql_get_serdes_regs()
177 if (qdev->func & 1) in ql_get_serdes_regs()
186 if (qdev->func & 1) in ql_get_serdes_regs()
194 if (qdev->func & 1) { in ql_get_serdes_regs()
205 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
209 if (qdev->func & 1) { in ql_get_serdes_regs()
222 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
226 if (qdev->func & 1) { in ql_get_serdes_regs()
235 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
239 if (qdev->func & 1) { in ql_get_serdes_regs()
250 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
254 if (qdev->func & 1) { in ql_get_serdes_regs()
267 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
271 if (qdev->func & 1) { in ql_get_serdes_regs()
282 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
286 if (qdev->func & 1) { in ql_get_serdes_regs()
298 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
303 if (qdev->func & 1) { in ql_get_serdes_regs()
315 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
320 static int ql_read_other_func_xgmac_reg(struct ql_adapter *qdev, u32 reg, in ql_read_other_func_xgmac_reg() argument
326 status = ql_wait_other_func_reg_rdy(qdev, XGMAC_ADDR / 4, in ql_read_other_func_xgmac_reg()
332 ql_write_other_func_reg(qdev, XGMAC_ADDR / 4, reg | XGMAC_ADDR_R); in ql_read_other_func_xgmac_reg()
335 status = ql_wait_other_func_reg_rdy(qdev, XGMAC_ADDR / 4, in ql_read_other_func_xgmac_reg()
341 *data = ql_read_other_func_reg(qdev, XGMAC_DATA / 4); in ql_read_other_func_xgmac_reg()
349 static int ql_get_xgmac_regs(struct ql_adapter *qdev, u32 *buf, in ql_get_xgmac_regs() argument
378 ql_read_other_func_xgmac_reg(qdev, i, buf); in ql_get_xgmac_regs()
380 status = ql_read_xgmac_reg(qdev, i, buf); in ql_get_xgmac_regs()
390 static int ql_get_ets_regs(struct ql_adapter *qdev, u32 *buf) in ql_get_ets_regs() argument
396 ql_write32(qdev, NIC_ETS, i << 29 | 0x08000000); in ql_get_ets_regs()
397 *buf = ql_read32(qdev, NIC_ETS); in ql_get_ets_regs()
401 ql_write32(qdev, CNA_ETS, i << 29 | 0x08000000); in ql_get_ets_regs()
402 *buf = ql_read32(qdev, CNA_ETS); in ql_get_ets_regs()
408 static void ql_get_intr_states(struct ql_adapter *qdev, u32 *buf) in ql_get_intr_states() argument
412 for (i = 0; i < qdev->rx_ring_count; i++, buf++) { in ql_get_intr_states()
413 ql_write32(qdev, INTR_EN, in ql_get_intr_states()
414 qdev->intr_context[i].intr_read_mask); in ql_get_intr_states()
415 *buf = ql_read32(qdev, INTR_EN); in ql_get_intr_states()
419 static int ql_get_cam_entries(struct ql_adapter *qdev, u32 *buf) in ql_get_cam_entries() argument
424 status = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK); in ql_get_cam_entries()
429 status = ql_get_mac_addr_reg(qdev, in ql_get_cam_entries()
432 netif_err(qdev, drv, qdev->ndev, in ql_get_cam_entries()
441 status = ql_get_mac_addr_reg(qdev, in ql_get_cam_entries()
444 netif_err(qdev, drv, qdev->ndev, in ql_get_cam_entries()
452 ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); in ql_get_cam_entries()
456 static int ql_get_routing_entries(struct ql_adapter *qdev, u32 *buf) in ql_get_routing_entries() argument
461 status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_entries()
466 status = ql_get_routing_reg(qdev, i, &value); in ql_get_routing_entries()
468 netif_err(qdev, drv, qdev->ndev, in ql_get_routing_entries()
476 ql_sem_unlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_entries()
481 static int ql_get_mpi_shadow_regs(struct ql_adapter *qdev, u32 *buf) in ql_get_mpi_shadow_regs() argument
487 status = ql_write_mpi_reg(qdev, RISC_124, in ql_get_mpi_shadow_regs()
491 status = ql_read_mpi_reg(qdev, RISC_127, buf); in ql_get_mpi_shadow_regs()
500 static int ql_get_mpi_regs(struct ql_adapter *qdev, u32 *buf, in ql_get_mpi_regs() argument
505 status = ql_read_mpi_reg(qdev, offset + i, buf); in ql_get_mpi_regs()
513 static unsigned int *ql_get_probe(struct ql_adapter *qdev, u32 clock, in ql_get_probe() argument
526 ql_write32(qdev, PRB_MX_ADDR, probe); in ql_get_probe()
527 lo_val = ql_read32(qdev, PRB_MX_DATA); in ql_get_probe()
533 ql_write32(qdev, PRB_MX_ADDR, probe); in ql_get_probe()
534 hi_val = ql_read32(qdev, PRB_MX_DATA); in ql_get_probe()
544 static int ql_get_probe_dump(struct ql_adapter *qdev, unsigned int *buf) in ql_get_probe_dump() argument
547 ql_write_mpi_reg(qdev, MPI_TEST_FUNC_PRB_CTL, MPI_TEST_FUNC_PRB_EN); in ql_get_probe_dump()
548 buf = ql_get_probe(qdev, PRB_MX_ADDR_SYS_CLOCK, in ql_get_probe_dump()
550 buf = ql_get_probe(qdev, PRB_MX_ADDR_PCI_CLOCK, in ql_get_probe_dump()
552 buf = ql_get_probe(qdev, PRB_MX_ADDR_XGM_CLOCK, in ql_get_probe_dump()
554 buf = ql_get_probe(qdev, PRB_MX_ADDR_FC_CLOCK, in ql_get_probe_dump()
561 static int ql_get_routing_index_registers(struct ql_adapter *qdev, u32 *buf) in ql_get_routing_index_registers() argument
569 status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_index_registers()
582 ql_write32(qdev, RT_IDX, val); in ql_get_routing_index_registers()
585 result_index = ql_read32(qdev, RT_IDX); in ql_get_routing_index_registers()
586 result_data = ql_read32(qdev, RT_DATA); in ql_get_routing_index_registers()
597 ql_sem_unlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_index_registers()
602 static void ql_get_mac_protocol_registers(struct ql_adapter *qdev, u32 *buf) in ql_get_mac_protocol_registers() argument
666 ql_write32(qdev, MAC_ADDR_IDX, val); in ql_get_mac_protocol_registers()
669 result_index = ql_read32(qdev, in ql_get_mac_protocol_registers()
672 result_data = ql_read32(qdev, MAC_ADDR_DATA); in ql_get_mac_protocol_registers()
682 static void ql_get_sem_registers(struct ql_adapter *qdev, u32 *buf) in ql_get_sem_registers() argument
691 status = ql_read_mpi_reg(qdev, reg, ®_val); in ql_get_sem_registers()
719 int ql_core_dump(struct ql_adapter *qdev, struct ql_mpi_coredump *mpi_coredump) in ql_core_dump() argument
725 netif_err(qdev, drv, qdev->ndev, "No memory allocated\n"); in ql_core_dump()
733 ql_sem_spinlock(qdev, SEM_PROC_REG_MASK); in ql_core_dump()
735 status = ql_pause_mpi_risc(qdev); in ql_core_dump()
737 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
775 if (qdev->func & 1) { in ql_core_dump()
779 ql_read32(qdev, i * sizeof(u32)); in ql_core_dump()
783 ql_read_other_func_reg(qdev, (i * sizeof(u32)) / 4); in ql_core_dump()
785 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac2[0], 0); in ql_core_dump()
786 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac1[0], 1); in ql_core_dump()
791 ql_read32(qdev, i * sizeof(u32)); in ql_core_dump()
794 ql_read_other_func_reg(qdev, (i * sizeof(u32)) / 4); in ql_core_dump()
796 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac1[0], 0); in ql_core_dump()
797 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac2[0], 1); in ql_core_dump()
897 status = ql_get_serdes_regs(qdev, mpi_coredump); in ql_core_dump()
899 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
913 status = ql_get_mpi_regs(qdev, &mpi_coredump->mpi_core_regs[0], in ql_core_dump()
918 status = ql_get_mpi_shadow_regs(qdev, in ql_core_dump()
929 status = ql_get_mpi_regs(qdev, &mpi_coredump->test_logic_regs[0], in ql_core_dump()
940 status = ql_get_mpi_regs(qdev, &mpi_coredump->rmii_regs[0], in ql_core_dump()
951 status = ql_get_mpi_regs(qdev, &mpi_coredump->fcmac1_regs[0], in ql_core_dump()
964 status = ql_get_mpi_regs(qdev, &mpi_coredump->fcmac2_regs[0], in ql_core_dump()
975 status = ql_get_mpi_regs(qdev, &mpi_coredump->fc1_mbx_regs[0], in ql_core_dump()
986 status = ql_get_mpi_regs(qdev, &mpi_coredump->ide_regs[0], in ql_core_dump()
997 status = ql_get_mpi_regs(qdev, &mpi_coredump->nic1_mbx_regs[0], in ql_core_dump()
1008 status = ql_get_mpi_regs(qdev, &mpi_coredump->smbus_regs[0], in ql_core_dump()
1019 status = ql_get_mpi_regs(qdev, &mpi_coredump->fc2_mbx_regs[0], in ql_core_dump()
1030 status = ql_get_mpi_regs(qdev, &mpi_coredump->nic2_mbx_regs[0], in ql_core_dump()
1041 status = ql_get_mpi_regs(qdev, &mpi_coredump->i2c_regs[0], in ql_core_dump()
1052 status = ql_get_mpi_regs(qdev, &mpi_coredump->memc_regs[0], in ql_core_dump()
1063 status = ql_get_mpi_regs(qdev, &mpi_coredump->pbus_regs[0], in ql_core_dump()
1074 status = ql_get_mpi_regs(qdev, &mpi_coredump->mde_regs[0], in ql_core_dump()
1084 mpi_coredump->misc_nic_info.rx_ring_count = qdev->rx_ring_count; in ql_core_dump()
1085 mpi_coredump->misc_nic_info.tx_ring_count = qdev->tx_ring_count; in ql_core_dump()
1086 mpi_coredump->misc_nic_info.intr_count = qdev->intr_count; in ql_core_dump()
1087 mpi_coredump->misc_nic_info.function = qdev->func; in ql_core_dump()
1096 ql_get_intr_states(qdev, &mpi_coredump->intr_states[0]); in ql_core_dump()
1103 status = ql_get_cam_entries(qdev, &mpi_coredump->cam_entries[0]); in ql_core_dump()
1112 status = ql_get_routing_entries(qdev, in ql_core_dump()
1123 status = ql_get_ets_regs(qdev, &mpi_coredump->ets[0]); in ql_core_dump()
1132 ql_get_probe_dump(qdev, &mpi_coredump->probe_dump[0]); in ql_core_dump()
1139 status = ql_get_routing_index_registers(qdev, in ql_core_dump()
1149 ql_get_mac_protocol_registers(qdev, &mpi_coredump->mac_prot_regs[0]); in ql_core_dump()
1157 ql_get_sem_registers(qdev, &mpi_coredump->sem_regs[0]); in ql_core_dump()
1160 ql_write_mpi_reg(qdev, MPI_TEST_FUNC_RST_STS, MPI_TEST_FUNC_RST_FRC); in ql_core_dump()
1163 status = ql_unpause_mpi_risc(qdev); in ql_core_dump()
1165 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1171 status = ql_hard_reset_mpi_risc(qdev); in ql_core_dump()
1173 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1183 status = ql_dump_risc_ram_area(qdev, &mpi_coredump->code_ram[0], in ql_core_dump()
1186 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1198 status = ql_dump_risc_ram_area(qdev, &mpi_coredump->memc_ram[0], in ql_core_dump()
1201 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1207 ql_sem_unlock(qdev, SEM_PROC_REG_MASK); /* does flush too */ in ql_core_dump()
1212 static void ql_get_core_dump(struct ql_adapter *qdev) in ql_get_core_dump() argument
1214 if (!ql_own_firmware(qdev)) { in ql_get_core_dump()
1215 netif_err(qdev, drv, qdev->ndev, "Don't own firmware!\n"); in ql_get_core_dump()
1219 if (!netif_running(qdev->ndev)) { in ql_get_core_dump()
1220 netif_err(qdev, ifup, qdev->ndev, in ql_get_core_dump()
1224 ql_queue_fw_error(qdev); in ql_get_core_dump()
1227 static void ql_gen_reg_dump(struct ql_adapter *qdev, in ql_gen_reg_dump() argument
1250 mpi_coredump->misc_nic_info.rx_ring_count = qdev->rx_ring_count; in ql_gen_reg_dump()
1251 mpi_coredump->misc_nic_info.tx_ring_count = qdev->tx_ring_count; in ql_gen_reg_dump()
1252 mpi_coredump->misc_nic_info.intr_count = qdev->intr_count; in ql_gen_reg_dump()
1253 mpi_coredump->misc_nic_info.function = qdev->func; in ql_gen_reg_dump()
1263 mpi_coredump->nic_regs[i] = ql_read32(qdev, i * sizeof(u32)); in ql_gen_reg_dump()
1272 ql_get_intr_states(qdev, &mpi_coredump->intr_states[0]); in ql_gen_reg_dump()
1279 status = ql_get_cam_entries(qdev, &mpi_coredump->cam_entries[0]); in ql_gen_reg_dump()
1288 status = ql_get_routing_entries(qdev, in ql_gen_reg_dump()
1299 status = ql_get_ets_regs(qdev, &mpi_coredump->ets[0]); in ql_gen_reg_dump()
1304 void ql_get_dump(struct ql_adapter *qdev, void *buff) in ql_get_dump() argument
1315 if (!test_bit(QL_FRC_COREDUMP, &qdev->flags)) { in ql_get_dump()
1316 if (!ql_core_dump(qdev, buff)) in ql_get_dump()
1317 ql_soft_reset_mpi_risc(qdev); in ql_get_dump()
1319 netif_err(qdev, drv, qdev->ndev, "coredump failed!\n"); in ql_get_dump()
1321 ql_gen_reg_dump(qdev, buff); in ql_get_dump()
1322 ql_get_core_dump(qdev); in ql_get_dump()
1329 struct ql_adapter *qdev = in ql_mpi_core_to_log() local
1335 tmp = (u32 *)qdev->mpi_coredump; in ql_mpi_core_to_log()
1336 netif_printk(qdev, drv, KERN_DEBUG, qdev->ndev, in ql_mpi_core_to_log()
1355 static void ql_dump_intr_states(struct ql_adapter *qdev) in ql_dump_intr_states() argument
1359 for (i = 0; i < qdev->intr_count; i++) { in ql_dump_intr_states()
1360 ql_write32(qdev, INTR_EN, qdev->intr_context[i].intr_read_mask); in ql_dump_intr_states()
1361 value = ql_read32(qdev, INTR_EN); in ql_dump_intr_states()
1363 qdev->ndev->name, i, in ql_dump_intr_states()
1368 #define DUMP_XGMAC(qdev, reg) \ argument
1371 ql_read_xgmac_reg(qdev, reg, &data); \
1372 pr_err("%s: %s = 0x%.08x\n", qdev->ndev->name, #reg, data); \
1375 void ql_dump_xgmac_control_regs(struct ql_adapter *qdev) in ql_dump_xgmac_control_regs() argument
1377 if (ql_sem_spinlock(qdev, qdev->xg_sem_mask)) { in ql_dump_xgmac_control_regs()
1381 DUMP_XGMAC(qdev, PAUSE_SRC_LO); in ql_dump_xgmac_control_regs()
1382 DUMP_XGMAC(qdev, PAUSE_SRC_HI); in ql_dump_xgmac_control_regs()
1383 DUMP_XGMAC(qdev, GLOBAL_CFG); in ql_dump_xgmac_control_regs()
1384 DUMP_XGMAC(qdev, TX_CFG); in ql_dump_xgmac_control_regs()
1385 DUMP_XGMAC(qdev, RX_CFG); in ql_dump_xgmac_control_regs()
1386 DUMP_XGMAC(qdev, FLOW_CTL); in ql_dump_xgmac_control_regs()
1387 DUMP_XGMAC(qdev, PAUSE_OPCODE); in ql_dump_xgmac_control_regs()
1388 DUMP_XGMAC(qdev, PAUSE_TIMER); in ql_dump_xgmac_control_regs()
1389 DUMP_XGMAC(qdev, PAUSE_FRM_DEST_LO); in ql_dump_xgmac_control_regs()
1390 DUMP_XGMAC(qdev, PAUSE_FRM_DEST_HI); in ql_dump_xgmac_control_regs()
1391 DUMP_XGMAC(qdev, MAC_TX_PARAMS); in ql_dump_xgmac_control_regs()
1392 DUMP_XGMAC(qdev, MAC_RX_PARAMS); in ql_dump_xgmac_control_regs()
1393 DUMP_XGMAC(qdev, MAC_SYS_INT); in ql_dump_xgmac_control_regs()
1394 DUMP_XGMAC(qdev, MAC_SYS_INT_MASK); in ql_dump_xgmac_control_regs()
1395 DUMP_XGMAC(qdev, MAC_MGMT_INT); in ql_dump_xgmac_control_regs()
1396 DUMP_XGMAC(qdev, MAC_MGMT_IN_MASK); in ql_dump_xgmac_control_regs()
1397 DUMP_XGMAC(qdev, EXT_ARB_MODE); in ql_dump_xgmac_control_regs()
1398 ql_sem_unlock(qdev, qdev->xg_sem_mask); in ql_dump_xgmac_control_regs()
1401 static void ql_dump_ets_regs(struct ql_adapter *qdev) in ql_dump_ets_regs() argument
1405 static void ql_dump_cam_entries(struct ql_adapter *qdev) in ql_dump_cam_entries() argument
1410 i = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK); in ql_dump_cam_entries()
1414 if (ql_get_mac_addr_reg(qdev, MAC_ADDR_TYPE_CAM_MAC, i, value)) { in ql_dump_cam_entries()
1421 qdev->ndev->name, i, value[1], value[0], in ql_dump_cam_entries()
1427 (qdev, MAC_ADDR_TYPE_MULTI_MAC, i, value)) { in ql_dump_cam_entries()
1434 qdev->ndev->name, i, value[1], value[0]); in ql_dump_cam_entries()
1437 ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); in ql_dump_cam_entries()
1440 void ql_dump_routing_entries(struct ql_adapter *qdev) in ql_dump_routing_entries() argument
1444 i = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); in ql_dump_routing_entries()
1449 if (ql_get_routing_reg(qdev, i, &value)) { in ql_dump_routing_entries()
1456 qdev->ndev->name, i, value); in ql_dump_routing_entries()
1459 ql_sem_unlock(qdev, SEM_RT_IDX_MASK); in ql_dump_routing_entries()
1462 #define DUMP_REG(qdev, reg) \ argument
1463 pr_err("%-32s= 0x%x\n", #reg, ql_read32(qdev, reg))
1465 void ql_dump_regs(struct ql_adapter *qdev) in ql_dump_regs() argument
1467 pr_err("reg dump for function #%d\n", qdev->func); in ql_dump_regs()
1468 DUMP_REG(qdev, SYS); in ql_dump_regs()
1469 DUMP_REG(qdev, RST_FO); in ql_dump_regs()
1470 DUMP_REG(qdev, FSC); in ql_dump_regs()
1471 DUMP_REG(qdev, CSR); in ql_dump_regs()
1472 DUMP_REG(qdev, ICB_RID); in ql_dump_regs()
1473 DUMP_REG(qdev, ICB_L); in ql_dump_regs()
1474 DUMP_REG(qdev, ICB_H); in ql_dump_regs()
1475 DUMP_REG(qdev, CFG); in ql_dump_regs()
1476 DUMP_REG(qdev, BIOS_ADDR); in ql_dump_regs()
1477 DUMP_REG(qdev, STS); in ql_dump_regs()
1478 DUMP_REG(qdev, INTR_EN); in ql_dump_regs()
1479 DUMP_REG(qdev, INTR_MASK); in ql_dump_regs()
1480 DUMP_REG(qdev, ISR1); in ql_dump_regs()
1481 DUMP_REG(qdev, ISR2); in ql_dump_regs()
1482 DUMP_REG(qdev, ISR3); in ql_dump_regs()
1483 DUMP_REG(qdev, ISR4); in ql_dump_regs()
1484 DUMP_REG(qdev, REV_ID); in ql_dump_regs()
1485 DUMP_REG(qdev, FRC_ECC_ERR); in ql_dump_regs()
1486 DUMP_REG(qdev, ERR_STS); in ql_dump_regs()
1487 DUMP_REG(qdev, RAM_DBG_ADDR); in ql_dump_regs()
1488 DUMP_REG(qdev, RAM_DBG_DATA); in ql_dump_regs()
1489 DUMP_REG(qdev, ECC_ERR_CNT); in ql_dump_regs()
1490 DUMP_REG(qdev, SEM); in ql_dump_regs()
1491 DUMP_REG(qdev, GPIO_1); in ql_dump_regs()
1492 DUMP_REG(qdev, GPIO_2); in ql_dump_regs()
1493 DUMP_REG(qdev, GPIO_3); in ql_dump_regs()
1494 DUMP_REG(qdev, XGMAC_ADDR); in ql_dump_regs()
1495 DUMP_REG(qdev, XGMAC_DATA); in ql_dump_regs()
1496 DUMP_REG(qdev, NIC_ETS); in ql_dump_regs()
1497 DUMP_REG(qdev, CNA_ETS); in ql_dump_regs()
1498 DUMP_REG(qdev, FLASH_ADDR); in ql_dump_regs()
1499 DUMP_REG(qdev, FLASH_DATA); in ql_dump_regs()
1500 DUMP_REG(qdev, CQ_STOP); in ql_dump_regs()
1501 DUMP_REG(qdev, PAGE_TBL_RID); in ql_dump_regs()
1502 DUMP_REG(qdev, WQ_PAGE_TBL_LO); in ql_dump_regs()
1503 DUMP_REG(qdev, WQ_PAGE_TBL_HI); in ql_dump_regs()
1504 DUMP_REG(qdev, CQ_PAGE_TBL_LO); in ql_dump_regs()
1505 DUMP_REG(qdev, CQ_PAGE_TBL_HI); in ql_dump_regs()
1506 DUMP_REG(qdev, COS_DFLT_CQ1); in ql_dump_regs()
1507 DUMP_REG(qdev, COS_DFLT_CQ2); in ql_dump_regs()
1508 DUMP_REG(qdev, SPLT_HDR); in ql_dump_regs()
1509 DUMP_REG(qdev, FC_PAUSE_THRES); in ql_dump_regs()
1510 DUMP_REG(qdev, NIC_PAUSE_THRES); in ql_dump_regs()
1511 DUMP_REG(qdev, FC_ETHERTYPE); in ql_dump_regs()
1512 DUMP_REG(qdev, FC_RCV_CFG); in ql_dump_regs()
1513 DUMP_REG(qdev, NIC_RCV_CFG); in ql_dump_regs()
1514 DUMP_REG(qdev, FC_COS_TAGS); in ql_dump_regs()
1515 DUMP_REG(qdev, NIC_COS_TAGS); in ql_dump_regs()
1516 DUMP_REG(qdev, MGMT_RCV_CFG); in ql_dump_regs()
1517 DUMP_REG(qdev, XG_SERDES_ADDR); in ql_dump_regs()
1518 DUMP_REG(qdev, XG_SERDES_DATA); in ql_dump_regs()
1519 DUMP_REG(qdev, PRB_MX_ADDR); in ql_dump_regs()
1520 DUMP_REG(qdev, PRB_MX_DATA); in ql_dump_regs()
1521 ql_dump_intr_states(qdev); in ql_dump_regs()
1522 ql_dump_xgmac_control_regs(qdev); in ql_dump_regs()
1523 ql_dump_ets_regs(qdev); in ql_dump_regs()
1524 ql_dump_cam_entries(qdev); in ql_dump_regs()
1525 ql_dump_routing_entries(qdev); in ql_dump_regs()
1531 #define DUMP_STAT(qdev, stat) \ argument
1532 pr_err("%s = %ld\n", #stat, (unsigned long)qdev->nic_stats.stat)
1534 void ql_dump_stat(struct ql_adapter *qdev) in ql_dump_stat() argument
1537 DUMP_STAT(qdev, tx_pkts); in ql_dump_stat()
1538 DUMP_STAT(qdev, tx_bytes); in ql_dump_stat()
1539 DUMP_STAT(qdev, tx_mcast_pkts); in ql_dump_stat()
1540 DUMP_STAT(qdev, tx_bcast_pkts); in ql_dump_stat()
1541 DUMP_STAT(qdev, tx_ucast_pkts); in ql_dump_stat()
1542 DUMP_STAT(qdev, tx_ctl_pkts); in ql_dump_stat()
1543 DUMP_STAT(qdev, tx_pause_pkts); in ql_dump_stat()
1544 DUMP_STAT(qdev, tx_64_pkt); in ql_dump_stat()
1545 DUMP_STAT(qdev, tx_65_to_127_pkt); in ql_dump_stat()
1546 DUMP_STAT(qdev, tx_128_to_255_pkt); in ql_dump_stat()
1547 DUMP_STAT(qdev, tx_256_511_pkt); in ql_dump_stat()
1548 DUMP_STAT(qdev, tx_512_to_1023_pkt); in ql_dump_stat()
1549 DUMP_STAT(qdev, tx_1024_to_1518_pkt); in ql_dump_stat()
1550 DUMP_STAT(qdev, tx_1519_to_max_pkt); in ql_dump_stat()
1551 DUMP_STAT(qdev, tx_undersize_pkt); in ql_dump_stat()
1552 DUMP_STAT(qdev, tx_oversize_pkt); in ql_dump_stat()
1553 DUMP_STAT(qdev, rx_bytes); in ql_dump_stat()
1554 DUMP_STAT(qdev, rx_bytes_ok); in ql_dump_stat()
1555 DUMP_STAT(qdev, rx_pkts); in ql_dump_stat()
1556 DUMP_STAT(qdev, rx_pkts_ok); in ql_dump_stat()
1557 DUMP_STAT(qdev, rx_bcast_pkts); in ql_dump_stat()
1558 DUMP_STAT(qdev, rx_mcast_pkts); in ql_dump_stat()
1559 DUMP_STAT(qdev, rx_ucast_pkts); in ql_dump_stat()
1560 DUMP_STAT(qdev, rx_undersize_pkts); in ql_dump_stat()
1561 DUMP_STAT(qdev, rx_oversize_pkts); in ql_dump_stat()
1562 DUMP_STAT(qdev, rx_jabber_pkts); in ql_dump_stat()
1563 DUMP_STAT(qdev, rx_undersize_fcerr_pkts); in ql_dump_stat()
1564 DUMP_STAT(qdev, rx_drop_events); in ql_dump_stat()
1565 DUMP_STAT(qdev, rx_fcerr_pkts); in ql_dump_stat()
1566 DUMP_STAT(qdev, rx_align_err); in ql_dump_stat()
1567 DUMP_STAT(qdev, rx_symbol_err); in ql_dump_stat()
1568 DUMP_STAT(qdev, rx_mac_err); in ql_dump_stat()
1569 DUMP_STAT(qdev, rx_ctl_pkts); in ql_dump_stat()
1570 DUMP_STAT(qdev, rx_pause_pkts); in ql_dump_stat()
1571 DUMP_STAT(qdev, rx_64_pkts); in ql_dump_stat()
1572 DUMP_STAT(qdev, rx_65_to_127_pkts); in ql_dump_stat()
1573 DUMP_STAT(qdev, rx_128_255_pkts); in ql_dump_stat()
1574 DUMP_STAT(qdev, rx_256_511_pkts); in ql_dump_stat()
1575 DUMP_STAT(qdev, rx_512_to_1023_pkts); in ql_dump_stat()
1576 DUMP_STAT(qdev, rx_1024_to_1518_pkts); in ql_dump_stat()
1577 DUMP_STAT(qdev, rx_1519_to_max_pkts); in ql_dump_stat()
1578 DUMP_STAT(qdev, rx_len_err_pkts); in ql_dump_stat()
1584 #define DUMP_QDEV_FIELD(qdev, type, field) \ argument
1585 pr_err("qdev->%-24s = " type "\n", #field, qdev->field)
1586 #define DUMP_QDEV_DMA_FIELD(qdev, field) \ argument
1587 pr_err("qdev->%-24s = %llx\n", #field, (unsigned long long)qdev->field)
1588 #define DUMP_QDEV_ARRAY(qdev, type, array, index, field) \ argument
1590 #array, index, #field, qdev->array[index].field);
1591 void ql_dump_qdev(struct ql_adapter *qdev) in ql_dump_qdev() argument
1594 DUMP_QDEV_FIELD(qdev, "%lx", flags); in ql_dump_qdev()
1595 DUMP_QDEV_FIELD(qdev, "%p", vlgrp); in ql_dump_qdev()
1596 DUMP_QDEV_FIELD(qdev, "%p", pdev); in ql_dump_qdev()
1597 DUMP_QDEV_FIELD(qdev, "%p", ndev); in ql_dump_qdev()
1598 DUMP_QDEV_FIELD(qdev, "%d", chip_rev_id); in ql_dump_qdev()
1599 DUMP_QDEV_FIELD(qdev, "%p", reg_base); in ql_dump_qdev()
1600 DUMP_QDEV_FIELD(qdev, "%p", doorbell_area); in ql_dump_qdev()
1601 DUMP_QDEV_FIELD(qdev, "%d", doorbell_area_size); in ql_dump_qdev()
1602 DUMP_QDEV_FIELD(qdev, "%x", msg_enable); in ql_dump_qdev()
1603 DUMP_QDEV_FIELD(qdev, "%p", rx_ring_shadow_reg_area); in ql_dump_qdev()
1604 DUMP_QDEV_DMA_FIELD(qdev, rx_ring_shadow_reg_dma); in ql_dump_qdev()
1605 DUMP_QDEV_FIELD(qdev, "%p", tx_ring_shadow_reg_area); in ql_dump_qdev()
1606 DUMP_QDEV_DMA_FIELD(qdev, tx_ring_shadow_reg_dma); in ql_dump_qdev()
1607 DUMP_QDEV_FIELD(qdev, "%d", intr_count); in ql_dump_qdev()
1608 if (qdev->msi_x_entry) in ql_dump_qdev()
1609 for (i = 0; i < qdev->intr_count; i++) { in ql_dump_qdev()
1610 DUMP_QDEV_ARRAY(qdev, "%d", msi_x_entry, i, vector); in ql_dump_qdev()
1611 DUMP_QDEV_ARRAY(qdev, "%d", msi_x_entry, i, entry); in ql_dump_qdev()
1613 for (i = 0; i < qdev->intr_count; i++) { in ql_dump_qdev()
1614 DUMP_QDEV_ARRAY(qdev, "%p", intr_context, i, qdev); in ql_dump_qdev()
1615 DUMP_QDEV_ARRAY(qdev, "%d", intr_context, i, intr); in ql_dump_qdev()
1616 DUMP_QDEV_ARRAY(qdev, "%d", intr_context, i, hooked); in ql_dump_qdev()
1617 DUMP_QDEV_ARRAY(qdev, "0x%08x", intr_context, i, intr_en_mask); in ql_dump_qdev()
1618 DUMP_QDEV_ARRAY(qdev, "0x%08x", intr_context, i, intr_dis_mask); in ql_dump_qdev()
1619 DUMP_QDEV_ARRAY(qdev, "0x%08x", intr_context, i, intr_read_mask); in ql_dump_qdev()
1621 DUMP_QDEV_FIELD(qdev, "%d", tx_ring_count); in ql_dump_qdev()
1622 DUMP_QDEV_FIELD(qdev, "%d", rx_ring_count); in ql_dump_qdev()
1623 DUMP_QDEV_FIELD(qdev, "%d", ring_mem_size); in ql_dump_qdev()
1624 DUMP_QDEV_FIELD(qdev, "%p", ring_mem); in ql_dump_qdev()
1625 DUMP_QDEV_FIELD(qdev, "%d", intr_count); in ql_dump_qdev()
1626 DUMP_QDEV_FIELD(qdev, "%p", tx_ring); in ql_dump_qdev()
1627 DUMP_QDEV_FIELD(qdev, "%d", rss_ring_count); in ql_dump_qdev()
1628 DUMP_QDEV_FIELD(qdev, "%p", rx_ring); in ql_dump_qdev()
1629 DUMP_QDEV_FIELD(qdev, "%d", default_rx_queue); in ql_dump_qdev()
1630 DUMP_QDEV_FIELD(qdev, "0x%08x", xg_sem_mask); in ql_dump_qdev()
1631 DUMP_QDEV_FIELD(qdev, "0x%08x", port_link_up); in ql_dump_qdev()
1632 DUMP_QDEV_FIELD(qdev, "0x%08x", port_init); in ql_dump_qdev()
1799 pr_err("rx_ring->qdev = %p\n", rx_ring->qdev); in ql_dump_rx_ring()
1802 void ql_dump_hw_cb(struct ql_adapter *qdev, int size, u32 bit, u16 q_id) in ql_dump_hw_cb() argument
1812 if (ql_write_cfg(qdev, ptr, size, bit, q_id)) { in ql_dump_hw_cb()
2009 void ql_dump_all(struct ql_adapter *qdev) in ql_dump_all() argument
2013 QL_DUMP_REGS(qdev); in ql_dump_all()
2014 QL_DUMP_QDEV(qdev); in ql_dump_all()
2015 for (i = 0; i < qdev->tx_ring_count; i++) { in ql_dump_all()
2016 QL_DUMP_TX_RING(&qdev->tx_ring[i]); in ql_dump_all()
2017 QL_DUMP_WQICB((struct wqicb *)&qdev->tx_ring[i]); in ql_dump_all()
2019 for (i = 0; i < qdev->rx_ring_count; i++) { in ql_dump_all()
2020 QL_DUMP_RX_RING(&qdev->rx_ring[i]); in ql_dump_all()
2021 QL_DUMP_CQICB((struct cqicb *)&qdev->rx_ring[i]); in ql_dump_all()