-/**
- * Collect interrupt events.
- *
- * @param priv
- * Pointer to private structure.
- * @param events
- * Pointer to event flags holder.
- *
- * @return
- * Number of events.
- */
-static int
-mlx4_collect_interrupt_events(struct priv *priv, uint32_t *events)
-{
- struct ibv_async_event event;
- const struct rte_intr_conf *const intr_conf =
- &priv->dev->data->dev_conf.intr_conf;
- int ret = 0;
-
- *events = 0;
- /* Read all message and acknowledge them. */
- for (;;) {
- if (ibv_get_async_event(priv->ctx, &event))
- break;
- switch (event.event_type) {
- case IBV_EVENT_PORT_ACTIVE:
- case IBV_EVENT_PORT_ERR:
- if (!intr_conf->lsc || mlx4_link_status_check(priv))
- break;
- *events |= (1 << RTE_ETH_EVENT_INTR_LSC);
- ret++;
- break;
- case IBV_EVENT_DEVICE_FATAL:
- if (!intr_conf->rmv)
- break;
- *events |= (1 << RTE_ETH_EVENT_INTR_RMV);
- ret++;
- break;
- default:
- DEBUG("event type %d on port %d not handled",
- event.event_type, event.element.port_num);
- }
- ibv_ack_async_event(&event);
- }
- return ret;
-}
-