RDMA/i40iw: Set vendor_err only if there is an actual error
authorIsmail, Mustafa <mustafa.ismail@intel.com>
Mon, 18 Apr 2016 15:33:00 +0000 (10:33 -0500)
committerDoug Ledford <dledford@redhat.com>
Thu, 28 Apr 2016 20:32:53 +0000 (16:32 -0400)
Add a check for cq_poll_info.error before setting vendor_err
instead of always setting it.

Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com>
Signed-off-by: Faisal Latif <faisal.latif@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/i40iw/i40iw_verbs.c

index aa297365cdde501f3fe1589b9942b2146134001c..d3b4b58147d285a79d431ea2bc8a86122f64a583 100644 (file)
@@ -2049,10 +2049,12 @@ static int i40iw_poll_cq(struct ib_cq *ibcq,
                }
                entry->wc_flags = 0;
                entry->wr_id = cq_poll_info.wr_id;
-               if (!cq_poll_info.error)
-                       entry->status = IB_WC_SUCCESS;
-               else
+               if (cq_poll_info.error) {
                        entry->status = IB_WC_WR_FLUSH_ERR;
+                       entry->vendor_err = cq_poll_info.major_err << 16 | cq_poll_info.minor_err;
+               } else {
+                       entry->status = IB_WC_SUCCESS;
+               }
 
                switch (cq_poll_info.op_type) {
                case I40IW_OP_TYPE_RDMA_WRITE:
@@ -2076,8 +2078,6 @@ static int i40iw_poll_cq(struct ib_cq *ibcq,
                        break;
                }
 
-               entry->vendor_err =
-                   cq_poll_info.major_err << 16 | cq_poll_info.minor_err;
                entry->ex.imm_data = 0;
                qp = (struct i40iw_sc_qp *)cq_poll_info.qp_handle;
                entry->qp = (struct ib_qp *)qp->back_qp;