[dpdk-dev] [PATCH 02/16] mlx4: use experimental verbs for polling and completions
Adrien Mazarguil
adrien.mazarguil at 6wind.com
Sat Jun 6 01:15:06 CEST 2015
This API implements additional flags in work completions that are required
to support checksum offloads.
Signed-off-by: Gilad Berman <giladb at mellanox.com>
Signed-off-by: Adrien Mazarguil <adrien.mazarguil at 6wind.com>
---
drivers/net/mlx4/mlx4.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 648b210..b77fb22 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -914,7 +914,7 @@ txq_complete(struct txq *txq)
unsigned int elts_comp = txq->elts_comp;
unsigned int elts_tail;
const unsigned int elts_n = txq->elts_n;
- struct ibv_wc wcs[elts_comp];
+ struct ibv_exp_wc wcs[elts_comp];
int wcs_n;
if (unlikely(elts_comp == 0))
@@ -923,11 +923,11 @@ txq_complete(struct txq *txq)
DEBUG("%p: processing %u work requests completions",
(void *)txq, elts_comp);
#endif
- wcs_n = ibv_poll_cq(txq->cq, elts_comp, wcs);
+ wcs_n = ibv_exp_poll_cq(txq->cq, elts_comp, wcs, sizeof(wcs[0]));
if (unlikely(wcs_n == 0))
return 0;
if (unlikely(wcs_n < 0)) {
- DEBUG("%p: ibv_poll_cq() failed (wcs_n=%d)",
+ DEBUG("%p: ibv_exp_poll_cq() failed (wcs_n=%d)",
(void *)txq, wcs_n);
return -1;
}
@@ -2317,7 +2317,7 @@ mlx4_rx_burst_sp(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
{
struct rxq *rxq = (struct rxq *)dpdk_rxq;
struct rxq_elt_sp (*elts)[rxq->elts_n] = rxq->elts.sp;
- struct ibv_wc wcs[pkts_n];
+ struct ibv_exp_wc wcs[pkts_n];
struct ibv_recv_wr head;
struct ibv_recv_wr **next = &head.next;
struct ibv_recv_wr *bad_wr;
@@ -2329,18 +2329,18 @@ mlx4_rx_burst_sp(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
return mlx4_rx_burst(dpdk_rxq, pkts, pkts_n);
if (unlikely(elts == NULL)) /* See RTE_DEV_CMD_SET_MTU. */
return 0;
- wcs_n = ibv_poll_cq(rxq->cq, pkts_n, wcs);
+ wcs_n = ibv_exp_poll_cq(rxq->cq, pkts_n, wcs, sizeof(wcs[0]));
if (unlikely(wcs_n == 0))
return 0;
if (unlikely(wcs_n < 0)) {
- DEBUG("rxq=%p, ibv_poll_cq() failed (wc_n=%d)",
+ DEBUG("rxq=%p, ibv_exp_poll_cq() failed (wc_n=%d)",
(void *)rxq, wcs_n);
return 0;
}
assert(wcs_n <= (int)pkts_n);
/* For each work completion. */
for (i = 0; (i != wcs_n); ++i) {
- struct ibv_wc *wc = &wcs[i];
+ struct ibv_exp_wc *wc = &wcs[i];
uint64_t wr_id = wc->wr_id;
uint32_t len = wc->byte_len;
struct rxq_elt_sp *elt = &(*elts)[wr_id];
@@ -2509,7 +2509,7 @@ mlx4_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
{
struct rxq *rxq = (struct rxq *)dpdk_rxq;
struct rxq_elt (*elts)[rxq->elts_n] = rxq->elts.no_sp;
- struct ibv_wc wcs[pkts_n];
+ struct ibv_exp_wc wcs[pkts_n];
struct ibv_recv_wr head;
struct ibv_recv_wr **next = &head.next;
struct ibv_recv_wr *bad_wr;
@@ -2519,18 +2519,18 @@ mlx4_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
if (unlikely(rxq->sp))
return mlx4_rx_burst_sp(dpdk_rxq, pkts, pkts_n);
- wcs_n = ibv_poll_cq(rxq->cq, pkts_n, wcs);
+ wcs_n = ibv_exp_poll_cq(rxq->cq, pkts_n, wcs, sizeof(wcs[0]));
if (unlikely(wcs_n == 0))
return 0;
if (unlikely(wcs_n < 0)) {
- DEBUG("rxq=%p, ibv_poll_cq() failed (wc_n=%d)",
+ DEBUG("rxq=%p, ibv_exp_poll_cq() failed (wc_n=%d)",
(void *)rxq, wcs_n);
return 0;
}
assert(wcs_n <= (int)pkts_n);
/* For each work completion. */
for (i = 0; (i != wcs_n); ++i) {
- struct ibv_wc *wc = &wcs[i];
+ struct ibv_exp_wc *wc = &wcs[i];
uint64_t wr_id = wc->wr_id;
uint32_t len = wc->byte_len;
struct rxq_elt *elt = &(*elts)[WR_ID(wr_id).id];
--
2.1.0
More information about the dev
mailing list