mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	[SCSI] qla2xxx: Add ISPFX00 specific bus reset routine.
Signed-off-by: Armen Baloyan <armen.baloyan@qlogic.com> Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
		
							parent
							
								
									e601d778d5
								
							
						
					
					
						commit
						5854771e31
					
				| @ -38,7 +38,7 @@ | ||||
|  * |                              |                    | 0x70ad-0x70ae, | | ||||
|  * |                              |                    | 0x70d1-0x70da, | | ||||
|  * |                              |                    | 0x7047,0x703b	| | ||||
|  * | Task Management              |       0x803c       | 0x8025-0x8026  | | ||||
|  * | Task Management              |       0x803d       | 0x8025-0x8026  | | ||||
|  * |                              |                    | 0x800b,0x8039  | | ||||
|  * | AER/EEH                      |       0x9011       |		| | ||||
|  * | Virtual Port                 |       0xa007       |		| | ||||
|  | ||||
| @ -605,6 +605,7 @@ extern void qlafx00_abort_iocb(srb_t *, struct abort_iocb_entry_fx00 *); | ||||
| extern void qlafx00_fxdisc_iocb(srb_t *, struct fxdisc_entry_fx00 *); | ||||
| extern void qlafx00_timer_routine(scsi_qla_host_t *); | ||||
| extern int qlafx00_rescan_isp(scsi_qla_host_t *); | ||||
| extern int qlafx00_loop_reset(scsi_qla_host_t *vha); | ||||
| 
 | ||||
| /* qla82xx related functions */ | ||||
| 
 | ||||
|  | ||||
| @ -775,6 +775,29 @@ qlafx00_lun_reset(fc_port_t *fcport, unsigned int l, int tag) | ||||
| 	return qlafx00_async_tm_cmd(fcport, TCF_LUN_RESET, l, tag); | ||||
| } | ||||
| 
 | ||||
| int | ||||
| qlafx00_loop_reset(scsi_qla_host_t *vha) | ||||
| { | ||||
| 	int ret; | ||||
| 	struct fc_port *fcport; | ||||
| 	struct qla_hw_data *ha = vha->hw; | ||||
| 
 | ||||
| 	if (ql2xtargetreset) { | ||||
| 		list_for_each_entry(fcport, &vha->vp_fcports, list) { | ||||
| 			if (fcport->port_type != FCT_TARGET) | ||||
| 				continue; | ||||
| 
 | ||||
| 			ret = ha->isp_ops->target_reset(fcport, 0, 0); | ||||
| 			if (ret != QLA_SUCCESS) { | ||||
| 				ql_dbg(ql_dbg_taskm, vha, 0x803d, | ||||
| 				    "Bus Reset failed: Reset=%d " | ||||
| 				    "d_id=%x.\n", ret, fcport->d_id.b24); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return QLA_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| int | ||||
| qlafx00_iospace_config(struct qla_hw_data *ha) | ||||
| { | ||||
|  | ||||
| @ -1303,6 +1303,10 @@ qla2x00_loop_reset(scsi_qla_host_t *vha) | ||||
| 	struct fc_port *fcport; | ||||
| 	struct qla_hw_data *ha = vha->hw; | ||||
| 
 | ||||
| 	if (IS_QLAFX00(ha)) { | ||||
| 		return qlafx00_loop_reset(vha); | ||||
| 	} | ||||
| 
 | ||||
| 	if (ql2xtargetreset == 1 && ha->flags.enable_target_reset) { | ||||
| 		list_for_each_entry(fcport, &vha->vp_fcports, list) { | ||||
| 			if (fcport->port_type != FCT_TARGET) | ||||
| @ -1311,14 +1315,12 @@ qla2x00_loop_reset(scsi_qla_host_t *vha) | ||||
| 			ret = ha->isp_ops->target_reset(fcport, 0, 0); | ||||
| 			if (ret != QLA_SUCCESS) { | ||||
| 				ql_dbg(ql_dbg_taskm, vha, 0x802c, | ||||
| 				    "Bus Reset failed: Target Reset=%d " | ||||
| 				    "Bus Reset failed: Reset=%d " | ||||
| 				    "d_id=%x.\n", ret, fcport->d_id.b24); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (IS_QLAFX00(ha)) | ||||
| 		return QLA_SUCCESS; | ||||
| 
 | ||||
| 	if (ha->flags.enable_lip_full_login && !IS_CNA_CAPABLE(ha)) { | ||||
| 		atomic_set(&vha->loop_state, LOOP_DOWN); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Armen Baloyan
						Armen Baloyan