X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx4%2Fmlx4_intr.c;h=d56009c4184522c48c25100537de2201d838de7e;hb=df96fd0d73955bdc7ca3909e772ff2ad903249c6;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..d56009c418 100644 --- a/drivers/net/mlx4/mlx4_intr.c +++ b/drivers/net/mlx4/mlx4_intr.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include @@ -124,9 +124,9 @@ mlx4_link_status_alarm(struct mlx4_priv *priv) MLX4_ASSERT(priv->intr_alarm == 1); priv->intr_alarm = 0; if (intr_conf->lsc && !mlx4_link_status_check(priv)) - _rte_eth_dev_callback_process(ETH_DEV(priv), - RTE_ETH_EVENT_INTR_LSC, - NULL); + rte_eth_dev_callback_process(ETH_DEV(priv), + RTE_ETH_EVENT_INTR_LSC, + NULL); } /** @@ -207,8 +207,8 @@ mlx4_interrupt_handler(struct mlx4_priv *priv) } for (i = 0; i != RTE_DIM(caught); ++i) if (caught[i]) - _rte_eth_dev_callback_process(ETH_DEV(priv), type[i], - NULL); + rte_eth_dev_callback_process(ETH_DEV(priv), type[i], + NULL); } /** @@ -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);