浏览代码

RDMA/nes: In nes_post_recv() always set bad_wr on error

On error, set bad_wr in nes_post_recv().  Stop processing ib_wr queue
when an error is detected.

Signed-off-by: Frank Zago <fzago@systemfabricworks.com>
Signed-off-by: Chien Tung <chien.tin.tung@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Frank Zago 15 年之前
父节点
当前提交
4293fdc115
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      drivers/infiniband/hw/nes/nes_verbs.c

+ 5 - 2
drivers/infiniband/hw/nes/nes_verbs.c

@@ -3554,8 +3554,10 @@ static int nes_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *ib_wr,
 	u32 counter;
 	u32 counter;
 	u32 total_payload_length;
 	u32 total_payload_length;
 
 
-	if (nesqp->ibqp_state > IB_QPS_RTS)
-		return -EINVAL;
+	if (nesqp->ibqp_state > IB_QPS_RTS) {
+		err = -EINVAL;
+		goto out;
+	}
 
 
 	spin_lock_irqsave(&nesqp->lock, flags);
 	spin_lock_irqsave(&nesqp->lock, flags);
 
 
@@ -3618,6 +3620,7 @@ static int nes_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *ib_wr,
 
 
 	spin_unlock_irqrestore(&nesqp->lock, flags);
 	spin_unlock_irqrestore(&nesqp->lock, flags);
 
 
+out:
 	if (err)
 	if (err)
 		*bad_wr = ib_wr;
 		*bad_wr = ib_wr;
 	return err;
 	return err;