aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2005-10-27 19:03:37 -0400
committerJames Bottomley <jejb@mulgrave.(none)>2005-10-28 20:35:25 -0400
commit91ca7b01ecc916632202180569a7ddbfccfc3f05 (patch)
treed26c8af7ba9d06f6b04e85270dbce0dad0624668 /drivers/scsi/qla2xxx
parentf9a2d2e0c89f73f0203fa796101089c2bce31974 (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.c10
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c7
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
506static int
507qla2x00_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
506struct fc_function_template qla2xxx_transport_functions = { 515struct 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
531void 541void
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) ||