diff mbox series

[03/14] qla2xxx: Use correct qpair for ABTS/CMD

Message ID 20180830163550.27288-4-himanshu.madhani@cavium.com (mailing list archive)
State Superseded
Headers show
Series qla2xxx: Driver updates for scsi-misc | expand

Commit Message

Madhani, Himanshu Aug. 30, 2018, 4:35 p.m. UTC
From: Quinn Tran <quinn.tran@cavium.com>

On Abort of initiator scsi command, the abort needs to
follow the same qpair as the the scsi command to prevent
out of order processing.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
---
 drivers/scsi/qla2xxx/qla_init.c | 15 +++++----------
 drivers/scsi/qla2xxx/qla_iocb.c | 12 +++++++-----
 2 files changed, 12 insertions(+), 15 deletions(-)

Comments

kernel test robot Aug. 31, 2018, 4:20 p.m. UTC | #1
Hi Quinn,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on scsi/for-next]
[also build test WARNING on v4.19-rc1 next-20180831]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Himanshu-Madhani/qla2xxx-Driver-updates-for-scsi-misc/20180831-205814
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

   drivers/scsi/qla2xxx/qla_init.c:4921:22: sparse: expression using sizeof(void)
   drivers/scsi/qla2xxx/qla_init.c:4928:37: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] <noident> @@    got ed int [unsigned] [usertype] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:4928:37:    expected unsigned int [unsigned] [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:4928:37:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:4981:35: sparse: cast to restricted __le16
   include/linux/slab.h:631:13: sparse: undefined identifier '__builtin_mul_overflow'
   drivers/scsi/qla2xxx/qla_init.c:422:5: sparse: symbol 'qla_post_els_plogi_work' was not declared. Should it be static?
   drivers/scsi/qla2xxx/qla_init.c:796:39: sparse: restricted __le16 degrades to integer
   drivers/scsi/qla2xxx/qla_init.c:798:47: sparse: restricted __le16 degrades to integer
   drivers/scsi/qla2xxx/qla_init.c:800:28: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [short] <noident> @@    got unsigned] [short] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:800:28:    expected unsigned short [unsigned] [short] <noident>
   drivers/scsi/qla2xxx/qla_init.c:800:28:    got restricted __le16 <noident>
   drivers/scsi/qla2xxx/qla_init.c:918:12: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [usertype] *mb @@    got  short [usertype] *mb @@
   drivers/scsi/qla2xxx/qla_init.c:918:12:    expected unsigned short [usertype] *mb
   drivers/scsi/qla2xxx/qla_init.c:918:12:    got restricted __le16 *<noident>
   drivers/scsi/qla2xxx/qla_init.c:967:19: sparse: incorrect type in initializer (different base types) @@    expected unsigned short [usertype] *mb @@    got  short [usertype] *mb @@
   drivers/scsi/qla2xxx/qla_init.c:967:19:    expected unsigned short [usertype] *mb
   drivers/scsi/qla2xxx/qla_init.c:967:19:    got restricted __le16 *<noident>
   drivers/scsi/qla2xxx/qla_init.c:1136:12: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [usertype] *mb @@    got  short [usertype] *mb @@
   drivers/scsi/qla2xxx/qla_init.c:1136:12:    expected unsigned short [usertype] *mb
   drivers/scsi/qla2xxx/qla_init.c:1136:12:    got restricted __le16 *<noident>
   drivers/scsi/qla2xxx/qla_init.c:1525:6: sparse: symbol 'qla_handle_els_plogi_done' was not declared. Should it be static?
   drivers/scsi/qla2xxx/qla_init.c:1649:32: sparse: incorrect type in assignment (different base types) @@    expected restricted __le16 [usertype] comp_status @@    got e] comp_status @@
   drivers/scsi/qla2xxx/qla_init.c:1649:32:    expected restricted __le16 [usertype] comp_status
   drivers/scsi/qla2xxx/qla_init.c:1649:32:    got int
   drivers/scsi/qla2xxx/qla_init.c:1729:32: sparse: incorrect type in assignment (different base types) @@    expected restricted __le16 [usertype] comp_status @@    got e] comp_status @@
   drivers/scsi/qla2xxx/qla_init.c:1729:32:    expected restricted __le16 [usertype] comp_status
   drivers/scsi/qla2xxx/qla_init.c:1729:32:    got int
>> drivers/scsi/qla2xxx/qla_init.c:1771:36: sparse: incorrect type in assignment (different base types) @@    expected restricted __le16 [usertype] req_que_no @@    got unsignedrestricted __le16 [usertype] req_que_no @@
   drivers/scsi/qla2xxx/qla_init.c:1771:36:    expected restricted __le16 [usertype] req_que_no
   drivers/scsi/qla2xxx/qla_init.c:1771:36:    got unsigned short [unsigned] [usertype] id
   drivers/scsi/qla2xxx/qla_init.c:3221:46: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] version @@    got ed int [unsigned] [usertype] version @@
   drivers/scsi/qla2xxx/qla_init.c:3221:46:    expected unsigned int [unsigned] [usertype] version
   drivers/scsi/qla2xxx/qla_init.c:3221:46:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3223:49: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] fixed_size @@    got ed int [unsigned] [usertype] fixed_size @@
   drivers/scsi/qla2xxx/qla_init.c:3223:49:    expected unsigned int [unsigned] [usertype] fixed_size
   drivers/scsi/qla2xxx/qla_init.c:3223:49:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3224:47: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] mem_size @@    got ed int [unsigned] [usertype] mem_size @@
   drivers/scsi/qla2xxx/qla_init.c:3224:47:    expected unsigned int [unsigned] [usertype] mem_size
   drivers/scsi/qla2xxx/qla_init.c:3224:47:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3225:49: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] req_q_size @@    got ed int [unsigned] [usertype] req_q_size @@
   drivers/scsi/qla2xxx/qla_init.c:3225:49:    expected unsigned int [unsigned] [usertype] req_q_size
   drivers/scsi/qla2xxx/qla_init.c:3225:49:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3226:49: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] rsp_q_size @@    got ed int [unsigned] [usertype] rsp_q_size @@
   drivers/scsi/qla2xxx/qla_init.c:3226:49:    expected unsigned int [unsigned] [usertype] rsp_q_size
   drivers/scsi/qla2xxx/qla_init.c:3226:49:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3228:47: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] eft_size @@    got ed int [unsigned] [usertype] eft_size @@
   drivers/scsi/qla2xxx/qla_init.c:3228:47:    expected unsigned int [unsigned] [usertype] eft_size
   drivers/scsi/qla2xxx/qla_init.c:3228:47:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3229:49: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] eft_addr_l @@    got ed int [unsigned] [usertype] eft_addr_l @@
   drivers/scsi/qla2xxx/qla_init.c:3229:49:    expected unsigned int [unsigned] [usertype] eft_addr_l
   drivers/scsi/qla2xxx/qla_init.c:3229:49:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3230:49: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] eft_addr_h @@    got ed int [unsigned] [usertype] eft_addr_h @@
   drivers/scsi/qla2xxx/qla_init.c:3230:49:    expected unsigned int [unsigned] [usertype] eft_addr_h
   drivers/scsi/qla2xxx/qla_init.c:3230:49:    got restricted __be32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3232:50: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] [usertype] header_size @@    got ed int [unsigned] [usertype] header_size @@
   drivers/scsi/qla2xxx/qla_init.c:3232:50:    expected unsigned int [unsigned] [usertype] header_size
   drivers/scsi/qla2xxx/qla_init.c:3232:50:    got restricted __be32 [usertype] <noident>
   include/linux/slab.h:631:13: sparse: not a function <noident>
   include/linux/slab.h:631:13: sparse: not a function <noident>
   drivers/scsi/qla2xxx/qla_init.c:3796:14: sparse: cast to restricted __le16
   drivers/scsi/qla2xxx/qla_init.c:3800:13: sparse: cast to restricted __le16
   drivers/scsi/qla2xxx/qla_init.c:3801:13: sparse: cast to restricted __le16
   drivers/scsi/qla2xxx/qla_init.c:3802:13: sparse: cast to restricted __le16
   drivers/scsi/qla2xxx/qla_init.c:3818:43: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] request_q_outpointer @@    got  short [unsigned] [usertype] request_q_outpointer @@
   drivers/scsi/qla2xxx/qla_init.c:3818:43:    expected unsigned short [unsigned] [usertype] request_q_outpointer
   drivers/scsi/qla2xxx/qla_init.c:3818:43:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3819:43: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] response_q_inpointer @@    got  short [unsigned] [usertype] response_q_inpointer @@
   drivers/scsi/qla2xxx/qla_init.c:3819:43:    expected unsigned short [unsigned] [usertype] response_q_inpointer
   drivers/scsi/qla2xxx/qla_init.c:3819:43:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3820:39: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] request_q_length @@    got  short [unsigned] [usertype] request_q_length @@
   drivers/scsi/qla2xxx/qla_init.c:3820:39:    expected unsigned short [unsigned] [usertype] request_q_length
   drivers/scsi/qla2xxx/qla_init.c:3820:39:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3821:40: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] response_q_length @@    got  short [unsigned] [usertype] response_q_length @@
   drivers/scsi/qla2xxx/qla_init.c:3821:40:    expected unsigned short [unsigned] [usertype] response_q_length
   drivers/scsi/qla2xxx/qla_init.c:3821:40:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3822:43: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3822:43:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3822:43:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3823:43: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3823:43:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3823:43:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3824:44: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3824:44:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3824:44:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3825:44: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3825:44:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3825:44:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3848:35: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] request_q_outpointer @@    got  short [unsigned] [usertype] request_q_outpointer @@
   drivers/scsi/qla2xxx/qla_init.c:3848:35:    expected unsigned short [unsigned] [usertype] request_q_outpointer
   drivers/scsi/qla2xxx/qla_init.c:3848:35:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3849:35: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] response_q_inpointer @@    got  short [unsigned] [usertype] response_q_inpointer @@
   drivers/scsi/qla2xxx/qla_init.c:3849:35:    expected unsigned short [unsigned] [usertype] response_q_inpointer
   drivers/scsi/qla2xxx/qla_init.c:3849:35:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3850:31: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] request_q_length @@    got  short [unsigned] [usertype] request_q_length @@
   drivers/scsi/qla2xxx/qla_init.c:3850:31:    expected unsigned short [unsigned] [usertype] request_q_length
   drivers/scsi/qla2xxx/qla_init.c:3850:31:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3851:32: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] response_q_length @@    got  short [unsigned] [usertype] response_q_length @@
   drivers/scsi/qla2xxx/qla_init.c:3851:32:    expected unsigned short [unsigned] [usertype] response_q_length
   drivers/scsi/qla2xxx/qla_init.c:3851:32:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3852:35: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3852:35:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3852:35:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3853:35: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3853:35:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3853:35:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3854:36: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3854:36:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3854:36:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3855:36: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3855:36:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3855:36:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3858:31: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] atio_q_inpointer @@    got  short [unsigned] [usertype] atio_q_inpointer @@
   drivers/scsi/qla2xxx/qla_init.c:3858:31:    expected unsigned short [unsigned] [usertype] atio_q_inpointer
   drivers/scsi/qla2xxx/qla_init.c:3858:31:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3859:28: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] atio_q_length @@    got  short [unsigned] [usertype] atio_q_length @@
   drivers/scsi/qla2xxx/qla_init.c:3859:28:    expected unsigned short [unsigned] [usertype] atio_q_length
   drivers/scsi/qla2xxx/qla_init.c:3859:28:    got restricted __le16 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3860:32: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3860:32:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3860:32:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3861:32: sparse: incorrect type in assignment (different base types) @@    expected unsigned int [unsigned] <noident> @@    got restrunsigned int [unsigned] <noident> @@
   drivers/scsi/qla2xxx/qla_init.c:3861:32:    expected unsigned int [unsigned] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3861:32:    got restricted __le32 [usertype] <noident>
   drivers/scsi/qla2xxx/qla_init.c:3864:41: sparse: invalid assignment: |=
   drivers/scsi/qla2xxx/qla_init.c:3864:41:    left side has type unsigned int
   drivers/scsi/qla2xxx/qla_init.c:3864:41:    right side has type restricted __le32
   drivers/scsi/qla2xxx/qla_init.c:3867:26: sparse: incorrect type in assignment (different base types) @@    expected unsigned short [unsigned] [usertype] qos @@    got  short [unsigned] [usertype] qos @@
   drivers/scsi/qla2xxx/qla_init.c:3867:26:    expected unsigned short [unsigned] [usertype] qos

vim +1771 drivers/scsi/qla2xxx/qla_init.c

  1746	
  1747	int
  1748	qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
  1749	{
  1750		scsi_qla_host_t *vha = cmd_sp->vha;
  1751		struct srb_iocb *abt_iocb;
  1752		srb_t *sp;
  1753		int rval = QLA_FUNCTION_FAILED;
  1754	
  1755		sp = qla2xxx_get_qpair_sp(cmd_sp->qpair, cmd_sp->fcport, GFP_KERNEL);
  1756		if (!sp)
  1757			goto done;
  1758	
  1759		abt_iocb = &sp->u.iocb_cmd;
  1760		sp->type = SRB_ABT_CMD;
  1761		sp->name = "abort";
  1762		sp->qpair = cmd_sp->qpair;
  1763		if (wait)
  1764			sp->flags = SRB_WAKEUP_ON_COMP;
  1765	
  1766		abt_iocb->timeout = qla24xx_abort_iocb_timeout;
  1767		init_completion(&abt_iocb->u.abt.comp);
  1768		qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha));
  1769	
  1770		abt_iocb->u.abt.cmd_hndl = cmd_sp->handle;
> 1771		abt_iocb->u.abt.req_que_no = cmd_sp->qpair->req->id;
  1772	
  1773		sp->done = qla24xx_abort_sp_done;
  1774	
  1775		rval = qla2x00_start_sp(sp);
  1776		if (rval != QLA_SUCCESS)
  1777			goto done_free_sp;
  1778	
  1779		ql_dbg(ql_dbg_async, vha, 0x507c,
  1780		    "Abort command issued - hdl=%x, type=%x\n",
  1781		    cmd_sp->handle, cmd_sp->type);
  1782	
  1783		if (wait) {
  1784			wait_for_completion(&abt_iocb->u.abt.comp);
  1785			rval = abt_iocb->u.abt.comp_status == CS_COMPLETE ?
  1786				QLA_SUCCESS : QLA_FUNCTION_FAILED;
  1787		}
  1788	
  1789	done_free_sp:
  1790		sp->free(sp);
  1791	done:
  1792		return rval;
  1793	}
  1794	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 4686fb5f26aa..53c4eb3b9c27 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1747,18 +1747,18 @@  int
 qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
 {
 	scsi_qla_host_t *vha = cmd_sp->vha;
-	fc_port_t *fcport = cmd_sp->fcport;
 	struct srb_iocb *abt_iocb;
 	srb_t *sp;
 	int rval = QLA_FUNCTION_FAILED;
 
-	sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL);
+	sp = qla2xxx_get_qpair_sp(cmd_sp->qpair, cmd_sp->fcport, GFP_KERNEL);
 	if (!sp)
 		goto done;
 
 	abt_iocb = &sp->u.iocb_cmd;
 	sp->type = SRB_ABT_CMD;
 	sp->name = "abort";
+	sp->qpair = cmd_sp->qpair;
 	if (wait)
 		sp->flags = SRB_WAKEUP_ON_COMP;
 
@@ -1767,12 +1767,7 @@  qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
 	qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha));
 
 	abt_iocb->u.abt.cmd_hndl = cmd_sp->handle;
-
-	if (vha->flags.qpairs_available && cmd_sp->qpair)
-		abt_iocb->u.abt.req_que_no =
-		    cpu_to_le16(cmd_sp->qpair->req->id);
-	else
-		abt_iocb->u.abt.req_que_no = cpu_to_le16(vha->req->id);
+	abt_iocb->u.abt.req_que_no = cmd_sp->qpair->req->id;
 
 	sp->done = qla24xx_abort_sp_done;
 
@@ -1781,8 +1776,8 @@  qla24xx_async_abort_cmd(srb_t *cmd_sp, bool wait)
 		goto done_free_sp;
 
 	ql_dbg(ql_dbg_async, vha, 0x507c,
-	    "Abort command issued - hdl=%x, target_id=%x\n",
-	    cmd_sp->handle, fcport->tgt_id);
+	    "Abort command issued - hdl=%x, type=%x\n",
+	    cmd_sp->handle, cmd_sp->type);
 
 	if (wait) {
 		wait_for_completion(&abt_iocb->u.abt.comp);
diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index 119927220299..c699bbb8485b 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -3297,19 +3297,21 @@  qla24xx_abort_iocb(srb_t *sp, struct abort_entry_24xx *abt_iocb)
 {
 	struct srb_iocb *aio = &sp->u.iocb_cmd;
 	scsi_qla_host_t *vha = sp->vha;
-	struct req_que *req = vha->req;
+	struct req_que *req = sp->qpair->req;
 
 	memset(abt_iocb, 0, sizeof(struct abort_entry_24xx));
 	abt_iocb->entry_type = ABORT_IOCB_TYPE;
 	abt_iocb->entry_count = 1;
 	abt_iocb->handle = cpu_to_le32(MAKE_HANDLE(req->id, sp->handle));
-	abt_iocb->nport_handle = cpu_to_le16(sp->fcport->loop_id);
+	if (sp->fcport) {
+		abt_iocb->nport_handle = cpu_to_le16(sp->fcport->loop_id);
+		abt_iocb->port_id[0] = sp->fcport->d_id.b.al_pa;
+		abt_iocb->port_id[1] = sp->fcport->d_id.b.area;
+		abt_iocb->port_id[2] = sp->fcport->d_id.b.domain;
+	}
 	abt_iocb->handle_to_abort =
 	    cpu_to_le32(MAKE_HANDLE(aio->u.abt.req_que_no,
 				    aio->u.abt.cmd_hndl));
-	abt_iocb->port_id[0] = sp->fcport->d_id.b.al_pa;
-	abt_iocb->port_id[1] = sp->fcport->d_id.b.area;
-	abt_iocb->port_id[2] = sp->fcport->d_id.b.domain;
 	abt_iocb->vp_index = vha->vp_idx;
 	abt_iocb->req_que_no = cpu_to_le16(aio->u.abt.req_que_no);
 	/* Send the command to the firmware */