diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2005-10-27 19:03:37 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-10-28 20:35:25 -0400 |
commit | 91ca7b01ecc916632202180569a7ddbfccfc3f05 (patch) | |
tree | d26c8af7ba9d06f6b04e85270dbce0dad0624668 /drivers/scsi/qla2xxx | |
parent | f9a2d2e0c89f73f0203fa796101089c2bce31974 (diff) |
[SCSI] Add an 'Issue LIP' device attribute in fc_transport class
Ok, here's a patch to add such a common API for fc transport users.
Relevant LLD changes (lpfc and qla2xxx) also present.
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_attr.c | 10 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 7 |
2 files changed, 17 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index 49696faa24fa..48e460eef05a 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -503,6 +503,15 @@ qla2x00_set_rport_loss_tmo(struct fc_rport *rport, uint32_t timeout) | |||
503 | rport->dev_loss_tmo = ha->port_down_retry_count + 5; | 503 | rport->dev_loss_tmo = ha->port_down_retry_count + 5; |
504 | } | 504 | } |
505 | 505 | ||
506 | static int | ||
507 | qla2x00_issue_lip(struct Scsi_Host *shost) | ||
508 | { | ||
509 | scsi_qla_host_t *ha = to_qla_host(shost); | ||
510 | |||
511 | set_bit(LOOP_RESET_NEEDED, &ha->dpc_flags); | ||
512 | return 0; | ||
513 | } | ||
514 | |||
506 | struct fc_function_template qla2xxx_transport_functions = { | 515 | struct fc_function_template qla2xxx_transport_functions = { |
507 | 516 | ||
508 | .show_host_node_name = 1, | 517 | .show_host_node_name = 1, |
@@ -526,6 +535,7 @@ struct fc_function_template qla2xxx_transport_functions = { | |||
526 | .set_rport_dev_loss_tmo = qla2x00_set_rport_loss_tmo, | 535 | .set_rport_dev_loss_tmo = qla2x00_set_rport_loss_tmo, |
527 | .show_rport_dev_loss_tmo = 1, | 536 | .show_rport_dev_loss_tmo = 1, |
528 | 537 | ||
538 | .issue_fc_host_lip = qla2x00_issue_lip, | ||
529 | }; | 539 | }; |
530 | 540 | ||
531 | void | 541 | void |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index d9eccdf4f403..b899282a856e 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -2141,6 +2141,12 @@ qla2x00_do_dpc(void *data) | |||
2141 | ha->host_no)); | 2141 | ha->host_no)); |
2142 | } | 2142 | } |
2143 | 2143 | ||
2144 | if (test_and_clear_bit(LOOP_RESET_NEEDED, &ha->dpc_flags)) { | ||
2145 | DEBUG(printk("scsi(%ld): dpc: sched loop_reset()\n", | ||
2146 | ha->host_no)); | ||
2147 | qla2x00_loop_reset(ha); | ||
2148 | } | ||
2149 | |||
2144 | if (test_and_clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) && | 2150 | if (test_and_clear_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) && |
2145 | (!(test_and_set_bit(RESET_ACTIVE, &ha->dpc_flags)))) { | 2151 | (!(test_and_set_bit(RESET_ACTIVE, &ha->dpc_flags)))) { |
2146 | 2152 | ||
@@ -2442,6 +2448,7 @@ qla2x00_timer(scsi_qla_host_t *ha) | |||
2442 | /* Schedule the DPC routine if needed */ | 2448 | /* Schedule the DPC routine if needed */ |
2443 | if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || | 2449 | if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || |
2444 | test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || | 2450 | test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || |
2451 | test_bit(LOOP_RESET_NEEDED, &ha->dpc_flags) || | ||
2445 | start_dpc || | 2452 | start_dpc || |
2446 | test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) || | 2453 | test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) || |
2447 | test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) || | 2454 | test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) || |