Skip to content

Commit 4b9b7fa

Browse files
Chad Dupuismartinkpetersen
authored andcommitted
scsi: qedf: Improve firmware debug dump handling
Get all firmware debug data instead of just a grc dump. Signed-off-by: Chad Dupuis <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent f9a4a7f commit 4b9b7fa

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

drivers/scsi/qedf/qedf.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ struct qedf_ctx {
367367
#define QEDF_IO_WORK_MIN 64
368368
mempool_t *io_mempool;
369369
struct workqueue_struct *dpc_wq;
370+
struct delayed_work grcdump_work;
370371

371372
u32 slow_sge_ios;
372373
u32 fast_sge_ios;
@@ -499,6 +500,7 @@ extern void qedf_process_seq_cleanup_compl(struct qedf_ctx *qedf,
499500
struct fcoe_cqe *cqe, struct qedf_ioreq *io_req);
500501
extern int qedf_send_flogi(struct qedf_ctx *qedf);
501502
extern void qedf_fp_io_handler(struct work_struct *work);
503+
extern void qedf_wq_grcdump(struct work_struct *work);
502504

503505
#define FCOE_WORD_TO_BYTE 4
504506
#define QEDF_MAX_TASK_NUM 0xFFFF

drivers/scsi/qedf/qedf_dbg.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ qedf_get_grc_dump(struct qed_dev *cdev, const struct qed_common_ops *common,
147147
if (!*buf)
148148
return -EINVAL;
149149

150-
return common->dbg_grc(cdev, *buf, grcsize);
150+
return common->dbg_all_data(cdev, *buf);
151151
}
152152

153153
void

drivers/scsi/qedf/qedf_main.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3008,6 +3008,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
30083008
qedf->link_update_wq = create_workqueue(host_buf);
30093009
INIT_DELAYED_WORK(&qedf->link_update, qedf_handle_link_update);
30103010
INIT_DELAYED_WORK(&qedf->link_recovery, qedf_link_recovery);
3011+
INIT_DELAYED_WORK(&qedf->grcdump_work, qedf_wq_grcdump);
30113012
qedf->fipvlan_retries = qedf_fipvlan_retries;
30123013
/* Set a default prio in case DCBX doesn't converge */
30133014
qedf->prio = QEDF_DEFAULT_PRIO;
@@ -3240,7 +3241,8 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
32403241
* unload process.
32413242
*/
32423243
if (mode != QEDF_MODE_RECOVERY) {
3243-
qedf->grcdump_size = qed_ops->common->dbg_grc_size(qedf->cdev);
3244+
qedf->grcdump_size =
3245+
qed_ops->common->dbg_all_data_size(qedf->cdev);
32443246
if (qedf->grcdump_size) {
32453247
rc = qedf_alloc_grc_dump_buf(&qedf->grcdump,
32463248
qedf->grcdump_size);
@@ -3424,6 +3426,15 @@ static void qedf_remove(struct pci_dev *pdev)
34243426
__qedf_remove(pdev, QEDF_MODE_NORMAL);
34253427
}
34263428

3429+
void qedf_wq_grcdump(struct work_struct *work)
3430+
{
3431+
struct qedf_ctx *qedf =
3432+
container_of(work, struct qedf_ctx, grcdump_work.work);
3433+
3434+
QEDF_ERR(&(qedf->dbg_ctx), "Collecting GRC dump.\n");
3435+
qedf_capture_grc_dump(qedf);
3436+
}
3437+
34273438
/*
34283439
* Module Init/Remove
34293440
*/

0 commit comments

Comments
 (0)