4 static int ql_get_ets_regs(struct ql_adapter
*qdev
, u32
* buf
)
9 for (i
= 0; i
< 8; i
++, buf
++) {
10 ql_write32(qdev
, NIC_ETS
, i
<< 29 | 0x08000000);
11 *buf
= ql_read32(qdev
, NIC_ETS
);
14 for (i
= 0; i
< 2; i
++, buf
++) {
15 ql_write32(qdev
, CNA_ETS
, i
<< 29 | 0x08000000);
16 *buf
= ql_read32(qdev
, CNA_ETS
);
22 static void ql_get_intr_states(struct ql_adapter
*qdev
, u32
* buf
)
26 for (i
= 0; i
< qdev
->rx_ring_count
; i
++, buf
++) {
27 ql_write32(qdev
, INTR_EN
,
28 qdev
->intr_context
[i
].intr_read_mask
);
29 *buf
= ql_read32(qdev
, INTR_EN
);
33 static int ql_get_cam_entries(struct ql_adapter
*qdev
, u32
* buf
)
38 status
= ql_sem_spinlock(qdev
, SEM_MAC_ADDR_MASK
);
42 for (i
= 0; i
< 16; i
++) {
43 status
= ql_get_mac_addr_reg(qdev
,
44 MAC_ADDR_TYPE_CAM_MAC
, i
, value
);
46 QPRINTK(qdev
, DRV
, ERR
,
47 "Failed read of mac index register.\n");
50 *buf
++ = value
[0]; /* lower MAC address */
51 *buf
++ = value
[1]; /* upper MAC address */
52 *buf
++ = value
[2]; /* output */
54 for (i
= 0; i
< 32; i
++) {
55 status
= ql_get_mac_addr_reg(qdev
,
56 MAC_ADDR_TYPE_MULTI_MAC
, i
, value
);
58 QPRINTK(qdev
, DRV
, ERR
,
59 "Failed read of mac index register.\n");
62 *buf
++ = value
[0]; /* lower Mcast address */
63 *buf
++ = value
[1]; /* upper Mcast address */
66 ql_sem_unlock(qdev
, SEM_MAC_ADDR_MASK
);
70 static int ql_get_routing_entries(struct ql_adapter
*qdev
, u32
* buf
)
75 status
= ql_sem_spinlock(qdev
, SEM_RT_IDX_MASK
);
79 for (i
= 0; i
< 16; i
++) {
80 status
= ql_get_routing_reg(qdev
, i
, &value
);
82 QPRINTK(qdev
, DRV
, ERR
,
83 "Failed read of routing index register.\n");
90 ql_sem_unlock(qdev
, SEM_RT_IDX_MASK
);
94 /* Read the MPI Processor shadow registers */
95 static int ql_get_mpi_shadow_regs(struct ql_adapter
*qdev
, u32
* buf
)
100 for (i
= 0; i
< MPI_CORE_SH_REGS_CNT
; i
++, buf
++) {
101 status
= ql_write_mpi_reg(qdev
, RISC_124
,
102 (SHADOW_OFFSET
| i
<< SHADOW_REG_SHIFT
));
105 status
= ql_read_mpi_reg(qdev
, RISC_127
, buf
);
113 /* Read the MPI Processor core registers */
114 static int ql_get_mpi_regs(struct ql_adapter
*qdev
, u32
* buf
,
115 u32 offset
, u32 count
)
118 for (i
= 0; i
< count
; i
++, buf
++) {
119 status
= ql_read_mpi_reg(qdev
, offset
+ i
, buf
);
127 /* Read out the routing index registers */
128 static int ql_get_routing_index_registers(struct ql_adapter
*qdev
, u32
*buf
)
131 u32 type
, index
, index_max
;
136 status
= ql_sem_spinlock(qdev
, SEM_RT_IDX_MASK
);
140 for (type
= 0; type
< 4; type
++) {
145 for (index
= 0; index
< index_max
; index
++) {
147 | (type
<< RT_IDX_TYPE_SHIFT
)
148 | (index
<< RT_IDX_IDX_SHIFT
);
149 ql_write32(qdev
, RT_IDX
, val
);
151 while ((result_index
& RT_IDX_MR
) == 0)
152 result_index
= ql_read32(qdev
, RT_IDX
);
153 result_data
= ql_read32(qdev
, RT_DATA
);
164 ql_sem_unlock(qdev
, SEM_RT_IDX_MASK
);
168 /* Read out the MAC protocol registers */
169 static void ql_get_mac_protocol_registers(struct ql_adapter
*qdev
, u32
*buf
)
171 u32 result_index
, result_data
;
176 u32 initial_val
= MAC_ADDR_RS
;
180 for (type
= 0; type
< MAC_ADDR_TYPE_COUNT
; type
++) {
184 initial_val
|= MAC_ADDR_ADR
;
185 max_index
= MAC_ADDR_MAX_CAM_ENTRIES
;
186 max_offset
= MAC_ADDR_MAX_CAM_WCOUNT
;
188 case 1: /* Multicast MAC Address */
189 max_index
= MAC_ADDR_MAX_CAM_WCOUNT
;
190 max_offset
= MAC_ADDR_MAX_CAM_WCOUNT
;
192 case 2: /* VLAN filter mask */
193 case 3: /* MC filter mask */
194 max_index
= MAC_ADDR_MAX_CAM_WCOUNT
;
195 max_offset
= MAC_ADDR_MAX_CAM_WCOUNT
;
197 case 4: /* FC MAC addresses */
198 max_index
= MAC_ADDR_MAX_FC_MAC_ENTRIES
;
199 max_offset
= MAC_ADDR_MAX_FC_MAC_WCOUNT
;
201 case 5: /* Mgmt MAC addresses */
202 max_index
= MAC_ADDR_MAX_MGMT_MAC_ENTRIES
;
203 max_offset
= MAC_ADDR_MAX_MGMT_MAC_WCOUNT
;
205 case 6: /* Mgmt VLAN addresses */
206 max_index
= MAC_ADDR_MAX_MGMT_VLAN_ENTRIES
;
207 max_offset
= MAC_ADDR_MAX_MGMT_VLAN_WCOUNT
;
209 case 7: /* Mgmt IPv4 address */
210 max_index
= MAC_ADDR_MAX_MGMT_V4_ENTRIES
;
211 max_offset
= MAC_ADDR_MAX_MGMT_V4_WCOUNT
;
213 case 8: /* Mgmt IPv6 address */
214 max_index
= MAC_ADDR_MAX_MGMT_V6_ENTRIES
;
215 max_offset
= MAC_ADDR_MAX_MGMT_V6_WCOUNT
;
217 case 9: /* Mgmt TCP/UDP Dest port */
218 max_index
= MAC_ADDR_MAX_MGMT_TU_DP_ENTRIES
;
219 max_offset
= MAC_ADDR_MAX_MGMT_TU_DP_WCOUNT
;
222 printk(KERN_ERR
"Bad type!!! 0x%08x\n", type
);
227 for (index
= 0; index
< max_index
; index
++) {
228 for (offset
= 0; offset
< max_offset
; offset
++) {
230 | (type
<< MAC_ADDR_TYPE_SHIFT
)
231 | (index
<< MAC_ADDR_IDX_SHIFT
)
233 ql_write32(qdev
, MAC_ADDR_IDX
, val
);
235 while ((result_index
& MAC_ADDR_MR
) == 0) {
236 result_index
= ql_read32(qdev
,
239 result_data
= ql_read32(qdev
, MAC_ADDR_DATA
);
249 static void ql_get_sem_registers(struct ql_adapter
*qdev
, u32
*buf
)
251 u32 func_num
, reg
, reg_val
;
254 for (func_num
= 0; func_num
< MAX_SEMAPHORE_FUNCTIONS
; func_num
++) {
255 reg
= MPI_NIC_REG_BLOCK
256 | (func_num
<< MPI_NIC_FUNCTION_SHIFT
)
258 status
= ql_read_mpi_reg(qdev
, reg
, ®_val
);
260 /* if the read failed then dead fill the element. */
267 /* Create a coredump segment header */
268 static void ql_build_coredump_seg_header(
269 struct mpi_coredump_segment_header
*seg_hdr
,
270 u32 seg_number
, u32 seg_size
, u8
*desc
)
272 memset(seg_hdr
, 0, sizeof(struct mpi_coredump_segment_header
));
273 seg_hdr
->cookie
= MPI_COREDUMP_COOKIE
;
274 seg_hdr
->segNum
= seg_number
;
275 seg_hdr
->segSize
= seg_size
;
276 memcpy(seg_hdr
->description
, desc
, (sizeof(seg_hdr
->description
)) - 1);
280 * This function should be called when a coredump / probedump
281 * is to be extracted from the HBA. It is assumed there is a
282 * qdev structure that contains the base address of the register
283 * space for this function as well as a coredump structure that
284 * will contain the dump.
286 int ql_core_dump(struct ql_adapter
*qdev
, struct ql_mpi_coredump
*mpi_coredump
)
292 QPRINTK(qdev
, DRV
, ERR
,
293 "No memory available.\n");
297 /* Try to get the spinlock, but dont worry if
298 * it isn't available. If the firmware died it
299 * might be holding the sem.
301 ql_sem_spinlock(qdev
, SEM_PROC_REG_MASK
);
303 status
= ql_pause_mpi_risc(qdev
);
305 QPRINTK(qdev
, DRV
, ERR
,
306 "Failed RISC pause. Status = 0x%.08x\n", status
);
310 /* Insert the global header */
311 memset(&(mpi_coredump
->mpi_global_header
), 0,
312 sizeof(struct mpi_coredump_global_header
));
313 mpi_coredump
->mpi_global_header
.cookie
= MPI_COREDUMP_COOKIE
;
314 mpi_coredump
->mpi_global_header
.headerSize
=
315 sizeof(struct mpi_coredump_global_header
);
316 mpi_coredump
->mpi_global_header
.imageSize
=
317 sizeof(struct ql_mpi_coredump
);
318 memcpy(mpi_coredump
->mpi_global_header
.idString
, "MPI Coredump",
319 sizeof(mpi_coredump
->mpi_global_header
.idString
));
321 /* Get generic NIC reg dump */
322 ql_build_coredump_seg_header(&mpi_coredump
->nic_regs_seg_hdr
,
323 NIC1_CONTROL_SEG_NUM
,
324 sizeof(struct mpi_coredump_segment_header
) +
325 sizeof(mpi_coredump
->nic_regs
), "NIC1 Registers");
327 if (qdev
->func
& 1) {
328 /* Odd means our function is NIC 2 */
329 for (i
= 0; i
< NIC_REGS_DUMP_WORD_COUNT
; i
++)
330 mpi_coredump
->nic2_regs
[i
] =
331 ql_read32(qdev
, i
* sizeof(u32
));
333 /* Even means our function is NIC 1 */
334 for (i
= 0; i
< NIC_REGS_DUMP_WORD_COUNT
; i
++)
335 mpi_coredump
->nic_regs
[i
] =
336 ql_read32(qdev
, i
* sizeof(u32
));
339 ql_build_coredump_seg_header(&mpi_coredump
->core_regs_seg_hdr
,
341 sizeof(mpi_coredump
->core_regs_seg_hdr
) +
342 sizeof(mpi_coredump
->mpi_core_regs
) +
343 sizeof(mpi_coredump
->mpi_core_sh_regs
),
346 /* Get the MPI Core Registers */
347 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->mpi_core_regs
[0],
348 MPI_CORE_REGS_ADDR
, MPI_CORE_REGS_CNT
);
351 /* Get the 16 MPI shadow registers */
352 status
= ql_get_mpi_shadow_regs(qdev
,
353 &mpi_coredump
->mpi_core_sh_regs
[0]);
357 /* Get the Test Logic Registers */
358 ql_build_coredump_seg_header(&mpi_coredump
->test_logic_regs_seg_hdr
,
360 sizeof(struct mpi_coredump_segment_header
)
361 + sizeof(mpi_coredump
->test_logic_regs
),
363 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->test_logic_regs
[0],
364 TEST_REGS_ADDR
, TEST_REGS_CNT
);
368 /* Get the RMII Registers */
369 ql_build_coredump_seg_header(&mpi_coredump
->rmii_regs_seg_hdr
,
371 sizeof(struct mpi_coredump_segment_header
)
372 + sizeof(mpi_coredump
->rmii_regs
),
374 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->rmii_regs
[0],
375 RMII_REGS_ADDR
, RMII_REGS_CNT
);
379 /* Get the FCMAC1 Registers */
380 ql_build_coredump_seg_header(&mpi_coredump
->fcmac1_regs_seg_hdr
,
382 sizeof(struct mpi_coredump_segment_header
)
383 + sizeof(mpi_coredump
->fcmac1_regs
),
385 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->fcmac1_regs
[0],
386 FCMAC1_REGS_ADDR
, FCMAC_REGS_CNT
);
390 /* Get the FCMAC2 Registers */
392 ql_build_coredump_seg_header(&mpi_coredump
->fcmac2_regs_seg_hdr
,
394 sizeof(struct mpi_coredump_segment_header
)
395 + sizeof(mpi_coredump
->fcmac2_regs
),
398 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->fcmac2_regs
[0],
399 FCMAC2_REGS_ADDR
, FCMAC_REGS_CNT
);
403 /* Get the FC1 MBX Registers */
404 ql_build_coredump_seg_header(&mpi_coredump
->fc1_mbx_regs_seg_hdr
,
406 sizeof(struct mpi_coredump_segment_header
)
407 + sizeof(mpi_coredump
->fc1_mbx_regs
),
409 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->fc1_mbx_regs
[0],
410 FC1_MBX_REGS_ADDR
, FC_MBX_REGS_CNT
);
414 /* Get the IDE Registers */
415 ql_build_coredump_seg_header(&mpi_coredump
->ide_regs_seg_hdr
,
417 sizeof(struct mpi_coredump_segment_header
)
418 + sizeof(mpi_coredump
->ide_regs
),
420 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->ide_regs
[0],
421 IDE_REGS_ADDR
, IDE_REGS_CNT
);
425 /* Get the NIC1 MBX Registers */
426 ql_build_coredump_seg_header(&mpi_coredump
->nic1_mbx_regs_seg_hdr
,
428 sizeof(struct mpi_coredump_segment_header
)
429 + sizeof(mpi_coredump
->nic1_mbx_regs
),
431 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->nic1_mbx_regs
[0],
432 NIC1_MBX_REGS_ADDR
, NIC_MBX_REGS_CNT
);
436 /* Get the SMBus Registers */
437 ql_build_coredump_seg_header(&mpi_coredump
->smbus_regs_seg_hdr
,
439 sizeof(struct mpi_coredump_segment_header
)
440 + sizeof(mpi_coredump
->smbus_regs
),
442 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->smbus_regs
[0],
443 SMBUS_REGS_ADDR
, SMBUS_REGS_CNT
);
447 /* Get the FC2 MBX Registers */
448 ql_build_coredump_seg_header(&mpi_coredump
->fc2_mbx_regs_seg_hdr
,
450 sizeof(struct mpi_coredump_segment_header
)
451 + sizeof(mpi_coredump
->fc2_mbx_regs
),
453 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->fc2_mbx_regs
[0],
454 FC2_MBX_REGS_ADDR
, FC_MBX_REGS_CNT
);
458 /* Get the NIC2 MBX Registers */
459 ql_build_coredump_seg_header(&mpi_coredump
->nic2_mbx_regs_seg_hdr
,
461 sizeof(struct mpi_coredump_segment_header
)
462 + sizeof(mpi_coredump
->nic2_mbx_regs
),
464 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->nic2_mbx_regs
[0],
465 NIC2_MBX_REGS_ADDR
, NIC_MBX_REGS_CNT
);
469 /* Get the I2C Registers */
470 ql_build_coredump_seg_header(&mpi_coredump
->i2c_regs_seg_hdr
,
472 sizeof(struct mpi_coredump_segment_header
)
473 + sizeof(mpi_coredump
->i2c_regs
),
475 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->i2c_regs
[0],
476 I2C_REGS_ADDR
, I2C_REGS_CNT
);
480 /* Get the MEMC Registers */
481 ql_build_coredump_seg_header(&mpi_coredump
->memc_regs_seg_hdr
,
483 sizeof(struct mpi_coredump_segment_header
)
484 + sizeof(mpi_coredump
->memc_regs
),
486 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->memc_regs
[0],
487 MEMC_REGS_ADDR
, MEMC_REGS_CNT
);
491 /* Get the PBus Registers */
492 ql_build_coredump_seg_header(&mpi_coredump
->pbus_regs_seg_hdr
,
494 sizeof(struct mpi_coredump_segment_header
)
495 + sizeof(mpi_coredump
->pbus_regs
),
497 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->pbus_regs
[0],
498 PBUS_REGS_ADDR
, PBUS_REGS_CNT
);
502 /* Get the MDE Registers */
503 ql_build_coredump_seg_header(&mpi_coredump
->mde_regs_seg_hdr
,
505 sizeof(struct mpi_coredump_segment_header
)
506 + sizeof(mpi_coredump
->mde_regs
),
508 status
= ql_get_mpi_regs(qdev
, &mpi_coredump
->mde_regs
[0],
509 MDE_REGS_ADDR
, MDE_REGS_CNT
);
513 ql_build_coredump_seg_header(&mpi_coredump
->misc_nic_seg_hdr
,
514 MISC_NIC_INFO_SEG_NUM
,
515 sizeof(struct mpi_coredump_segment_header
)
516 + sizeof(mpi_coredump
->misc_nic_info
),
518 mpi_coredump
->misc_nic_info
.rx_ring_count
= qdev
->rx_ring_count
;
519 mpi_coredump
->misc_nic_info
.tx_ring_count
= qdev
->tx_ring_count
;
520 mpi_coredump
->misc_nic_info
.intr_count
= qdev
->intr_count
;
521 mpi_coredump
->misc_nic_info
.function
= qdev
->func
;
524 /* Get indexed register values. */
525 ql_build_coredump_seg_header(&mpi_coredump
->intr_states_seg_hdr
,
527 sizeof(struct mpi_coredump_segment_header
)
528 + sizeof(mpi_coredump
->intr_states
),
530 ql_get_intr_states(qdev
, &mpi_coredump
->intr_states
[0]);
532 ql_build_coredump_seg_header(&mpi_coredump
->cam_entries_seg_hdr
,
534 sizeof(struct mpi_coredump_segment_header
)
535 + sizeof(mpi_coredump
->cam_entries
),
537 status
= ql_get_cam_entries(qdev
, &mpi_coredump
->cam_entries
[0]);
541 ql_build_coredump_seg_header(&mpi_coredump
->nic_routing_words_seg_hdr
,
542 ROUTING_WORDS_SEG_NUM
,
543 sizeof(struct mpi_coredump_segment_header
)
544 + sizeof(mpi_coredump
->nic_routing_words
),
546 status
= ql_get_routing_entries(qdev
,
547 &mpi_coredump
->nic_routing_words
[0]);
551 /* Segment 34 (Rev C. step 23) */
552 ql_build_coredump_seg_header(&mpi_coredump
->ets_seg_hdr
,
554 sizeof(struct mpi_coredump_segment_header
)
555 + sizeof(mpi_coredump
->ets
),
557 status
= ql_get_ets_regs(qdev
, &mpi_coredump
->ets
[0]);
561 ql_build_coredump_seg_header(&mpi_coredump
->routing_reg_seg_hdr
,
562 ROUTING_INDEX_SEG_NUM
,
563 sizeof(struct mpi_coredump_segment_header
)
564 + sizeof(mpi_coredump
->routing_regs
),
566 status
= ql_get_routing_index_registers(qdev
,
567 &mpi_coredump
->routing_regs
[0]);
571 ql_build_coredump_seg_header(&mpi_coredump
->mac_prot_reg_seg_hdr
,
572 MAC_PROTOCOL_SEG_NUM
,
573 sizeof(struct mpi_coredump_segment_header
)
574 + sizeof(mpi_coredump
->mac_prot_regs
),
576 ql_get_mac_protocol_registers(qdev
, &mpi_coredump
->mac_prot_regs
[0]);
578 /* Get the semaphore registers for all 5 functions */
579 ql_build_coredump_seg_header(&mpi_coredump
->sem_regs_seg_hdr
,
581 sizeof(struct mpi_coredump_segment_header
) +
582 sizeof(mpi_coredump
->sem_regs
), "Sem Registers");
584 ql_get_sem_registers(qdev
, &mpi_coredump
->sem_regs
[0]);
586 /* Prevent the mpi restarting while we dump the memory.*/
587 ql_write_mpi_reg(qdev
, MPI_TEST_FUNC_RST_STS
, MPI_TEST_FUNC_RST_FRC
);
589 /* clear the pause */
590 status
= ql_unpause_mpi_risc(qdev
);
592 QPRINTK(qdev
, DRV
, ERR
,
593 "Failed RISC unpause. Status = 0x%.08x\n", status
);
597 ql_sem_unlock(qdev
, SEM_PROC_REG_MASK
); /* does flush too */
602 void ql_gen_reg_dump(struct ql_adapter
*qdev
,
603 struct ql_reg_dump
*mpi_coredump
)
608 memset(&(mpi_coredump
->mpi_global_header
), 0,
609 sizeof(struct mpi_coredump_global_header
));
610 mpi_coredump
->mpi_global_header
.cookie
= MPI_COREDUMP_COOKIE
;
611 mpi_coredump
->mpi_global_header
.headerSize
=
612 sizeof(struct mpi_coredump_global_header
);
613 mpi_coredump
->mpi_global_header
.imageSize
=
614 sizeof(struct ql_reg_dump
);
615 memcpy(mpi_coredump
->mpi_global_header
.idString
, "MPI Coredump",
616 sizeof(mpi_coredump
->mpi_global_header
.idString
));
620 ql_build_coredump_seg_header(&mpi_coredump
->misc_nic_seg_hdr
,
621 MISC_NIC_INFO_SEG_NUM
,
622 sizeof(struct mpi_coredump_segment_header
)
623 + sizeof(mpi_coredump
->misc_nic_info
),
625 mpi_coredump
->misc_nic_info
.rx_ring_count
= qdev
->rx_ring_count
;
626 mpi_coredump
->misc_nic_info
.tx_ring_count
= qdev
->tx_ring_count
;
627 mpi_coredump
->misc_nic_info
.intr_count
= qdev
->intr_count
;
628 mpi_coredump
->misc_nic_info
.function
= qdev
->func
;
630 /* Segment 16, Rev C. Step 18 */
631 ql_build_coredump_seg_header(&mpi_coredump
->nic_regs_seg_hdr
,
632 NIC1_CONTROL_SEG_NUM
,
633 sizeof(struct mpi_coredump_segment_header
)
634 + sizeof(mpi_coredump
->nic_regs
),
636 /* Get generic reg dump */
637 for (i
= 0; i
< 64; i
++)
638 mpi_coredump
->nic_regs
[i
] = ql_read32(qdev
, i
* sizeof(u32
));
641 /* Get indexed register values. */
642 ql_build_coredump_seg_header(&mpi_coredump
->intr_states_seg_hdr
,
644 sizeof(struct mpi_coredump_segment_header
)
645 + sizeof(mpi_coredump
->intr_states
),
647 ql_get_intr_states(qdev
, &mpi_coredump
->intr_states
[0]);
649 ql_build_coredump_seg_header(&mpi_coredump
->cam_entries_seg_hdr
,
651 sizeof(struct mpi_coredump_segment_header
)
652 + sizeof(mpi_coredump
->cam_entries
),
654 status
= ql_get_cam_entries(qdev
, &mpi_coredump
->cam_entries
[0]);
658 ql_build_coredump_seg_header(&mpi_coredump
->nic_routing_words_seg_hdr
,
659 ROUTING_WORDS_SEG_NUM
,
660 sizeof(struct mpi_coredump_segment_header
)
661 + sizeof(mpi_coredump
->nic_routing_words
),
663 status
= ql_get_routing_entries(qdev
,
664 &mpi_coredump
->nic_routing_words
[0]);
668 /* Segment 34 (Rev C. step 23) */
669 ql_build_coredump_seg_header(&mpi_coredump
->ets_seg_hdr
,
671 sizeof(struct mpi_coredump_segment_header
)
672 + sizeof(mpi_coredump
->ets
),
674 status
= ql_get_ets_regs(qdev
, &mpi_coredump
->ets
[0]);
679 /* Coredump to messages log file using separate worker thread */
680 void ql_mpi_core_to_log(struct work_struct
*work
)
682 struct ql_adapter
*qdev
=
683 container_of(work
, struct ql_adapter
, mpi_core_to_log
.work
);
687 count
= sizeof(struct ql_mpi_coredump
) / sizeof(u32
);
688 tmp
= (u32
*)qdev
->mpi_coredump
;
689 QPRINTK(qdev
, DRV
, DEBUG
, "Core is dumping to log file!\n");
691 for (i
= 0; i
< count
; i
+= 8) {
692 printk(KERN_ERR
"%.08x: %.08x %.08x %.08x %.08x %.08x "
693 "%.08x %.08x %.08x \n", i
,
707 static void ql_dump_intr_states(struct ql_adapter
*qdev
)
711 for (i
= 0; i
< qdev
->intr_count
; i
++) {
712 ql_write32(qdev
, INTR_EN
, qdev
->intr_context
[i
].intr_read_mask
);
713 value
= ql_read32(qdev
, INTR_EN
);
715 "%s: Interrupt %d is %s.\n",
717 (value
& INTR_EN_EN
? "enabled" : "disabled"));
721 void ql_dump_xgmac_control_regs(struct ql_adapter
*qdev
)
724 if (ql_sem_spinlock(qdev
, qdev
->xg_sem_mask
)) {
725 printk(KERN_ERR
"%s: Couldn't get xgmac sem.\n", __func__
);
728 ql_read_xgmac_reg(qdev
, PAUSE_SRC_LO
, &data
);
729 printk(KERN_ERR PFX
"%s: PAUSE_SRC_LO = 0x%.08x.\n", qdev
->ndev
->name
,
731 ql_read_xgmac_reg(qdev
, PAUSE_SRC_HI
, &data
);
732 printk(KERN_ERR PFX
"%s: PAUSE_SRC_HI = 0x%.08x.\n", qdev
->ndev
->name
,
734 ql_read_xgmac_reg(qdev
, GLOBAL_CFG
, &data
);
735 printk(KERN_ERR PFX
"%s: GLOBAL_CFG = 0x%.08x.\n", qdev
->ndev
->name
,
737 ql_read_xgmac_reg(qdev
, TX_CFG
, &data
);
738 printk(KERN_ERR PFX
"%s: TX_CFG = 0x%.08x.\n", qdev
->ndev
->name
, data
);
739 ql_read_xgmac_reg(qdev
, RX_CFG
, &data
);
740 printk(KERN_ERR PFX
"%s: RX_CFG = 0x%.08x.\n", qdev
->ndev
->name
, data
);
741 ql_read_xgmac_reg(qdev
, FLOW_CTL
, &data
);
742 printk(KERN_ERR PFX
"%s: FLOW_CTL = 0x%.08x.\n", qdev
->ndev
->name
,
744 ql_read_xgmac_reg(qdev
, PAUSE_OPCODE
, &data
);
745 printk(KERN_ERR PFX
"%s: PAUSE_OPCODE = 0x%.08x.\n", qdev
->ndev
->name
,
747 ql_read_xgmac_reg(qdev
, PAUSE_TIMER
, &data
);
748 printk(KERN_ERR PFX
"%s: PAUSE_TIMER = 0x%.08x.\n", qdev
->ndev
->name
,
750 ql_read_xgmac_reg(qdev
, PAUSE_FRM_DEST_LO
, &data
);
751 printk(KERN_ERR PFX
"%s: PAUSE_FRM_DEST_LO = 0x%.08x.\n",
752 qdev
->ndev
->name
, data
);
753 ql_read_xgmac_reg(qdev
, PAUSE_FRM_DEST_HI
, &data
);
754 printk(KERN_ERR PFX
"%s: PAUSE_FRM_DEST_HI = 0x%.08x.\n",
755 qdev
->ndev
->name
, data
);
756 ql_read_xgmac_reg(qdev
, MAC_TX_PARAMS
, &data
);
757 printk(KERN_ERR PFX
"%s: MAC_TX_PARAMS = 0x%.08x.\n", qdev
->ndev
->name
,
759 ql_read_xgmac_reg(qdev
, MAC_RX_PARAMS
, &data
);
760 printk(KERN_ERR PFX
"%s: MAC_RX_PARAMS = 0x%.08x.\n", qdev
->ndev
->name
,
762 ql_read_xgmac_reg(qdev
, MAC_SYS_INT
, &data
);
763 printk(KERN_ERR PFX
"%s: MAC_SYS_INT = 0x%.08x.\n", qdev
->ndev
->name
,
765 ql_read_xgmac_reg(qdev
, MAC_SYS_INT_MASK
, &data
);
766 printk(KERN_ERR PFX
"%s: MAC_SYS_INT_MASK = 0x%.08x.\n",
767 qdev
->ndev
->name
, data
);
768 ql_read_xgmac_reg(qdev
, MAC_MGMT_INT
, &data
);
769 printk(KERN_ERR PFX
"%s: MAC_MGMT_INT = 0x%.08x.\n", qdev
->ndev
->name
,
771 ql_read_xgmac_reg(qdev
, MAC_MGMT_IN_MASK
, &data
);
772 printk(KERN_ERR PFX
"%s: MAC_MGMT_IN_MASK = 0x%.08x.\n",
773 qdev
->ndev
->name
, data
);
774 ql_read_xgmac_reg(qdev
, EXT_ARB_MODE
, &data
);
775 printk(KERN_ERR PFX
"%s: EXT_ARB_MODE = 0x%.08x.\n", qdev
->ndev
->name
,
777 ql_sem_unlock(qdev
, qdev
->xg_sem_mask
);
781 static void ql_dump_ets_regs(struct ql_adapter
*qdev
)
785 static void ql_dump_cam_entries(struct ql_adapter
*qdev
)
790 i
= ql_sem_spinlock(qdev
, SEM_MAC_ADDR_MASK
);
793 for (i
= 0; i
< 4; i
++) {
794 if (ql_get_mac_addr_reg(qdev
, MAC_ADDR_TYPE_CAM_MAC
, i
, value
)) {
796 "%s: Failed read of mac index register.\n",
802 "%s: CAM index %d CAM Lookup Lower = 0x%.08x:%.08x, Output = 0x%.08x.\n",
803 qdev
->ndev
->name
, i
, value
[1], value
[0],
807 for (i
= 0; i
< 32; i
++) {
808 if (ql_get_mac_addr_reg
809 (qdev
, MAC_ADDR_TYPE_MULTI_MAC
, i
, value
)) {
811 "%s: Failed read of mac index register.\n",
817 "%s: MCAST index %d CAM Lookup Lower = 0x%.08x:%.08x.\n",
818 qdev
->ndev
->name
, i
, value
[1], value
[0]);
821 ql_sem_unlock(qdev
, SEM_MAC_ADDR_MASK
);
824 void ql_dump_routing_entries(struct ql_adapter
*qdev
)
828 i
= ql_sem_spinlock(qdev
, SEM_RT_IDX_MASK
);
831 for (i
= 0; i
< 16; i
++) {
833 if (ql_get_routing_reg(qdev
, i
, &value
)) {
835 "%s: Failed read of routing index register.\n",
841 "%s: Routing Mask %d = 0x%.08x.\n",
842 qdev
->ndev
->name
, i
, value
);
845 ql_sem_unlock(qdev
, SEM_RT_IDX_MASK
);
848 void ql_dump_regs(struct ql_adapter
*qdev
)
850 printk(KERN_ERR PFX
"reg dump for function #%d.\n", qdev
->func
);
851 printk(KERN_ERR PFX
"SYS = 0x%x.\n",
852 ql_read32(qdev
, SYS
));
853 printk(KERN_ERR PFX
"RST_FO = 0x%x.\n",
854 ql_read32(qdev
, RST_FO
));
855 printk(KERN_ERR PFX
"FSC = 0x%x.\n",
856 ql_read32(qdev
, FSC
));
857 printk(KERN_ERR PFX
"CSR = 0x%x.\n",
858 ql_read32(qdev
, CSR
));
859 printk(KERN_ERR PFX
"ICB_RID = 0x%x.\n",
860 ql_read32(qdev
, ICB_RID
));
861 printk(KERN_ERR PFX
"ICB_L = 0x%x.\n",
862 ql_read32(qdev
, ICB_L
));
863 printk(KERN_ERR PFX
"ICB_H = 0x%x.\n",
864 ql_read32(qdev
, ICB_H
));
865 printk(KERN_ERR PFX
"CFG = 0x%x.\n",
866 ql_read32(qdev
, CFG
));
867 printk(KERN_ERR PFX
"BIOS_ADDR = 0x%x.\n",
868 ql_read32(qdev
, BIOS_ADDR
));
869 printk(KERN_ERR PFX
"STS = 0x%x.\n",
870 ql_read32(qdev
, STS
));
871 printk(KERN_ERR PFX
"INTR_EN = 0x%x.\n",
872 ql_read32(qdev
, INTR_EN
));
873 printk(KERN_ERR PFX
"INTR_MASK = 0x%x.\n",
874 ql_read32(qdev
, INTR_MASK
));
875 printk(KERN_ERR PFX
"ISR1 = 0x%x.\n",
876 ql_read32(qdev
, ISR1
));
877 printk(KERN_ERR PFX
"ISR2 = 0x%x.\n",
878 ql_read32(qdev
, ISR2
));
879 printk(KERN_ERR PFX
"ISR3 = 0x%x.\n",
880 ql_read32(qdev
, ISR3
));
881 printk(KERN_ERR PFX
"ISR4 = 0x%x.\n",
882 ql_read32(qdev
, ISR4
));
883 printk(KERN_ERR PFX
"REV_ID = 0x%x.\n",
884 ql_read32(qdev
, REV_ID
));
885 printk(KERN_ERR PFX
"FRC_ECC_ERR = 0x%x.\n",
886 ql_read32(qdev
, FRC_ECC_ERR
));
887 printk(KERN_ERR PFX
"ERR_STS = 0x%x.\n",
888 ql_read32(qdev
, ERR_STS
));
889 printk(KERN_ERR PFX
"RAM_DBG_ADDR = 0x%x.\n",
890 ql_read32(qdev
, RAM_DBG_ADDR
));
891 printk(KERN_ERR PFX
"RAM_DBG_DATA = 0x%x.\n",
892 ql_read32(qdev
, RAM_DBG_DATA
));
893 printk(KERN_ERR PFX
"ECC_ERR_CNT = 0x%x.\n",
894 ql_read32(qdev
, ECC_ERR_CNT
));
895 printk(KERN_ERR PFX
"SEM = 0x%x.\n",
896 ql_read32(qdev
, SEM
));
897 printk(KERN_ERR PFX
"GPIO_1 = 0x%x.\n",
898 ql_read32(qdev
, GPIO_1
));
899 printk(KERN_ERR PFX
"GPIO_2 = 0x%x.\n",
900 ql_read32(qdev
, GPIO_2
));
901 printk(KERN_ERR PFX
"GPIO_3 = 0x%x.\n",
902 ql_read32(qdev
, GPIO_3
));
903 printk(KERN_ERR PFX
"XGMAC_ADDR = 0x%x.\n",
904 ql_read32(qdev
, XGMAC_ADDR
));
905 printk(KERN_ERR PFX
"XGMAC_DATA = 0x%x.\n",
906 ql_read32(qdev
, XGMAC_DATA
));
907 printk(KERN_ERR PFX
"NIC_ETS = 0x%x.\n",
908 ql_read32(qdev
, NIC_ETS
));
909 printk(KERN_ERR PFX
"CNA_ETS = 0x%x.\n",
910 ql_read32(qdev
, CNA_ETS
));
911 printk(KERN_ERR PFX
"FLASH_ADDR = 0x%x.\n",
912 ql_read32(qdev
, FLASH_ADDR
));
913 printk(KERN_ERR PFX
"FLASH_DATA = 0x%x.\n",
914 ql_read32(qdev
, FLASH_DATA
));
915 printk(KERN_ERR PFX
"CQ_STOP = 0x%x.\n",
916 ql_read32(qdev
, CQ_STOP
));
917 printk(KERN_ERR PFX
"PAGE_TBL_RID = 0x%x.\n",
918 ql_read32(qdev
, PAGE_TBL_RID
));
919 printk(KERN_ERR PFX
"WQ_PAGE_TBL_LO = 0x%x.\n",
920 ql_read32(qdev
, WQ_PAGE_TBL_LO
));
921 printk(KERN_ERR PFX
"WQ_PAGE_TBL_HI = 0x%x.\n",
922 ql_read32(qdev
, WQ_PAGE_TBL_HI
));
923 printk(KERN_ERR PFX
"CQ_PAGE_TBL_LO = 0x%x.\n",
924 ql_read32(qdev
, CQ_PAGE_TBL_LO
));
925 printk(KERN_ERR PFX
"CQ_PAGE_TBL_HI = 0x%x.\n",
926 ql_read32(qdev
, CQ_PAGE_TBL_HI
));
927 printk(KERN_ERR PFX
"COS_DFLT_CQ1 = 0x%x.\n",
928 ql_read32(qdev
, COS_DFLT_CQ1
));
929 printk(KERN_ERR PFX
"COS_DFLT_CQ2 = 0x%x.\n",
930 ql_read32(qdev
, COS_DFLT_CQ2
));
931 printk(KERN_ERR PFX
"SPLT_HDR = 0x%x.\n",
932 ql_read32(qdev
, SPLT_HDR
));
933 printk(KERN_ERR PFX
"FC_PAUSE_THRES = 0x%x.\n",
934 ql_read32(qdev
, FC_PAUSE_THRES
));
935 printk(KERN_ERR PFX
"NIC_PAUSE_THRES = 0x%x.\n",
936 ql_read32(qdev
, NIC_PAUSE_THRES
));
937 printk(KERN_ERR PFX
"FC_ETHERTYPE = 0x%x.\n",
938 ql_read32(qdev
, FC_ETHERTYPE
));
939 printk(KERN_ERR PFX
"FC_RCV_CFG = 0x%x.\n",
940 ql_read32(qdev
, FC_RCV_CFG
));
941 printk(KERN_ERR PFX
"NIC_RCV_CFG = 0x%x.\n",
942 ql_read32(qdev
, NIC_RCV_CFG
));
943 printk(KERN_ERR PFX
"FC_COS_TAGS = 0x%x.\n",
944 ql_read32(qdev
, FC_COS_TAGS
));
945 printk(KERN_ERR PFX
"NIC_COS_TAGS = 0x%x.\n",
946 ql_read32(qdev
, NIC_COS_TAGS
));
947 printk(KERN_ERR PFX
"MGMT_RCV_CFG = 0x%x.\n",
948 ql_read32(qdev
, MGMT_RCV_CFG
));
949 printk(KERN_ERR PFX
"XG_SERDES_ADDR = 0x%x.\n",
950 ql_read32(qdev
, XG_SERDES_ADDR
));
951 printk(KERN_ERR PFX
"XG_SERDES_DATA = 0x%x.\n",
952 ql_read32(qdev
, XG_SERDES_DATA
));
953 printk(KERN_ERR PFX
"PRB_MX_ADDR = 0x%x.\n",
954 ql_read32(qdev
, PRB_MX_ADDR
));
955 printk(KERN_ERR PFX
"PRB_MX_DATA = 0x%x.\n",
956 ql_read32(qdev
, PRB_MX_DATA
));
957 ql_dump_intr_states(qdev
);
958 ql_dump_xgmac_control_regs(qdev
);
959 ql_dump_ets_regs(qdev
);
960 ql_dump_cam_entries(qdev
);
961 ql_dump_routing_entries(qdev
);
966 void ql_dump_stat(struct ql_adapter
*qdev
)
968 printk(KERN_ERR
"%s: Enter.\n", __func__
);
969 printk(KERN_ERR
"tx_pkts = %ld\n",
970 (unsigned long)qdev
->nic_stats
.tx_pkts
);
971 printk(KERN_ERR
"tx_bytes = %ld\n",
972 (unsigned long)qdev
->nic_stats
.tx_bytes
);
973 printk(KERN_ERR
"tx_mcast_pkts = %ld.\n",
974 (unsigned long)qdev
->nic_stats
.tx_mcast_pkts
);
975 printk(KERN_ERR
"tx_bcast_pkts = %ld.\n",
976 (unsigned long)qdev
->nic_stats
.tx_bcast_pkts
);
977 printk(KERN_ERR
"tx_ucast_pkts = %ld.\n",
978 (unsigned long)qdev
->nic_stats
.tx_ucast_pkts
);
979 printk(KERN_ERR
"tx_ctl_pkts = %ld.\n",
980 (unsigned long)qdev
->nic_stats
.tx_ctl_pkts
);
981 printk(KERN_ERR
"tx_pause_pkts = %ld.\n",
982 (unsigned long)qdev
->nic_stats
.tx_pause_pkts
);
983 printk(KERN_ERR
"tx_64_pkt = %ld.\n",
984 (unsigned long)qdev
->nic_stats
.tx_64_pkt
);
985 printk(KERN_ERR
"tx_65_to_127_pkt = %ld.\n",
986 (unsigned long)qdev
->nic_stats
.tx_65_to_127_pkt
);
987 printk(KERN_ERR
"tx_128_to_255_pkt = %ld.\n",
988 (unsigned long)qdev
->nic_stats
.tx_128_to_255_pkt
);
989 printk(KERN_ERR
"tx_256_511_pkt = %ld.\n",
990 (unsigned long)qdev
->nic_stats
.tx_256_511_pkt
);
991 printk(KERN_ERR
"tx_512_to_1023_pkt = %ld.\n",
992 (unsigned long)qdev
->nic_stats
.tx_512_to_1023_pkt
);
993 printk(KERN_ERR
"tx_1024_to_1518_pkt = %ld.\n",
994 (unsigned long)qdev
->nic_stats
.tx_1024_to_1518_pkt
);
995 printk(KERN_ERR
"tx_1519_to_max_pkt = %ld.\n",
996 (unsigned long)qdev
->nic_stats
.tx_1519_to_max_pkt
);
997 printk(KERN_ERR
"tx_undersize_pkt = %ld.\n",
998 (unsigned long)qdev
->nic_stats
.tx_undersize_pkt
);
999 printk(KERN_ERR
"tx_oversize_pkt = %ld.\n",
1000 (unsigned long)qdev
->nic_stats
.tx_oversize_pkt
);
1001 printk(KERN_ERR
"rx_bytes = %ld.\n",
1002 (unsigned long)qdev
->nic_stats
.rx_bytes
);
1003 printk(KERN_ERR
"rx_bytes_ok = %ld.\n",
1004 (unsigned long)qdev
->nic_stats
.rx_bytes_ok
);
1005 printk(KERN_ERR
"rx_pkts = %ld.\n",
1006 (unsigned long)qdev
->nic_stats
.rx_pkts
);
1007 printk(KERN_ERR
"rx_pkts_ok = %ld.\n",
1008 (unsigned long)qdev
->nic_stats
.rx_pkts_ok
);
1009 printk(KERN_ERR
"rx_bcast_pkts = %ld.\n",
1010 (unsigned long)qdev
->nic_stats
.rx_bcast_pkts
);
1011 printk(KERN_ERR
"rx_mcast_pkts = %ld.\n",
1012 (unsigned long)qdev
->nic_stats
.rx_mcast_pkts
);
1013 printk(KERN_ERR
"rx_ucast_pkts = %ld.\n",
1014 (unsigned long)qdev
->nic_stats
.rx_ucast_pkts
);
1015 printk(KERN_ERR
"rx_undersize_pkts = %ld.\n",
1016 (unsigned long)qdev
->nic_stats
.rx_undersize_pkts
);
1017 printk(KERN_ERR
"rx_oversize_pkts = %ld.\n",
1018 (unsigned long)qdev
->nic_stats
.rx_oversize_pkts
);
1019 printk(KERN_ERR
"rx_jabber_pkts = %ld.\n",
1020 (unsigned long)qdev
->nic_stats
.rx_jabber_pkts
);
1021 printk(KERN_ERR
"rx_undersize_fcerr_pkts = %ld.\n",
1022 (unsigned long)qdev
->nic_stats
.rx_undersize_fcerr_pkts
);
1023 printk(KERN_ERR
"rx_drop_events = %ld.\n",
1024 (unsigned long)qdev
->nic_stats
.rx_drop_events
);
1025 printk(KERN_ERR
"rx_fcerr_pkts = %ld.\n",
1026 (unsigned long)qdev
->nic_stats
.rx_fcerr_pkts
);
1027 printk(KERN_ERR
"rx_align_err = %ld.\n",
1028 (unsigned long)qdev
->nic_stats
.rx_align_err
);
1029 printk(KERN_ERR
"rx_symbol_err = %ld.\n",
1030 (unsigned long)qdev
->nic_stats
.rx_symbol_err
);
1031 printk(KERN_ERR
"rx_mac_err = %ld.\n",
1032 (unsigned long)qdev
->nic_stats
.rx_mac_err
);
1033 printk(KERN_ERR
"rx_ctl_pkts = %ld.\n",
1034 (unsigned long)qdev
->nic_stats
.rx_ctl_pkts
);
1035 printk(KERN_ERR
"rx_pause_pkts = %ld.\n",
1036 (unsigned long)qdev
->nic_stats
.rx_pause_pkts
);
1037 printk(KERN_ERR
"rx_64_pkts = %ld.\n",
1038 (unsigned long)qdev
->nic_stats
.rx_64_pkts
);
1039 printk(KERN_ERR
"rx_65_to_127_pkts = %ld.\n",
1040 (unsigned long)qdev
->nic_stats
.rx_65_to_127_pkts
);
1041 printk(KERN_ERR
"rx_128_255_pkts = %ld.\n",
1042 (unsigned long)qdev
->nic_stats
.rx_128_255_pkts
);
1043 printk(KERN_ERR
"rx_256_511_pkts = %ld.\n",
1044 (unsigned long)qdev
->nic_stats
.rx_256_511_pkts
);
1045 printk(KERN_ERR
"rx_512_to_1023_pkts = %ld.\n",
1046 (unsigned long)qdev
->nic_stats
.rx_512_to_1023_pkts
);
1047 printk(KERN_ERR
"rx_1024_to_1518_pkts = %ld.\n",
1048 (unsigned long)qdev
->nic_stats
.rx_1024_to_1518_pkts
);
1049 printk(KERN_ERR
"rx_1519_to_max_pkts = %ld.\n",
1050 (unsigned long)qdev
->nic_stats
.rx_1519_to_max_pkts
);
1051 printk(KERN_ERR
"rx_len_err_pkts = %ld.\n",
1052 (unsigned long)qdev
->nic_stats
.rx_len_err_pkts
);
1057 void ql_dump_qdev(struct ql_adapter
*qdev
)
1060 printk(KERN_ERR PFX
"qdev->flags = %lx.\n",
1062 printk(KERN_ERR PFX
"qdev->vlgrp = %p.\n",
1064 printk(KERN_ERR PFX
"qdev->pdev = %p.\n",
1066 printk(KERN_ERR PFX
"qdev->ndev = %p.\n",
1068 printk(KERN_ERR PFX
"qdev->chip_rev_id = %d.\n",
1070 printk(KERN_ERR PFX
"qdev->reg_base = %p.\n",
1072 printk(KERN_ERR PFX
"qdev->doorbell_area = %p.\n",
1073 qdev
->doorbell_area
);
1074 printk(KERN_ERR PFX
"qdev->doorbell_area_size = %d.\n",
1075 qdev
->doorbell_area_size
);
1076 printk(KERN_ERR PFX
"msg_enable = %x.\n",
1078 printk(KERN_ERR PFX
"qdev->rx_ring_shadow_reg_area = %p.\n",
1079 qdev
->rx_ring_shadow_reg_area
);
1080 printk(KERN_ERR PFX
"qdev->rx_ring_shadow_reg_dma = %llx.\n",
1081 (unsigned long long) qdev
->rx_ring_shadow_reg_dma
);
1082 printk(KERN_ERR PFX
"qdev->tx_ring_shadow_reg_area = %p.\n",
1083 qdev
->tx_ring_shadow_reg_area
);
1084 printk(KERN_ERR PFX
"qdev->tx_ring_shadow_reg_dma = %llx.\n",
1085 (unsigned long long) qdev
->tx_ring_shadow_reg_dma
);
1086 printk(KERN_ERR PFX
"qdev->intr_count = %d.\n",
1088 if (qdev
->msi_x_entry
)
1089 for (i
= 0; i
< qdev
->intr_count
; i
++) {
1091 "msi_x_entry.[%d]vector = %d.\n", i
,
1092 qdev
->msi_x_entry
[i
].vector
);
1094 "msi_x_entry.[%d]entry = %d.\n", i
,
1095 qdev
->msi_x_entry
[i
].entry
);
1097 for (i
= 0; i
< qdev
->intr_count
; i
++) {
1099 "intr_context[%d].qdev = %p.\n", i
,
1100 qdev
->intr_context
[i
].qdev
);
1102 "intr_context[%d].intr = %d.\n", i
,
1103 qdev
->intr_context
[i
].intr
);
1105 "intr_context[%d].hooked = %d.\n", i
,
1106 qdev
->intr_context
[i
].hooked
);
1108 "intr_context[%d].intr_en_mask = 0x%08x.\n", i
,
1109 qdev
->intr_context
[i
].intr_en_mask
);
1111 "intr_context[%d].intr_dis_mask = 0x%08x.\n", i
,
1112 qdev
->intr_context
[i
].intr_dis_mask
);
1114 "intr_context[%d].intr_read_mask = 0x%08x.\n", i
,
1115 qdev
->intr_context
[i
].intr_read_mask
);
1117 printk(KERN_ERR PFX
"qdev->tx_ring_count = %d.\n", qdev
->tx_ring_count
);
1118 printk(KERN_ERR PFX
"qdev->rx_ring_count = %d.\n", qdev
->rx_ring_count
);
1119 printk(KERN_ERR PFX
"qdev->ring_mem_size = %d.\n", qdev
->ring_mem_size
);
1120 printk(KERN_ERR PFX
"qdev->ring_mem = %p.\n", qdev
->ring_mem
);
1121 printk(KERN_ERR PFX
"qdev->intr_count = %d.\n", qdev
->intr_count
);
1122 printk(KERN_ERR PFX
"qdev->tx_ring = %p.\n",
1124 printk(KERN_ERR PFX
"qdev->rss_ring_count = %d.\n",
1125 qdev
->rss_ring_count
);
1126 printk(KERN_ERR PFX
"qdev->rx_ring = %p.\n", qdev
->rx_ring
);
1127 printk(KERN_ERR PFX
"qdev->default_rx_queue = %d.\n",
1128 qdev
->default_rx_queue
);
1129 printk(KERN_ERR PFX
"qdev->xg_sem_mask = 0x%08x.\n",
1131 printk(KERN_ERR PFX
"qdev->port_link_up = 0x%08x.\n",
1132 qdev
->port_link_up
);
1133 printk(KERN_ERR PFX
"qdev->port_init = 0x%08x.\n",
1140 void ql_dump_wqicb(struct wqicb
*wqicb
)
1142 printk(KERN_ERR PFX
"Dumping wqicb stuff...\n");
1143 printk(KERN_ERR PFX
"wqicb->len = 0x%x.\n", le16_to_cpu(wqicb
->len
));
1144 printk(KERN_ERR PFX
"wqicb->flags = %x.\n", le16_to_cpu(wqicb
->flags
));
1145 printk(KERN_ERR PFX
"wqicb->cq_id_rss = %d.\n",
1146 le16_to_cpu(wqicb
->cq_id_rss
));
1147 printk(KERN_ERR PFX
"wqicb->rid = 0x%x.\n", le16_to_cpu(wqicb
->rid
));
1148 printk(KERN_ERR PFX
"wqicb->wq_addr = 0x%llx.\n",
1149 (unsigned long long) le64_to_cpu(wqicb
->addr
));
1150 printk(KERN_ERR PFX
"wqicb->wq_cnsmr_idx_addr = 0x%llx.\n",
1151 (unsigned long long) le64_to_cpu(wqicb
->cnsmr_idx_addr
));
1154 void ql_dump_tx_ring(struct tx_ring
*tx_ring
)
1156 if (tx_ring
== NULL
)
1159 "===================== Dumping tx_ring %d ===============.\n",
1161 printk(KERN_ERR PFX
"tx_ring->base = %p.\n", tx_ring
->wq_base
);
1162 printk(KERN_ERR PFX
"tx_ring->base_dma = 0x%llx.\n",
1163 (unsigned long long) tx_ring
->wq_base_dma
);
1165 "tx_ring->cnsmr_idx_sh_reg, addr = 0x%p, value = %d.\n",
1166 tx_ring
->cnsmr_idx_sh_reg
,
1167 tx_ring
->cnsmr_idx_sh_reg
1168 ? ql_read_sh_reg(tx_ring
->cnsmr_idx_sh_reg
) : 0);
1169 printk(KERN_ERR PFX
"tx_ring->size = %d.\n", tx_ring
->wq_size
);
1170 printk(KERN_ERR PFX
"tx_ring->len = %d.\n", tx_ring
->wq_len
);
1171 printk(KERN_ERR PFX
"tx_ring->prod_idx_db_reg = %p.\n",
1172 tx_ring
->prod_idx_db_reg
);
1173 printk(KERN_ERR PFX
"tx_ring->valid_db_reg = %p.\n",
1174 tx_ring
->valid_db_reg
);
1175 printk(KERN_ERR PFX
"tx_ring->prod_idx = %d.\n", tx_ring
->prod_idx
);
1176 printk(KERN_ERR PFX
"tx_ring->cq_id = %d.\n", tx_ring
->cq_id
);
1177 printk(KERN_ERR PFX
"tx_ring->wq_id = %d.\n", tx_ring
->wq_id
);
1178 printk(KERN_ERR PFX
"tx_ring->q = %p.\n", tx_ring
->q
);
1179 printk(KERN_ERR PFX
"tx_ring->tx_count = %d.\n",
1180 atomic_read(&tx_ring
->tx_count
));
1183 void ql_dump_ricb(struct ricb
*ricb
)
1187 "===================== Dumping ricb ===============.\n");
1188 printk(KERN_ERR PFX
"Dumping ricb stuff...\n");
1190 printk(KERN_ERR PFX
"ricb->base_cq = %d.\n", ricb
->base_cq
& 0x1f);
1191 printk(KERN_ERR PFX
"ricb->flags = %s%s%s%s%s%s%s%s%s.\n",
1192 ricb
->base_cq
& RSS_L4K
? "RSS_L4K " : "",
1193 ricb
->flags
& RSS_L6K
? "RSS_L6K " : "",
1194 ricb
->flags
& RSS_LI
? "RSS_LI " : "",
1195 ricb
->flags
& RSS_LB
? "RSS_LB " : "",
1196 ricb
->flags
& RSS_LM
? "RSS_LM " : "",
1197 ricb
->flags
& RSS_RI4
? "RSS_RI4 " : "",
1198 ricb
->flags
& RSS_RT4
? "RSS_RT4 " : "",
1199 ricb
->flags
& RSS_RI6
? "RSS_RI6 " : "",
1200 ricb
->flags
& RSS_RT6
? "RSS_RT6 " : "");
1201 printk(KERN_ERR PFX
"ricb->mask = 0x%.04x.\n", le16_to_cpu(ricb
->mask
));
1202 for (i
= 0; i
< 16; i
++)
1203 printk(KERN_ERR PFX
"ricb->hash_cq_id[%d] = 0x%.08x.\n", i
,
1204 le32_to_cpu(ricb
->hash_cq_id
[i
]));
1205 for (i
= 0; i
< 10; i
++)
1206 printk(KERN_ERR PFX
"ricb->ipv6_hash_key[%d] = 0x%.08x.\n", i
,
1207 le32_to_cpu(ricb
->ipv6_hash_key
[i
]));
1208 for (i
= 0; i
< 4; i
++)
1209 printk(KERN_ERR PFX
"ricb->ipv4_hash_key[%d] = 0x%.08x.\n", i
,
1210 le32_to_cpu(ricb
->ipv4_hash_key
[i
]));
1213 void ql_dump_cqicb(struct cqicb
*cqicb
)
1215 printk(KERN_ERR PFX
"Dumping cqicb stuff...\n");
1217 printk(KERN_ERR PFX
"cqicb->msix_vect = %d.\n", cqicb
->msix_vect
);
1218 printk(KERN_ERR PFX
"cqicb->flags = %x.\n", cqicb
->flags
);
1219 printk(KERN_ERR PFX
"cqicb->len = %d.\n", le16_to_cpu(cqicb
->len
));
1220 printk(KERN_ERR PFX
"cqicb->addr = 0x%llx.\n",
1221 (unsigned long long) le64_to_cpu(cqicb
->addr
));
1222 printk(KERN_ERR PFX
"cqicb->prod_idx_addr = 0x%llx.\n",
1223 (unsigned long long) le64_to_cpu(cqicb
->prod_idx_addr
));
1224 printk(KERN_ERR PFX
"cqicb->pkt_delay = 0x%.04x.\n",
1225 le16_to_cpu(cqicb
->pkt_delay
));
1226 printk(KERN_ERR PFX
"cqicb->irq_delay = 0x%.04x.\n",
1227 le16_to_cpu(cqicb
->irq_delay
));
1228 printk(KERN_ERR PFX
"cqicb->lbq_addr = 0x%llx.\n",
1229 (unsigned long long) le64_to_cpu(cqicb
->lbq_addr
));
1230 printk(KERN_ERR PFX
"cqicb->lbq_buf_size = 0x%.04x.\n",
1231 le16_to_cpu(cqicb
->lbq_buf_size
));
1232 printk(KERN_ERR PFX
"cqicb->lbq_len = 0x%.04x.\n",
1233 le16_to_cpu(cqicb
->lbq_len
));
1234 printk(KERN_ERR PFX
"cqicb->sbq_addr = 0x%llx.\n",
1235 (unsigned long long) le64_to_cpu(cqicb
->sbq_addr
));
1236 printk(KERN_ERR PFX
"cqicb->sbq_buf_size = 0x%.04x.\n",
1237 le16_to_cpu(cqicb
->sbq_buf_size
));
1238 printk(KERN_ERR PFX
"cqicb->sbq_len = 0x%.04x.\n",
1239 le16_to_cpu(cqicb
->sbq_len
));
1242 void ql_dump_rx_ring(struct rx_ring
*rx_ring
)
1244 if (rx_ring
== NULL
)
1247 "===================== Dumping rx_ring %d ===============.\n",
1249 printk(KERN_ERR PFX
"Dumping rx_ring %d, type = %s%s%s.\n",
1250 rx_ring
->cq_id
, rx_ring
->type
== DEFAULT_Q
? "DEFAULT" : "",
1251 rx_ring
->type
== TX_Q
? "OUTBOUND COMPLETIONS" : "",
1252 rx_ring
->type
== RX_Q
? "INBOUND_COMPLETIONS" : "");
1253 printk(KERN_ERR PFX
"rx_ring->cqicb = %p.\n", &rx_ring
->cqicb
);
1254 printk(KERN_ERR PFX
"rx_ring->cq_base = %p.\n", rx_ring
->cq_base
);
1255 printk(KERN_ERR PFX
"rx_ring->cq_base_dma = %llx.\n",
1256 (unsigned long long) rx_ring
->cq_base_dma
);
1257 printk(KERN_ERR PFX
"rx_ring->cq_size = %d.\n", rx_ring
->cq_size
);
1258 printk(KERN_ERR PFX
"rx_ring->cq_len = %d.\n", rx_ring
->cq_len
);
1260 "rx_ring->prod_idx_sh_reg, addr = 0x%p, value = %d.\n",
1261 rx_ring
->prod_idx_sh_reg
,
1262 rx_ring
->prod_idx_sh_reg
1263 ? ql_read_sh_reg(rx_ring
->prod_idx_sh_reg
) : 0);
1264 printk(KERN_ERR PFX
"rx_ring->prod_idx_sh_reg_dma = %llx.\n",
1265 (unsigned long long) rx_ring
->prod_idx_sh_reg_dma
);
1266 printk(KERN_ERR PFX
"rx_ring->cnsmr_idx_db_reg = %p.\n",
1267 rx_ring
->cnsmr_idx_db_reg
);
1268 printk(KERN_ERR PFX
"rx_ring->cnsmr_idx = %d.\n", rx_ring
->cnsmr_idx
);
1269 printk(KERN_ERR PFX
"rx_ring->curr_entry = %p.\n", rx_ring
->curr_entry
);
1270 printk(KERN_ERR PFX
"rx_ring->valid_db_reg = %p.\n",
1271 rx_ring
->valid_db_reg
);
1273 printk(KERN_ERR PFX
"rx_ring->lbq_base = %p.\n", rx_ring
->lbq_base
);
1274 printk(KERN_ERR PFX
"rx_ring->lbq_base_dma = %llx.\n",
1275 (unsigned long long) rx_ring
->lbq_base_dma
);
1276 printk(KERN_ERR PFX
"rx_ring->lbq_base_indirect = %p.\n",
1277 rx_ring
->lbq_base_indirect
);
1278 printk(KERN_ERR PFX
"rx_ring->lbq_base_indirect_dma = %llx.\n",
1279 (unsigned long long) rx_ring
->lbq_base_indirect_dma
);
1280 printk(KERN_ERR PFX
"rx_ring->lbq = %p.\n", rx_ring
->lbq
);
1281 printk(KERN_ERR PFX
"rx_ring->lbq_len = %d.\n", rx_ring
->lbq_len
);
1282 printk(KERN_ERR PFX
"rx_ring->lbq_size = %d.\n", rx_ring
->lbq_size
);
1283 printk(KERN_ERR PFX
"rx_ring->lbq_prod_idx_db_reg = %p.\n",
1284 rx_ring
->lbq_prod_idx_db_reg
);
1285 printk(KERN_ERR PFX
"rx_ring->lbq_prod_idx = %d.\n",
1286 rx_ring
->lbq_prod_idx
);
1287 printk(KERN_ERR PFX
"rx_ring->lbq_curr_idx = %d.\n",
1288 rx_ring
->lbq_curr_idx
);
1289 printk(KERN_ERR PFX
"rx_ring->lbq_clean_idx = %d.\n",
1290 rx_ring
->lbq_clean_idx
);
1291 printk(KERN_ERR PFX
"rx_ring->lbq_free_cnt = %d.\n",
1292 rx_ring
->lbq_free_cnt
);
1293 printk(KERN_ERR PFX
"rx_ring->lbq_buf_size = %d.\n",
1294 rx_ring
->lbq_buf_size
);
1296 printk(KERN_ERR PFX
"rx_ring->sbq_base = %p.\n", rx_ring
->sbq_base
);
1297 printk(KERN_ERR PFX
"rx_ring->sbq_base_dma = %llx.\n",
1298 (unsigned long long) rx_ring
->sbq_base_dma
);
1299 printk(KERN_ERR PFX
"rx_ring->sbq_base_indirect = %p.\n",
1300 rx_ring
->sbq_base_indirect
);
1301 printk(KERN_ERR PFX
"rx_ring->sbq_base_indirect_dma = %llx.\n",
1302 (unsigned long long) rx_ring
->sbq_base_indirect_dma
);
1303 printk(KERN_ERR PFX
"rx_ring->sbq = %p.\n", rx_ring
->sbq
);
1304 printk(KERN_ERR PFX
"rx_ring->sbq_len = %d.\n", rx_ring
->sbq_len
);
1305 printk(KERN_ERR PFX
"rx_ring->sbq_size = %d.\n", rx_ring
->sbq_size
);
1306 printk(KERN_ERR PFX
"rx_ring->sbq_prod_idx_db_reg addr = %p.\n",
1307 rx_ring
->sbq_prod_idx_db_reg
);
1308 printk(KERN_ERR PFX
"rx_ring->sbq_prod_idx = %d.\n",
1309 rx_ring
->sbq_prod_idx
);
1310 printk(KERN_ERR PFX
"rx_ring->sbq_curr_idx = %d.\n",
1311 rx_ring
->sbq_curr_idx
);
1312 printk(KERN_ERR PFX
"rx_ring->sbq_clean_idx = %d.\n",
1313 rx_ring
->sbq_clean_idx
);
1314 printk(KERN_ERR PFX
"rx_ring->sbq_free_cnt = %d.\n",
1315 rx_ring
->sbq_free_cnt
);
1316 printk(KERN_ERR PFX
"rx_ring->sbq_buf_size = %d.\n",
1317 rx_ring
->sbq_buf_size
);
1318 printk(KERN_ERR PFX
"rx_ring->cq_id = %d.\n", rx_ring
->cq_id
);
1319 printk(KERN_ERR PFX
"rx_ring->irq = %d.\n", rx_ring
->irq
);
1320 printk(KERN_ERR PFX
"rx_ring->cpu = %d.\n", rx_ring
->cpu
);
1321 printk(KERN_ERR PFX
"rx_ring->qdev = %p.\n", rx_ring
->qdev
);
1324 void ql_dump_hw_cb(struct ql_adapter
*qdev
, int size
, u32 bit
, u16 q_id
)
1328 printk(KERN_ERR PFX
"%s: Enter.\n", __func__
);
1330 ptr
= kmalloc(size
, GFP_ATOMIC
);
1332 printk(KERN_ERR PFX
"%s: Couldn't allocate a buffer.\n",
1337 if (ql_write_cfg(qdev
, ptr
, size
, bit
, q_id
)) {
1338 printk(KERN_ERR
"%s: Failed to upload control block!\n",
1344 ql_dump_wqicb((struct wqicb
*)ptr
);
1347 ql_dump_cqicb((struct cqicb
*)ptr
);
1350 ql_dump_ricb((struct ricb
*)ptr
);
1353 printk(KERN_ERR PFX
"%s: Invalid bit value = %x.\n",
1363 void ql_dump_tx_desc(struct tx_buf_desc
*tbd
)
1365 printk(KERN_ERR PFX
"tbd->addr = 0x%llx\n",
1366 le64_to_cpu((u64
) tbd
->addr
));
1367 printk(KERN_ERR PFX
"tbd->len = %d\n",
1368 le32_to_cpu(tbd
->len
& TX_DESC_LEN_MASK
));
1369 printk(KERN_ERR PFX
"tbd->flags = %s %s\n",
1370 tbd
->len
& TX_DESC_C
? "C" : ".",
1371 tbd
->len
& TX_DESC_E
? "E" : ".");
1373 printk(KERN_ERR PFX
"tbd->addr = 0x%llx\n",
1374 le64_to_cpu((u64
) tbd
->addr
));
1375 printk(KERN_ERR PFX
"tbd->len = %d\n",
1376 le32_to_cpu(tbd
->len
& TX_DESC_LEN_MASK
));
1377 printk(KERN_ERR PFX
"tbd->flags = %s %s\n",
1378 tbd
->len
& TX_DESC_C
? "C" : ".",
1379 tbd
->len
& TX_DESC_E
? "E" : ".");
1381 printk(KERN_ERR PFX
"tbd->addr = 0x%llx\n",
1382 le64_to_cpu((u64
) tbd
->addr
));
1383 printk(KERN_ERR PFX
"tbd->len = %d\n",
1384 le32_to_cpu(tbd
->len
& TX_DESC_LEN_MASK
));
1385 printk(KERN_ERR PFX
"tbd->flags = %s %s\n",
1386 tbd
->len
& TX_DESC_C
? "C" : ".",
1387 tbd
->len
& TX_DESC_E
? "E" : ".");
1391 void ql_dump_ob_mac_iocb(struct ob_mac_iocb_req
*ob_mac_iocb
)
1393 struct ob_mac_tso_iocb_req
*ob_mac_tso_iocb
=
1394 (struct ob_mac_tso_iocb_req
*)ob_mac_iocb
;
1395 struct tx_buf_desc
*tbd
;
1398 printk(KERN_ERR PFX
"%s\n", __func__
);
1399 printk(KERN_ERR PFX
"opcode = %s\n",
1400 (ob_mac_iocb
->opcode
== OPCODE_OB_MAC_IOCB
) ? "MAC" : "TSO");
1401 printk(KERN_ERR PFX
"flags1 = %s %s %s %s %s\n",
1402 ob_mac_tso_iocb
->flags1
& OB_MAC_TSO_IOCB_OI
? "OI" : "",
1403 ob_mac_tso_iocb
->flags1
& OB_MAC_TSO_IOCB_I
? "I" : "",
1404 ob_mac_tso_iocb
->flags1
& OB_MAC_TSO_IOCB_D
? "D" : "",
1405 ob_mac_tso_iocb
->flags1
& OB_MAC_TSO_IOCB_IP4
? "IP4" : "",
1406 ob_mac_tso_iocb
->flags1
& OB_MAC_TSO_IOCB_IP6
? "IP6" : "");
1407 printk(KERN_ERR PFX
"flags2 = %s %s %s\n",
1408 ob_mac_tso_iocb
->flags2
& OB_MAC_TSO_IOCB_LSO
? "LSO" : "",
1409 ob_mac_tso_iocb
->flags2
& OB_MAC_TSO_IOCB_UC
? "UC" : "",
1410 ob_mac_tso_iocb
->flags2
& OB_MAC_TSO_IOCB_TC
? "TC" : "");
1411 printk(KERN_ERR PFX
"flags3 = %s %s %s \n",
1412 ob_mac_tso_iocb
->flags3
& OB_MAC_TSO_IOCB_IC
? "IC" : "",
1413 ob_mac_tso_iocb
->flags3
& OB_MAC_TSO_IOCB_DFP
? "DFP" : "",
1414 ob_mac_tso_iocb
->flags3
& OB_MAC_TSO_IOCB_V
? "V" : "");
1415 printk(KERN_ERR PFX
"tid = %x\n", ob_mac_iocb
->tid
);
1416 printk(KERN_ERR PFX
"txq_idx = %d\n", ob_mac_iocb
->txq_idx
);
1417 printk(KERN_ERR PFX
"vlan_tci = %x\n", ob_mac_tso_iocb
->vlan_tci
);
1418 if (ob_mac_iocb
->opcode
== OPCODE_OB_MAC_TSO_IOCB
) {
1419 printk(KERN_ERR PFX
"frame_len = %d\n",
1420 le32_to_cpu(ob_mac_tso_iocb
->frame_len
));
1421 printk(KERN_ERR PFX
"mss = %d\n",
1422 le16_to_cpu(ob_mac_tso_iocb
->mss
));
1423 printk(KERN_ERR PFX
"prot_hdr_len = %d\n",
1424 le16_to_cpu(ob_mac_tso_iocb
->total_hdrs_len
));
1425 printk(KERN_ERR PFX
"hdr_offset = 0x%.04x\n",
1426 le16_to_cpu(ob_mac_tso_iocb
->net_trans_offset
));
1427 frame_len
= le32_to_cpu(ob_mac_tso_iocb
->frame_len
);
1429 printk(KERN_ERR PFX
"frame_len = %d\n",
1430 le16_to_cpu(ob_mac_iocb
->frame_len
));
1431 frame_len
= le16_to_cpu(ob_mac_iocb
->frame_len
);
1433 tbd
= &ob_mac_iocb
->tbd
[0];
1434 ql_dump_tx_desc(tbd
);
1437 void ql_dump_ob_mac_rsp(struct ob_mac_iocb_rsp
*ob_mac_rsp
)
1439 printk(KERN_ERR PFX
"%s\n", __func__
);
1440 printk(KERN_ERR PFX
"opcode = %d\n", ob_mac_rsp
->opcode
);
1441 printk(KERN_ERR PFX
"flags = %s %s %s %s %s %s %s\n",
1442 ob_mac_rsp
->flags1
& OB_MAC_IOCB_RSP_OI
? "OI" : ".",
1443 ob_mac_rsp
->flags1
& OB_MAC_IOCB_RSP_I
? "I" : ".",
1444 ob_mac_rsp
->flags1
& OB_MAC_IOCB_RSP_E
? "E" : ".",
1445 ob_mac_rsp
->flags1
& OB_MAC_IOCB_RSP_S
? "S" : ".",
1446 ob_mac_rsp
->flags1
& OB_MAC_IOCB_RSP_L
? "L" : ".",
1447 ob_mac_rsp
->flags1
& OB_MAC_IOCB_RSP_P
? "P" : ".",
1448 ob_mac_rsp
->flags2
& OB_MAC_IOCB_RSP_B
? "B" : ".");
1449 printk(KERN_ERR PFX
"tid = %x\n", ob_mac_rsp
->tid
);
1454 void ql_dump_ib_mac_rsp(struct ib_mac_iocb_rsp
*ib_mac_rsp
)
1456 printk(KERN_ERR PFX
"%s\n", __func__
);
1457 printk(KERN_ERR PFX
"opcode = 0x%x\n", ib_mac_rsp
->opcode
);
1458 printk(KERN_ERR PFX
"flags1 = %s%s%s%s%s%s\n",
1459 ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_OI
? "OI " : "",
1460 ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_I
? "I " : "",
1461 ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_TE
? "TE " : "",
1462 ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_NU
? "NU " : "",
1463 ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_IE
? "IE " : "",
1464 ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_B
? "B " : "");
1466 if (ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_M_MASK
)
1467 printk(KERN_ERR PFX
"%s%s%s Multicast.\n",
1468 (ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_M_MASK
) ==
1469 IB_MAC_IOCB_RSP_M_HASH
? "Hash" : "",
1470 (ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_M_MASK
) ==
1471 IB_MAC_IOCB_RSP_M_REG
? "Registered" : "",
1472 (ib_mac_rsp
->flags1
& IB_MAC_IOCB_RSP_M_MASK
) ==
1473 IB_MAC_IOCB_RSP_M_PROM
? "Promiscuous" : "");
1475 printk(KERN_ERR PFX
"flags2 = %s%s%s%s%s\n",
1476 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_P
) ? "P " : "",
1477 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_V
) ? "V " : "",
1478 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_U
) ? "U " : "",
1479 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_T
) ? "T " : "",
1480 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_FO
) ? "FO " : "");
1482 if (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_ERR_MASK
)
1483 printk(KERN_ERR PFX
"%s%s%s%s%s error.\n",
1484 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_ERR_MASK
) ==
1485 IB_MAC_IOCB_RSP_ERR_OVERSIZE
? "oversize" : "",
1486 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_ERR_MASK
) ==
1487 IB_MAC_IOCB_RSP_ERR_UNDERSIZE
? "undersize" : "",
1488 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_ERR_MASK
) ==
1489 IB_MAC_IOCB_RSP_ERR_PREAMBLE
? "preamble" : "",
1490 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_ERR_MASK
) ==
1491 IB_MAC_IOCB_RSP_ERR_FRAME_LEN
? "frame length" : "",
1492 (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_ERR_MASK
) ==
1493 IB_MAC_IOCB_RSP_ERR_CRC
? "CRC" : "");
1495 printk(KERN_ERR PFX
"flags3 = %s%s.\n",
1496 ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_DS
? "DS " : "",
1497 ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_DL
? "DL " : "");
1499 if (ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_RSS_MASK
)
1500 printk(KERN_ERR PFX
"RSS flags = %s%s%s%s.\n",
1501 ((ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_RSS_MASK
) ==
1502 IB_MAC_IOCB_RSP_M_IPV4
) ? "IPv4 RSS" : "",
1503 ((ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_RSS_MASK
) ==
1504 IB_MAC_IOCB_RSP_M_IPV6
) ? "IPv6 RSS " : "",
1505 ((ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_RSS_MASK
) ==
1506 IB_MAC_IOCB_RSP_M_TCP_V4
) ? "TCP/IPv4 RSS" : "",
1507 ((ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_RSS_MASK
) ==
1508 IB_MAC_IOCB_RSP_M_TCP_V6
) ? "TCP/IPv6 RSS" : "");
1510 printk(KERN_ERR PFX
"data_len = %d\n",
1511 le32_to_cpu(ib_mac_rsp
->data_len
));
1512 printk(KERN_ERR PFX
"data_addr = 0x%llx\n",
1513 (unsigned long long) le64_to_cpu(ib_mac_rsp
->data_addr
));
1514 if (ib_mac_rsp
->flags3
& IB_MAC_IOCB_RSP_RSS_MASK
)
1515 printk(KERN_ERR PFX
"rss = %x\n",
1516 le32_to_cpu(ib_mac_rsp
->rss
));
1517 if (ib_mac_rsp
->flags2
& IB_MAC_IOCB_RSP_V
)
1518 printk(KERN_ERR PFX
"vlan_id = %x\n",
1519 le16_to_cpu(ib_mac_rsp
->vlan_id
));
1521 printk(KERN_ERR PFX
"flags4 = %s%s%s.\n",
1522 ib_mac_rsp
->flags4
& IB_MAC_IOCB_RSP_HV
? "HV " : "",
1523 ib_mac_rsp
->flags4
& IB_MAC_IOCB_RSP_HS
? "HS " : "",
1524 ib_mac_rsp
->flags4
& IB_MAC_IOCB_RSP_HL
? "HL " : "");
1526 if (ib_mac_rsp
->flags4
& IB_MAC_IOCB_RSP_HV
) {
1527 printk(KERN_ERR PFX
"hdr length = %d.\n",
1528 le32_to_cpu(ib_mac_rsp
->hdr_len
));
1529 printk(KERN_ERR PFX
"hdr addr = 0x%llx.\n",
1530 (unsigned long long) le64_to_cpu(ib_mac_rsp
->hdr_addr
));
1536 void ql_dump_all(struct ql_adapter
*qdev
)
1542 for (i
= 0; i
< qdev
->tx_ring_count
; i
++) {
1543 QL_DUMP_TX_RING(&qdev
->tx_ring
[i
]);
1544 QL_DUMP_WQICB((struct wqicb
*)&qdev
->tx_ring
[i
]);
1546 for (i
= 0; i
< qdev
->rx_ring_count
; i
++) {
1547 QL_DUMP_RX_RING(&qdev
->rx_ring
[i
]);
1548 QL_DUMP_CQICB((struct cqicb
*)&qdev
->rx_ring
[i
]);