Commit 392b7d2f authored by Jitendra Bhivare's avatar Jitendra Bhivare Committed by Martin K. Petersen

scsi: be2iscsi: Set WRB invalid bit for SkyHawk

invalid bit in WRB indicates to FW that IO was invalidated before WRB
was fetched from host memory.

For SkyHawk, this invalid bit in WRB is at a different offset.
Use amap_iscsi_wrb_v2 to mark invalid bit for SkyHawk.
Signed-off-by: default avatarJitendra Bhivare <jitendra.bhivare@broadcom.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent faa0a22d
...@@ -244,8 +244,13 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc) ...@@ -244,8 +244,13 @@ static int beiscsi_eh_abort(struct scsi_cmnd *sc)
beiscsi_conn = conn->dd_data; beiscsi_conn = conn->dd_data;
phba = beiscsi_conn->phba; phba = beiscsi_conn->phba;
/* mark WRB invalid which have been not processed by FW yet */ /* mark WRB invalid which have been not processed by FW yet */
if (is_chip_be2_be3r(phba)) {
AMAP_SET_BITS(struct amap_iscsi_wrb, invld, AMAP_SET_BITS(struct amap_iscsi_wrb, invld,
abrt_io_task->pwrb_handle->pwrb, 1); abrt_io_task->pwrb_handle->pwrb, 1);
} else {
AMAP_SET_BITS(struct amap_iscsi_wrb_v2, invld,
abrt_io_task->pwrb_handle->pwrb, 1);
}
inv_tbl.cid = beiscsi_conn->beiscsi_conn_cid; inv_tbl.cid = beiscsi_conn->beiscsi_conn_cid;
inv_tbl.icd = abrt_io_task->psgl_handle->sgl_index; inv_tbl.icd = abrt_io_task->psgl_handle->sgl_index;
spin_unlock_bh(&session->back_lock); spin_unlock_bh(&session->back_lock);
...@@ -321,9 +326,13 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc) ...@@ -321,9 +326,13 @@ static int beiscsi_eh_device_reset(struct scsi_cmnd *sc)
__iscsi_get_task(task); __iscsi_get_task(task);
io_task = task->dd_data; io_task = task->dd_data;
/* mark WRB invalid which have been not processed by FW yet */ /* mark WRB invalid which have been not processed by FW yet */
if (is_chip_be2_be3r(phba)) {
AMAP_SET_BITS(struct amap_iscsi_wrb, invld, AMAP_SET_BITS(struct amap_iscsi_wrb, invld,
io_task->pwrb_handle->pwrb, io_task->pwrb_handle->pwrb, 1);
1); } else {
AMAP_SET_BITS(struct amap_iscsi_wrb_v2, invld,
io_task->pwrb_handle->pwrb, 1);
}
inv_tbl->tbl[nents].cid = beiscsi_conn->beiscsi_conn_cid; inv_tbl->tbl[nents].cid = beiscsi_conn->beiscsi_conn_cid;
inv_tbl->tbl[nents].icd = io_task->psgl_handle->sgl_index; inv_tbl->tbl[nents].icd = io_task->psgl_handle->sgl_index;
......
...@@ -840,7 +840,7 @@ struct amap_iscsi_wrb_v2 { ...@@ -840,7 +840,7 @@ struct amap_iscsi_wrb_v2 {
u8 diff_enbl; /* DWORD 11 */ u8 diff_enbl; /* DWORD 11 */
u8 u_run; /* DWORD 11 */ u8 u_run; /* DWORD 11 */
u8 o_run; /* DWORD 11 */ u8 o_run; /* DWORD 11 */
u8 invalid; /* DWORD 11 */ u8 invld; /* DWORD 11 */
u8 dsp; /* DWORD 11 */ u8 dsp; /* DWORD 11 */
u8 dmsg; /* DWORD 11 */ u8 dmsg; /* DWORD 11 */
u8 rsvd4; /* DWORD 11 */ u8 rsvd4; /* DWORD 11 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment