X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx4%2Fmlx4_intr.c;h=19af9359c9344dfb1939f430636621880ad60db0;hb=54b20f94cd847c713c2c9bca281295f5d1d0663f;hp=020fc254aa82aab94a9d269aec93f5953c134168;hpb=8e08df22f0ab07c44efcdd2ee5d867d30af77028;p=dpdk.git diff --git a/drivers/net/mlx4/mlx4_intr.c b/drivers/net/mlx4/mlx4_intr.c index 020fc254aa..19af9359c9 100644 --- a/drivers/net/mlx4/mlx4_intr.c +++ b/drivers/net/mlx4/mlx4_intr.c @@ -326,13 +326,20 @@ mlx4_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx) } else { ret = mlx4_glue->get_cq_event(rxq->cq->channel, &ev_cq, &ev_ctx); - if (ret || ev_cq != rxq->cq) + /** For non-zero ret save the errno (may be EAGAIN + * which means the get_cq_event function was called before + * receiving one). + */ + if (ret) + ret = errno; + else if (ev_cq != rxq->cq) ret = EINVAL; } if (ret) { rte_errno = ret; - WARN("unable to disable interrupt on rx queue %d", - idx); + if (ret != EAGAIN) + WARN("unable to disable interrupt on rx queue %d", + idx); } else { rxq->mcq.arm_sn++; mlx4_glue->ack_cq_events(rxq->cq, 1);