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