• Home
  • Raw
  • Download

Lines Matching refs:qdev

8 static u32 ql_read_other_func_reg(struct ql_adapter *qdev,  in ql_read_other_func_reg()  argument
17 | (qdev->alt_func << MPI_NIC_FUNCTION_SHIFT) in ql_read_other_func_reg()
19 status = ql_read_mpi_reg(qdev, register_to_read, &reg_val); in ql_read_other_func_reg()
27 static int ql_write_other_func_reg(struct ql_adapter *qdev, in ql_write_other_func_reg() argument
35 | (qdev->alt_func << MPI_NIC_FUNCTION_SHIFT) in ql_write_other_func_reg()
37 status = ql_write_mpi_reg(qdev, register_to_read, reg_val); in ql_write_other_func_reg()
42 static int ql_wait_other_func_reg_rdy(struct ql_adapter *qdev, u32 reg, in ql_wait_other_func_reg_rdy() argument
49 temp = ql_read_other_func_reg(qdev, reg); in ql_wait_other_func_reg_rdy()
62 static int ql_read_other_func_serdes_reg(struct ql_adapter *qdev, u32 reg, in ql_read_other_func_serdes_reg() argument
68 status = ql_wait_other_func_reg_rdy(qdev, XG_SERDES_ADDR / 4, in ql_read_other_func_serdes_reg()
74 ql_write_other_func_reg(qdev, XG_SERDES_ADDR/4, reg | PROC_ADDR_R); in ql_read_other_func_serdes_reg()
77 status = ql_wait_other_func_reg_rdy(qdev, XG_SERDES_ADDR / 4, in ql_read_other_func_serdes_reg()
83 *data = ql_read_other_func_reg(qdev, (XG_SERDES_DATA / 4)); in ql_read_other_func_serdes_reg()
89 static int ql_read_serdes_reg(struct ql_adapter *qdev, u32 reg, u32 *data) in ql_read_serdes_reg() argument
94 status = ql_wait_reg_rdy(qdev, XG_SERDES_ADDR, XG_SERDES_ADDR_RDY, 0); in ql_read_serdes_reg()
99 ql_write32(qdev, XG_SERDES_ADDR, reg | PROC_ADDR_R); in ql_read_serdes_reg()
102 status = ql_wait_reg_rdy(qdev, XG_SERDES_ADDR, XG_SERDES_ADDR_RDY, 0); in ql_read_serdes_reg()
107 *data = ql_read32(qdev, XG_SERDES_DATA); in ql_read_serdes_reg()
112 static void ql_get_both_serdes(struct ql_adapter *qdev, u32 addr, in ql_get_both_serdes() argument
120 status = ql_read_serdes_reg(qdev, addr, direct_ptr); in ql_get_both_serdes()
128 qdev, addr, indirect_ptr); in ql_get_both_serdes()
134 static int ql_get_serdes_regs(struct ql_adapter *qdev, in ql_get_serdes_regs() argument
147 if (qdev->func & 1) { in ql_get_serdes_regs()
149 status = ql_read_other_func_serdes_reg(qdev, in ql_get_serdes_regs()
157 status = ql_read_serdes_reg(qdev, in ql_get_serdes_regs()
167 status = ql_read_other_func_serdes_reg(qdev, in ql_get_serdes_regs()
175 status = ql_read_serdes_reg(qdev, in ql_get_serdes_regs()
188 status = ql_read_serdes_reg(qdev, XG_SERDES_ADDR_STS, &temp); in ql_get_serdes_regs()
195 if (qdev->func & 1) in ql_get_serdes_regs()
204 if (qdev->func & 1) in ql_get_serdes_regs()
212 if (qdev->func & 1) { in ql_get_serdes_regs()
223 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
227 if (qdev->func & 1) { in ql_get_serdes_regs()
240 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
244 if (qdev->func & 1) { in ql_get_serdes_regs()
253 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
257 if (qdev->func & 1) { in ql_get_serdes_regs()
268 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
272 if (qdev->func & 1) { in ql_get_serdes_regs()
285 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
289 if (qdev->func & 1) { in ql_get_serdes_regs()
300 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
304 if (qdev->func & 1) { in ql_get_serdes_regs()
316 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
321 if (qdev->func & 1) { in ql_get_serdes_regs()
333 ql_get_both_serdes(qdev, i, direct_ptr, indirect_ptr, in ql_get_serdes_regs()
338 static int ql_read_other_func_xgmac_reg(struct ql_adapter *qdev, u32 reg, in ql_read_other_func_xgmac_reg() argument
344 status = ql_wait_other_func_reg_rdy(qdev, XGMAC_ADDR / 4, in ql_read_other_func_xgmac_reg()
350 ql_write_other_func_reg(qdev, XGMAC_ADDR / 4, reg | XGMAC_ADDR_R); in ql_read_other_func_xgmac_reg()
353 status = ql_wait_other_func_reg_rdy(qdev, XGMAC_ADDR / 4, in ql_read_other_func_xgmac_reg()
359 *data = ql_read_other_func_reg(qdev, XGMAC_DATA / 4); in ql_read_other_func_xgmac_reg()
367 static int ql_get_xgmac_regs(struct ql_adapter *qdev, u32 *buf, in ql_get_xgmac_regs() argument
396 ql_read_other_func_xgmac_reg(qdev, i, buf); in ql_get_xgmac_regs()
398 status = ql_read_xgmac_reg(qdev, i, buf); in ql_get_xgmac_regs()
408 static int ql_get_ets_regs(struct ql_adapter *qdev, u32 *buf) in ql_get_ets_regs() argument
414 ql_write32(qdev, NIC_ETS, i << 29 | 0x08000000); in ql_get_ets_regs()
415 *buf = ql_read32(qdev, NIC_ETS); in ql_get_ets_regs()
419 ql_write32(qdev, CNA_ETS, i << 29 | 0x08000000); in ql_get_ets_regs()
420 *buf = ql_read32(qdev, CNA_ETS); in ql_get_ets_regs()
426 static void ql_get_intr_states(struct ql_adapter *qdev, u32 *buf) in ql_get_intr_states() argument
430 for (i = 0; i < qdev->rx_ring_count; i++, buf++) { in ql_get_intr_states()
431 ql_write32(qdev, INTR_EN, in ql_get_intr_states()
432 qdev->intr_context[i].intr_read_mask); in ql_get_intr_states()
433 *buf = ql_read32(qdev, INTR_EN); in ql_get_intr_states()
437 static int ql_get_cam_entries(struct ql_adapter *qdev, u32 *buf) in ql_get_cam_entries() argument
442 status = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK); in ql_get_cam_entries()
447 status = ql_get_mac_addr_reg(qdev, in ql_get_cam_entries()
450 netif_err(qdev, drv, qdev->ndev, in ql_get_cam_entries()
459 status = ql_get_mac_addr_reg(qdev, in ql_get_cam_entries()
462 netif_err(qdev, drv, qdev->ndev, in ql_get_cam_entries()
470 ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); in ql_get_cam_entries()
474 static int ql_get_routing_entries(struct ql_adapter *qdev, u32 *buf) in ql_get_routing_entries() argument
479 status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_entries()
484 status = ql_get_routing_reg(qdev, i, &value); in ql_get_routing_entries()
486 netif_err(qdev, drv, qdev->ndev, in ql_get_routing_entries()
494 ql_sem_unlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_entries()
499 static int ql_get_mpi_shadow_regs(struct ql_adapter *qdev, u32 *buf) in ql_get_mpi_shadow_regs() argument
505 status = ql_write_mpi_reg(qdev, RISC_124, in ql_get_mpi_shadow_regs()
509 status = ql_read_mpi_reg(qdev, RISC_127, buf); in ql_get_mpi_shadow_regs()
518 static int ql_get_mpi_regs(struct ql_adapter *qdev, u32 *buf, in ql_get_mpi_regs() argument
523 status = ql_read_mpi_reg(qdev, offset + i, buf); in ql_get_mpi_regs()
531 static unsigned int *ql_get_probe(struct ql_adapter *qdev, u32 clock, in ql_get_probe() argument
544 ql_write32(qdev, PRB_MX_ADDR, probe); in ql_get_probe()
545 lo_val = ql_read32(qdev, PRB_MX_DATA); in ql_get_probe()
551 ql_write32(qdev, PRB_MX_ADDR, probe); in ql_get_probe()
552 hi_val = ql_read32(qdev, PRB_MX_DATA); in ql_get_probe()
562 static int ql_get_probe_dump(struct ql_adapter *qdev, unsigned int *buf) in ql_get_probe_dump() argument
565 ql_write_mpi_reg(qdev, MPI_TEST_FUNC_PRB_CTL, MPI_TEST_FUNC_PRB_EN); in ql_get_probe_dump()
566 buf = ql_get_probe(qdev, PRB_MX_ADDR_SYS_CLOCK, in ql_get_probe_dump()
568 buf = ql_get_probe(qdev, PRB_MX_ADDR_PCI_CLOCK, in ql_get_probe_dump()
570 buf = ql_get_probe(qdev, PRB_MX_ADDR_XGM_CLOCK, in ql_get_probe_dump()
572 buf = ql_get_probe(qdev, PRB_MX_ADDR_FC_CLOCK, in ql_get_probe_dump()
579 static int ql_get_routing_index_registers(struct ql_adapter *qdev, u32 *buf) in ql_get_routing_index_registers() argument
587 status = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_index_registers()
600 ql_write32(qdev, RT_IDX, val); in ql_get_routing_index_registers()
603 result_index = ql_read32(qdev, RT_IDX); in ql_get_routing_index_registers()
604 result_data = ql_read32(qdev, RT_DATA); in ql_get_routing_index_registers()
615 ql_sem_unlock(qdev, SEM_RT_IDX_MASK); in ql_get_routing_index_registers()
620 static void ql_get_mac_protocol_registers(struct ql_adapter *qdev, u32 *buf) in ql_get_mac_protocol_registers() argument
684 ql_write32(qdev, MAC_ADDR_IDX, val); in ql_get_mac_protocol_registers()
687 result_index = ql_read32(qdev, in ql_get_mac_protocol_registers()
690 result_data = ql_read32(qdev, MAC_ADDR_DATA); in ql_get_mac_protocol_registers()
700 static void ql_get_sem_registers(struct ql_adapter *qdev, u32 *buf) in ql_get_sem_registers() argument
709 status = ql_read_mpi_reg(qdev, reg, &reg_val); in ql_get_sem_registers()
737 int ql_core_dump(struct ql_adapter *qdev, struct ql_mpi_coredump *mpi_coredump) in ql_core_dump() argument
743 netif_err(qdev, drv, qdev->ndev, "No memory allocated\n"); in ql_core_dump()
751 ql_sem_spinlock(qdev, SEM_PROC_REG_MASK); in ql_core_dump()
753 status = ql_pause_mpi_risc(qdev); in ql_core_dump()
755 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
793 if (qdev->func & 1) { in ql_core_dump()
797 ql_read32(qdev, i * sizeof(u32)); in ql_core_dump()
801 ql_read_other_func_reg(qdev, (i * sizeof(u32)) / 4); in ql_core_dump()
803 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac2[0], 0); in ql_core_dump()
804 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac1[0], 1); in ql_core_dump()
809 ql_read32(qdev, i * sizeof(u32)); in ql_core_dump()
812 ql_read_other_func_reg(qdev, (i * sizeof(u32)) / 4); in ql_core_dump()
814 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac1[0], 0); in ql_core_dump()
815 ql_get_xgmac_regs(qdev, &mpi_coredump->xgmac2[0], 1); in ql_core_dump()
915 status = ql_get_serdes_regs(qdev, mpi_coredump); in ql_core_dump()
917 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
931 status = ql_get_mpi_regs(qdev, &mpi_coredump->mpi_core_regs[0], in ql_core_dump()
936 status = ql_get_mpi_shadow_regs(qdev, in ql_core_dump()
947 status = ql_get_mpi_regs(qdev, &mpi_coredump->test_logic_regs[0], in ql_core_dump()
958 status = ql_get_mpi_regs(qdev, &mpi_coredump->rmii_regs[0], in ql_core_dump()
969 status = ql_get_mpi_regs(qdev, &mpi_coredump->fcmac1_regs[0], in ql_core_dump()
982 status = ql_get_mpi_regs(qdev, &mpi_coredump->fcmac2_regs[0], in ql_core_dump()
993 status = ql_get_mpi_regs(qdev, &mpi_coredump->fc1_mbx_regs[0], in ql_core_dump()
1004 status = ql_get_mpi_regs(qdev, &mpi_coredump->ide_regs[0], in ql_core_dump()
1015 status = ql_get_mpi_regs(qdev, &mpi_coredump->nic1_mbx_regs[0], in ql_core_dump()
1026 status = ql_get_mpi_regs(qdev, &mpi_coredump->smbus_regs[0], in ql_core_dump()
1037 status = ql_get_mpi_regs(qdev, &mpi_coredump->fc2_mbx_regs[0], in ql_core_dump()
1048 status = ql_get_mpi_regs(qdev, &mpi_coredump->nic2_mbx_regs[0], in ql_core_dump()
1059 status = ql_get_mpi_regs(qdev, &mpi_coredump->i2c_regs[0], in ql_core_dump()
1070 status = ql_get_mpi_regs(qdev, &mpi_coredump->memc_regs[0], in ql_core_dump()
1081 status = ql_get_mpi_regs(qdev, &mpi_coredump->pbus_regs[0], in ql_core_dump()
1092 status = ql_get_mpi_regs(qdev, &mpi_coredump->mde_regs[0], in ql_core_dump()
1102 mpi_coredump->misc_nic_info.rx_ring_count = qdev->rx_ring_count; in ql_core_dump()
1103 mpi_coredump->misc_nic_info.tx_ring_count = qdev->tx_ring_count; in ql_core_dump()
1104 mpi_coredump->misc_nic_info.intr_count = qdev->intr_count; in ql_core_dump()
1105 mpi_coredump->misc_nic_info.function = qdev->func; in ql_core_dump()
1114 ql_get_intr_states(qdev, &mpi_coredump->intr_states[0]); in ql_core_dump()
1121 status = ql_get_cam_entries(qdev, &mpi_coredump->cam_entries[0]); in ql_core_dump()
1130 status = ql_get_routing_entries(qdev, in ql_core_dump()
1141 status = ql_get_ets_regs(qdev, &mpi_coredump->ets[0]); in ql_core_dump()
1150 ql_get_probe_dump(qdev, &mpi_coredump->probe_dump[0]); in ql_core_dump()
1157 status = ql_get_routing_index_registers(qdev, in ql_core_dump()
1167 ql_get_mac_protocol_registers(qdev, &mpi_coredump->mac_prot_regs[0]); in ql_core_dump()
1175 ql_get_sem_registers(qdev, &mpi_coredump->sem_regs[0]); in ql_core_dump()
1178 ql_write_mpi_reg(qdev, MPI_TEST_FUNC_RST_STS, MPI_TEST_FUNC_RST_FRC); in ql_core_dump()
1181 status = ql_unpause_mpi_risc(qdev); in ql_core_dump()
1183 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1189 status = ql_hard_reset_mpi_risc(qdev); in ql_core_dump()
1191 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1201 status = ql_dump_risc_ram_area(qdev, &mpi_coredump->code_ram[0], in ql_core_dump()
1204 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1216 status = ql_dump_risc_ram_area(qdev, &mpi_coredump->memc_ram[0], in ql_core_dump()
1219 netif_err(qdev, drv, qdev->ndev, in ql_core_dump()
1225 ql_sem_unlock(qdev, SEM_PROC_REG_MASK); /* does flush too */ in ql_core_dump()
1230 static void ql_get_core_dump(struct ql_adapter *qdev) in ql_get_core_dump() argument
1232 if (!ql_own_firmware(qdev)) { in ql_get_core_dump()
1233 netif_err(qdev, drv, qdev->ndev, "Don't own firmware!\n"); in ql_get_core_dump()
1237 if (!netif_running(qdev->ndev)) { in ql_get_core_dump()
1238 netif_err(qdev, ifup, qdev->ndev, in ql_get_core_dump()
1242 ql_queue_fw_error(qdev); in ql_get_core_dump()
1245 static void ql_gen_reg_dump(struct ql_adapter *qdev, in ql_gen_reg_dump() argument
1268 mpi_coredump->misc_nic_info.rx_ring_count = qdev->rx_ring_count; in ql_gen_reg_dump()
1269 mpi_coredump->misc_nic_info.tx_ring_count = qdev->tx_ring_count; in ql_gen_reg_dump()
1270 mpi_coredump->misc_nic_info.intr_count = qdev->intr_count; in ql_gen_reg_dump()
1271 mpi_coredump->misc_nic_info.function = qdev->func; in ql_gen_reg_dump()
1281 mpi_coredump->nic_regs[i] = ql_read32(qdev, i * sizeof(u32)); in ql_gen_reg_dump()
1290 ql_get_intr_states(qdev, &mpi_coredump->intr_states[0]); in ql_gen_reg_dump()
1297 status = ql_get_cam_entries(qdev, &mpi_coredump->cam_entries[0]); in ql_gen_reg_dump()
1306 status = ql_get_routing_entries(qdev, in ql_gen_reg_dump()
1317 status = ql_get_ets_regs(qdev, &mpi_coredump->ets[0]); in ql_gen_reg_dump()
1322 void ql_get_dump(struct ql_adapter *qdev, void *buff) in ql_get_dump() argument
1333 if (!test_bit(QL_FRC_COREDUMP, &qdev->flags)) { in ql_get_dump()
1334 if (!ql_core_dump(qdev, buff)) in ql_get_dump()
1335 ql_soft_reset_mpi_risc(qdev); in ql_get_dump()
1337 netif_err(qdev, drv, qdev->ndev, "coredump failed!\n"); in ql_get_dump()
1339 ql_gen_reg_dump(qdev, buff); in ql_get_dump()
1340 ql_get_core_dump(qdev); in ql_get_dump()
1347 struct ql_adapter *qdev = in ql_mpi_core_to_log() local
1353 tmp = (u32 *)qdev->mpi_coredump; in ql_mpi_core_to_log()
1354 netif_printk(qdev, drv, KERN_DEBUG, qdev->ndev, in ql_mpi_core_to_log()
1373 static void ql_dump_intr_states(struct ql_adapter *qdev) in ql_dump_intr_states() argument
1377 for (i = 0; i < qdev->intr_count; i++) { in ql_dump_intr_states()
1378 ql_write32(qdev, INTR_EN, qdev->intr_context[i].intr_read_mask); in ql_dump_intr_states()
1379 value = ql_read32(qdev, INTR_EN); in ql_dump_intr_states()
1381 qdev->ndev->name, i, in ql_dump_intr_states()
1386 #define DUMP_XGMAC(qdev, reg) \ argument
1389 ql_read_xgmac_reg(qdev, reg, &data); \
1390 pr_err("%s: %s = 0x%.08x\n", qdev->ndev->name, #reg, data); \
1393 void ql_dump_xgmac_control_regs(struct ql_adapter *qdev) in ql_dump_xgmac_control_regs() argument
1395 if (ql_sem_spinlock(qdev, qdev->xg_sem_mask)) { in ql_dump_xgmac_control_regs()
1399 DUMP_XGMAC(qdev, PAUSE_SRC_LO); in ql_dump_xgmac_control_regs()
1400 DUMP_XGMAC(qdev, PAUSE_SRC_HI); in ql_dump_xgmac_control_regs()
1401 DUMP_XGMAC(qdev, GLOBAL_CFG); in ql_dump_xgmac_control_regs()
1402 DUMP_XGMAC(qdev, TX_CFG); in ql_dump_xgmac_control_regs()
1403 DUMP_XGMAC(qdev, RX_CFG); in ql_dump_xgmac_control_regs()
1404 DUMP_XGMAC(qdev, FLOW_CTL); in ql_dump_xgmac_control_regs()
1405 DUMP_XGMAC(qdev, PAUSE_OPCODE); in ql_dump_xgmac_control_regs()
1406 DUMP_XGMAC(qdev, PAUSE_TIMER); in ql_dump_xgmac_control_regs()
1407 DUMP_XGMAC(qdev, PAUSE_FRM_DEST_LO); in ql_dump_xgmac_control_regs()
1408 DUMP_XGMAC(qdev, PAUSE_FRM_DEST_HI); in ql_dump_xgmac_control_regs()
1409 DUMP_XGMAC(qdev, MAC_TX_PARAMS); in ql_dump_xgmac_control_regs()
1410 DUMP_XGMAC(qdev, MAC_RX_PARAMS); in ql_dump_xgmac_control_regs()
1411 DUMP_XGMAC(qdev, MAC_SYS_INT); in ql_dump_xgmac_control_regs()
1412 DUMP_XGMAC(qdev, MAC_SYS_INT_MASK); in ql_dump_xgmac_control_regs()
1413 DUMP_XGMAC(qdev, MAC_MGMT_INT); in ql_dump_xgmac_control_regs()
1414 DUMP_XGMAC(qdev, MAC_MGMT_IN_MASK); in ql_dump_xgmac_control_regs()
1415 DUMP_XGMAC(qdev, EXT_ARB_MODE); in ql_dump_xgmac_control_regs()
1416 ql_sem_unlock(qdev, qdev->xg_sem_mask); in ql_dump_xgmac_control_regs()
1419 static void ql_dump_ets_regs(struct ql_adapter *qdev) in ql_dump_ets_regs() argument
1423 static void ql_dump_cam_entries(struct ql_adapter *qdev) in ql_dump_cam_entries() argument
1428 i = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK); in ql_dump_cam_entries()
1432 if (ql_get_mac_addr_reg(qdev, MAC_ADDR_TYPE_CAM_MAC, i, value)) { in ql_dump_cam_entries()
1439 qdev->ndev->name, i, value[1], value[0], in ql_dump_cam_entries()
1445 (qdev, MAC_ADDR_TYPE_MULTI_MAC, i, value)) { in ql_dump_cam_entries()
1452 qdev->ndev->name, i, value[1], value[0]); in ql_dump_cam_entries()
1455 ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); in ql_dump_cam_entries()
1458 void ql_dump_routing_entries(struct ql_adapter *qdev) in ql_dump_routing_entries() argument
1462 i = ql_sem_spinlock(qdev, SEM_RT_IDX_MASK); in ql_dump_routing_entries()
1467 if (ql_get_routing_reg(qdev, i, &value)) { in ql_dump_routing_entries()
1474 qdev->ndev->name, i, value); in ql_dump_routing_entries()
1477 ql_sem_unlock(qdev, SEM_RT_IDX_MASK); in ql_dump_routing_entries()
1480 #define DUMP_REG(qdev, reg) \ argument
1481 pr_err("%-32s= 0x%x\n", #reg, ql_read32(qdev, reg))
1483 void ql_dump_regs(struct ql_adapter *qdev) in ql_dump_regs() argument
1485 pr_err("reg dump for function #%d\n", qdev->func); in ql_dump_regs()
1486 DUMP_REG(qdev, SYS); in ql_dump_regs()
1487 DUMP_REG(qdev, RST_FO); in ql_dump_regs()
1488 DUMP_REG(qdev, FSC); in ql_dump_regs()
1489 DUMP_REG(qdev, CSR); in ql_dump_regs()
1490 DUMP_REG(qdev, ICB_RID); in ql_dump_regs()
1491 DUMP_REG(qdev, ICB_L); in ql_dump_regs()
1492 DUMP_REG(qdev, ICB_H); in ql_dump_regs()
1493 DUMP_REG(qdev, CFG); in ql_dump_regs()
1494 DUMP_REG(qdev, BIOS_ADDR); in ql_dump_regs()
1495 DUMP_REG(qdev, STS); in ql_dump_regs()
1496 DUMP_REG(qdev, INTR_EN); in ql_dump_regs()
1497 DUMP_REG(qdev, INTR_MASK); in ql_dump_regs()
1498 DUMP_REG(qdev, ISR1); in ql_dump_regs()
1499 DUMP_REG(qdev, ISR2); in ql_dump_regs()
1500 DUMP_REG(qdev, ISR3); in ql_dump_regs()
1501 DUMP_REG(qdev, ISR4); in ql_dump_regs()
1502 DUMP_REG(qdev, REV_ID); in ql_dump_regs()
1503 DUMP_REG(qdev, FRC_ECC_ERR); in ql_dump_regs()
1504 DUMP_REG(qdev, ERR_STS); in ql_dump_regs()
1505 DUMP_REG(qdev, RAM_DBG_ADDR); in ql_dump_regs()
1506 DUMP_REG(qdev, RAM_DBG_DATA); in ql_dump_regs()
1507 DUMP_REG(qdev, ECC_ERR_CNT); in ql_dump_regs()
1508 DUMP_REG(qdev, SEM); in ql_dump_regs()
1509 DUMP_REG(qdev, GPIO_1); in ql_dump_regs()
1510 DUMP_REG(qdev, GPIO_2); in ql_dump_regs()
1511 DUMP_REG(qdev, GPIO_3); in ql_dump_regs()
1512 DUMP_REG(qdev, XGMAC_ADDR); in ql_dump_regs()
1513 DUMP_REG(qdev, XGMAC_DATA); in ql_dump_regs()
1514 DUMP_REG(qdev, NIC_ETS); in ql_dump_regs()
1515 DUMP_REG(qdev, CNA_ETS); in ql_dump_regs()
1516 DUMP_REG(qdev, FLASH_ADDR); in ql_dump_regs()
1517 DUMP_REG(qdev, FLASH_DATA); in ql_dump_regs()
1518 DUMP_REG(qdev, CQ_STOP); in ql_dump_regs()
1519 DUMP_REG(qdev, PAGE_TBL_RID); in ql_dump_regs()
1520 DUMP_REG(qdev, WQ_PAGE_TBL_LO); in ql_dump_regs()
1521 DUMP_REG(qdev, WQ_PAGE_TBL_HI); in ql_dump_regs()
1522 DUMP_REG(qdev, CQ_PAGE_TBL_LO); in ql_dump_regs()
1523 DUMP_REG(qdev, CQ_PAGE_TBL_HI); in ql_dump_regs()
1524 DUMP_REG(qdev, COS_DFLT_CQ1); in ql_dump_regs()
1525 DUMP_REG(qdev, COS_DFLT_CQ2); in ql_dump_regs()
1526 DUMP_REG(qdev, SPLT_HDR); in ql_dump_regs()
1527 DUMP_REG(qdev, FC_PAUSE_THRES); in ql_dump_regs()
1528 DUMP_REG(qdev, NIC_PAUSE_THRES); in ql_dump_regs()
1529 DUMP_REG(qdev, FC_ETHERTYPE); in ql_dump_regs()
1530 DUMP_REG(qdev, FC_RCV_CFG); in ql_dump_regs()
1531 DUMP_REG(qdev, NIC_RCV_CFG); in ql_dump_regs()
1532 DUMP_REG(qdev, FC_COS_TAGS); in ql_dump_regs()
1533 DUMP_REG(qdev, NIC_COS_TAGS); in ql_dump_regs()
1534 DUMP_REG(qdev, MGMT_RCV_CFG); in ql_dump_regs()
1535 DUMP_REG(qdev, XG_SERDES_ADDR); in ql_dump_regs()
1536 DUMP_REG(qdev, XG_SERDES_DATA); in ql_dump_regs()
1537 DUMP_REG(qdev, PRB_MX_ADDR); in ql_dump_regs()
1538 DUMP_REG(qdev, PRB_MX_DATA); in ql_dump_regs()
1539 ql_dump_intr_states(qdev); in ql_dump_regs()
1540 ql_dump_xgmac_control_regs(qdev); in ql_dump_regs()
1541 ql_dump_ets_regs(qdev); in ql_dump_regs()
1542 ql_dump_cam_entries(qdev); in ql_dump_regs()
1543 ql_dump_routing_entries(qdev); in ql_dump_regs()
1549 #define DUMP_STAT(qdev, stat) \ argument
1550 pr_err("%s = %ld\n", #stat, (unsigned long)qdev->nic_stats.stat)
1552 void ql_dump_stat(struct ql_adapter *qdev) in ql_dump_stat() argument
1555 DUMP_STAT(qdev, tx_pkts); in ql_dump_stat()
1556 DUMP_STAT(qdev, tx_bytes); in ql_dump_stat()
1557 DUMP_STAT(qdev, tx_mcast_pkts); in ql_dump_stat()
1558 DUMP_STAT(qdev, tx_bcast_pkts); in ql_dump_stat()
1559 DUMP_STAT(qdev, tx_ucast_pkts); in ql_dump_stat()
1560 DUMP_STAT(qdev, tx_ctl_pkts); in ql_dump_stat()
1561 DUMP_STAT(qdev, tx_pause_pkts); in ql_dump_stat()
1562 DUMP_STAT(qdev, tx_64_pkt); in ql_dump_stat()
1563 DUMP_STAT(qdev, tx_65_to_127_pkt); in ql_dump_stat()
1564 DUMP_STAT(qdev, tx_128_to_255_pkt); in ql_dump_stat()
1565 DUMP_STAT(qdev, tx_256_511_pkt); in ql_dump_stat()
1566 DUMP_STAT(qdev, tx_512_to_1023_pkt); in ql_dump_stat()
1567 DUMP_STAT(qdev, tx_1024_to_1518_pkt); in ql_dump_stat()
1568 DUMP_STAT(qdev, tx_1519_to_max_pkt); in ql_dump_stat()
1569 DUMP_STAT(qdev, tx_undersize_pkt); in ql_dump_stat()
1570 DUMP_STAT(qdev, tx_oversize_pkt); in ql_dump_stat()
1571 DUMP_STAT(qdev, rx_bytes); in ql_dump_stat()
1572 DUMP_STAT(qdev, rx_bytes_ok); in ql_dump_stat()
1573 DUMP_STAT(qdev, rx_pkts); in ql_dump_stat()
1574 DUMP_STAT(qdev, rx_pkts_ok); in ql_dump_stat()
1575 DUMP_STAT(qdev, rx_bcast_pkts); in ql_dump_stat()
1576 DUMP_STAT(qdev, rx_mcast_pkts); in ql_dump_stat()
1577 DUMP_STAT(qdev, rx_ucast_pkts); in ql_dump_stat()
1578 DUMP_STAT(qdev, rx_undersize_pkts); in ql_dump_stat()
1579 DUMP_STAT(qdev, rx_oversize_pkts); in ql_dump_stat()
1580 DUMP_STAT(qdev, rx_jabber_pkts); in ql_dump_stat()
1581 DUMP_STAT(qdev, rx_undersize_fcerr_pkts); in ql_dump_stat()
1582 DUMP_STAT(qdev, rx_drop_events); in ql_dump_stat()
1583 DUMP_STAT(qdev, rx_fcerr_pkts); in ql_dump_stat()
1584 DUMP_STAT(qdev, rx_align_err); in ql_dump_stat()
1585 DUMP_STAT(qdev, rx_symbol_err); in ql_dump_stat()
1586 DUMP_STAT(qdev, rx_mac_err); in ql_dump_stat()
1587 DUMP_STAT(qdev, rx_ctl_pkts); in ql_dump_stat()
1588 DUMP_STAT(qdev, rx_pause_pkts); in ql_dump_stat()
1589 DUMP_STAT(qdev, rx_64_pkts); in ql_dump_stat()
1590 DUMP_STAT(qdev, rx_65_to_127_pkts); in ql_dump_stat()
1591 DUMP_STAT(qdev, rx_128_255_pkts); in ql_dump_stat()
1592 DUMP_STAT(qdev, rx_256_511_pkts); in ql_dump_stat()
1593 DUMP_STAT(qdev, rx_512_to_1023_pkts); in ql_dump_stat()
1594 DUMP_STAT(qdev, rx_1024_to_1518_pkts); in ql_dump_stat()
1595 DUMP_STAT(qdev, rx_1519_to_max_pkts); in ql_dump_stat()
1596 DUMP_STAT(qdev, rx_len_err_pkts); in ql_dump_stat()
1602 #define DUMP_QDEV_FIELD(qdev, type, field) \ argument
1603 pr_err("qdev->%-24s = " type "\n", #field, qdev->field)
1604 #define DUMP_QDEV_DMA_FIELD(qdev, field) \ argument
1605 pr_err("qdev->%-24s = %llx\n", #field, (unsigned long long)qdev->field)
1606 #define DUMP_QDEV_ARRAY(qdev, type, array, index, field) \ argument
1608 #array, index, #field, qdev->array[index].field);
1609 void ql_dump_qdev(struct ql_adapter *qdev) in ql_dump_qdev() argument
1612 DUMP_QDEV_FIELD(qdev, "%lx", flags); in ql_dump_qdev()
1613 DUMP_QDEV_FIELD(qdev, "%p", vlgrp); in ql_dump_qdev()
1614 DUMP_QDEV_FIELD(qdev, "%p", pdev); in ql_dump_qdev()
1615 DUMP_QDEV_FIELD(qdev, "%p", ndev); in ql_dump_qdev()
1616 DUMP_QDEV_FIELD(qdev, "%d", chip_rev_id); in ql_dump_qdev()
1617 DUMP_QDEV_FIELD(qdev, "%p", reg_base); in ql_dump_qdev()
1618 DUMP_QDEV_FIELD(qdev, "%p", doorbell_area); in ql_dump_qdev()
1619 DUMP_QDEV_FIELD(qdev, "%d", doorbell_area_size); in ql_dump_qdev()
1620 DUMP_QDEV_FIELD(qdev, "%x", msg_enable); in ql_dump_qdev()
1621 DUMP_QDEV_FIELD(qdev, "%p", rx_ring_shadow_reg_area); in ql_dump_qdev()
1622 DUMP_QDEV_DMA_FIELD(qdev, rx_ring_shadow_reg_dma); in ql_dump_qdev()
1623 DUMP_QDEV_FIELD(qdev, "%p", tx_ring_shadow_reg_area); in ql_dump_qdev()
1624 DUMP_QDEV_DMA_FIELD(qdev, tx_ring_shadow_reg_dma); in ql_dump_qdev()
1625 DUMP_QDEV_FIELD(qdev, "%d", intr_count); in ql_dump_qdev()
1626 if (qdev->msi_x_entry) in ql_dump_qdev()
1627 for (i = 0; i < qdev->intr_count; i++) { in ql_dump_qdev()
1628 DUMP_QDEV_ARRAY(qdev, "%d", msi_x_entry, i, vector); in ql_dump_qdev()
1629 DUMP_QDEV_ARRAY(qdev, "%d", msi_x_entry, i, entry); in ql_dump_qdev()
1631 for (i = 0; i < qdev->intr_count; i++) { in ql_dump_qdev()
1632 DUMP_QDEV_ARRAY(qdev, "%p", intr_context, i, qdev); in ql_dump_qdev()
1633 DUMP_QDEV_ARRAY(qdev, "%d", intr_context, i, intr); in ql_dump_qdev()
1634 DUMP_QDEV_ARRAY(qdev, "%d", intr_context, i, hooked); in ql_dump_qdev()
1635 DUMP_QDEV_ARRAY(qdev, "0x%08x", intr_context, i, intr_en_mask); in ql_dump_qdev()
1636 DUMP_QDEV_ARRAY(qdev, "0x%08x", intr_context, i, intr_dis_mask); in ql_dump_qdev()
1637 DUMP_QDEV_ARRAY(qdev, "0x%08x", intr_context, i, intr_read_mask); in ql_dump_qdev()
1639 DUMP_QDEV_FIELD(qdev, "%d", tx_ring_count); in ql_dump_qdev()
1640 DUMP_QDEV_FIELD(qdev, "%d", rx_ring_count); in ql_dump_qdev()
1641 DUMP_QDEV_FIELD(qdev, "%d", ring_mem_size); in ql_dump_qdev()
1642 DUMP_QDEV_FIELD(qdev, "%p", ring_mem); in ql_dump_qdev()
1643 DUMP_QDEV_FIELD(qdev, "%d", intr_count); in ql_dump_qdev()
1644 DUMP_QDEV_FIELD(qdev, "%p", tx_ring); in ql_dump_qdev()
1645 DUMP_QDEV_FIELD(qdev, "%d", rss_ring_count); in ql_dump_qdev()
1646 DUMP_QDEV_FIELD(qdev, "%p", rx_ring); in ql_dump_qdev()
1647 DUMP_QDEV_FIELD(qdev, "%d", default_rx_queue); in ql_dump_qdev()
1648 DUMP_QDEV_FIELD(qdev, "0x%08x", xg_sem_mask); in ql_dump_qdev()
1649 DUMP_QDEV_FIELD(qdev, "0x%08x", port_link_up); in ql_dump_qdev()
1650 DUMP_QDEV_FIELD(qdev, "0x%08x", port_init); in ql_dump_qdev()
1817 pr_err("rx_ring->qdev = %p\n", rx_ring->qdev); in ql_dump_rx_ring()
1820 void ql_dump_hw_cb(struct ql_adapter *qdev, int size, u32 bit, u16 q_id) in ql_dump_hw_cb() argument
1830 if (ql_write_cfg(qdev, ptr, size, bit, q_id)) { in ql_dump_hw_cb()
2027 void ql_dump_all(struct ql_adapter *qdev) in ql_dump_all() argument
2031 QL_DUMP_REGS(qdev); in ql_dump_all()
2032 QL_DUMP_QDEV(qdev); in ql_dump_all()
2033 for (i = 0; i < qdev->tx_ring_count; i++) { in ql_dump_all()
2034 QL_DUMP_TX_RING(&qdev->tx_ring[i]); in ql_dump_all()
2035 QL_DUMP_WQICB((struct wqicb *)&qdev->tx_ring[i]); in ql_dump_all()
2037 for (i = 0; i < qdev->rx_ring_count; i++) { in ql_dump_all()
2038 QL_DUMP_RX_RING(&qdev->rx_ring[i]); in ql_dump_all()
2039 QL_DUMP_CQICB((struct cqicb *)&qdev->rx_ring[i]); in ql_dump_all()