|
@@ -4400,6 +4400,12 @@ static int _mlx5_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
|
|
|
u8 next_fence = 0;
|
|
|
u8 fence;
|
|
|
|
|
|
+ if (unlikely(mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR &&
|
|
|
+ !drain)) {
|
|
|
+ *bad_wr = wr;
|
|
|
+ return -EIO;
|
|
|
+ }
|
|
|
+
|
|
|
if (unlikely(ibqp->qp_type == IB_QPT_GSI))
|
|
|
return mlx5_ib_gsi_post_send(ibqp, wr, bad_wr);
|
|
|
|
|
@@ -4409,13 +4415,6 @@ static int _mlx5_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
|
|
|
|
|
|
spin_lock_irqsave(&qp->sq.lock, flags);
|
|
|
|
|
|
- if (mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR && !drain) {
|
|
|
- err = -EIO;
|
|
|
- *bad_wr = wr;
|
|
|
- nreq = 0;
|
|
|
- goto out;
|
|
|
- }
|
|
|
-
|
|
|
for (nreq = 0; wr; nreq++, wr = wr->next) {
|
|
|
if (unlikely(wr->opcode >= ARRAY_SIZE(mlx5_ib_opcode))) {
|
|
|
mlx5_ib_warn(dev, "\n");
|
|
@@ -4729,18 +4728,17 @@ static int _mlx5_ib_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
|
|
|
int ind;
|
|
|
int i;
|
|
|
|
|
|
+ if (unlikely(mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR &&
|
|
|
+ !drain)) {
|
|
|
+ *bad_wr = wr;
|
|
|
+ return -EIO;
|
|
|
+ }
|
|
|
+
|
|
|
if (unlikely(ibqp->qp_type == IB_QPT_GSI))
|
|
|
return mlx5_ib_gsi_post_recv(ibqp, wr, bad_wr);
|
|
|
|
|
|
spin_lock_irqsave(&qp->rq.lock, flags);
|
|
|
|
|
|
- if (mdev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR && !drain) {
|
|
|
- err = -EIO;
|
|
|
- *bad_wr = wr;
|
|
|
- nreq = 0;
|
|
|
- goto out;
|
|
|
- }
|
|
|
-
|
|
|
ind = qp->rq.head & (qp->rq.wqe_cnt - 1);
|
|
|
|
|
|
for (nreq = 0; wr; nreq++, wr = wr->next) {
|