common/mlx5: add flex parser DevX structures
[dpdk.git] / drivers / net / mlx5 / mlx5_rxtx_vec.c
index 1518bdd..7fae201 100644 (file)
@@ -103,13 +103,20 @@ uint16_t
 mlx5_rx_burst_vec(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
 {
        struct mlx5_rxq_data *rxq = dpdk_rxq;
-       uint16_t nb_rx;
+       uint16_t nb_rx = 0;
+       uint16_t tn = 0;
        uint64_t err = 0;
-
-       nb_rx = rxq_burst_v(rxq, pkts, pkts_n, &err);
-       if (unlikely(err | rxq->err_state))
-               nb_rx = rxq_handle_pending_error(rxq, pkts, nb_rx);
-       return nb_rx;
+       bool no_cq = false;
+
+       do {
+               nb_rx = rxq_burst_v(rxq, pkts + tn, pkts_n - tn, &err, &no_cq);
+               if (unlikely(err | rxq->err_state))
+                       nb_rx = rxq_handle_pending_error(rxq, pkts + tn, nb_rx);
+               tn += nb_rx;
+               if (unlikely(no_cq))
+                       break;
+       } while (tn != pkts_n);
+       return tn;
 }
 
 /**
@@ -149,7 +156,7 @@ int __rte_cold
 mlx5_check_vec_rx_support(struct rte_eth_dev *dev)
 {
        struct mlx5_priv *priv = dev->data->dev_private;
-       uint16_t i;
+       uint32_t i;
 
        if (!priv->config.rx_vec_en)
                return -ENOTSUP;