From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f194.google.com (mail-pf0-f194.google.com [209.85.192.194]) by dpdk.org (Postfix) with ESMTP id A8C8629CB for ; Fri, 14 Jul 2017 12:34:55 +0200 (CEST) Received: by mail-pf0-f194.google.com with SMTP id q85so10552275pfq.2 for ; Fri, 14 Jul 2017 03:34:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fridaylinux-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Q1lRr1/tdHL+3icIa9fRkNo7dm1QQbcyRAFdbFxB3AE=; b=r43zxRmjDzDUW6BK8QeXYQX9yTDDpfEV1bLJR+bxGdki/TGUuBwNzSvQuiIR2WJvEj B9LZGnlPLOw6wJp+mxfOEvpYY8z7+8y2bqZtgeQCqOcZGeLP6IyVBP6nG+TNaBnPaIJj I4xdGVHGxOYPoBIj9aZO6VNR6C79AZuDwqutZsOXm2efVSFR47YiTFjP7kHvxSGbWjxR dJ8IOnW5XLqsPALuGw/tqJDEPbVi+P6vo4KQ2141NUZut3BG8AgyueA+DxRmWm1G8W+K uQ+sqb2qdOcxp/cMCTWB/jn1uSF6LRSjB8tpM9DT+yC/Dhb8rdblExkbqLhyUQZjC8rK s+wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Q1lRr1/tdHL+3icIa9fRkNo7dm1QQbcyRAFdbFxB3AE=; b=L3E12KJ96agvbyxeBmPt4sXP1fr25LbLooZiHkuAgkJfHPw1rWqMdcft0bk7JcRBKD ywp010I+Aaf+DQfzNzcg49Z4WyNto9YOKj2ygnH7QtvkcS0YVscyLiEv1bHP4cbEPu0u cPHx4ixJrGYvrzng0NWxTxpanf9ETxviy4AS8+dilYge1K1V6OVSteSRwp0qJBdNqygN kelKxmOD2rTRDGhckbgJQ4eAZZXQGzhaR7rMMwj4loBadEOp9y2vjuAQhSeSqGc3p50P UpP3XBAWdH7xbRBAS2ZVdZjgzEI1Mp6/xTk9kVtiQXKhsawBgxMOHrP42zZ63H6gaY58 5dew== X-Gm-Message-State: AIVw112nT4Hqs6aQzinYh9DEWYjyGaFOYKtD+dQtY1XBCM+sdQmtn6hj P4/1hDa07ABghwm9 X-Received: by 10.84.215.220 with SMTP id g28mr15300409plj.281.1500028495003; Fri, 14 Jul 2017 03:34:55 -0700 (PDT) Received: from localhost.localdomain ([180.158.48.171]) by smtp.gmail.com with ESMTPSA id y205sm15273553pfb.124.2017.07.14.03.34.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 14 Jul 2017 03:34:53 -0700 (PDT) From: Yuanhan Liu To: Shahaf Shuler Cc: Yongseok Koh , Nelio Laranjeiro , dpdk stable Date: Fri, 14 Jul 2017 18:33:27 +0800 Message-Id: <1500028450-25989-3-git-send-email-yliu@fridaylinux.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1500028450-25989-1-git-send-email-yliu@fridaylinux.org> References: <1500028450-25989-1-git-send-email-yliu@fridaylinux.org> Subject: [dpdk-stable] patch 'net/mlx5: fix completion buffer size' has been queued to LTS release 16.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Jul 2017 10:34:56 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/19/17. So please shout if anyone has objections. Thanks. --yliu --- >>From 092c670e0dff3bb525c08bcc71d46c79d1674e2b Mon Sep 17 00:00:00 2001 From: Shahaf Shuler Date: Thu, 18 May 2017 13:44:45 +0300 Subject: [PATCH] net/mlx5: fix completion buffer size [ upstream commit 626e8bfb84d55a7234d9b79c35bd7005f076fd0d ] Completion buffer size was computed wrongly, causing completion polling to wraparound too early and miss entries. Fixing it by using Direct Verbs to query the CQ info. Fixes: 6218063b39a6 ("net/mlx5: refactor Rx data path") Fixes: 1d88ba171942 ("net/mlx5: refactor Tx data path") Signed-off-by: Shahaf Shuler Acked-by: Yongseok Koh Acked-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_rxq.c | 14 +++++++++----- drivers/net/mlx5/mlx5_txq.c | 14 +++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 118f6d6..aea203b 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -868,12 +868,16 @@ static inline int rxq_setup(struct rxq_ctrl *tmpl) { struct ibv_cq *ibcq = tmpl->cq; - struct mlx5_cq *cq = to_mxxx(cq, cq); + struct ibv_mlx5_cq_info cq_info; struct mlx5_rwq *rwq = container_of(tmpl->wq, struct mlx5_rwq, wq); struct rte_mbuf *(*elts)[1 << tmpl->rxq.elts_n] = rte_calloc_socket("RXQ", 1, sizeof(*elts), 0, tmpl->socket); - if (cq->cqe_sz != RTE_CACHE_LINE_SIZE) { + if (ibv_mlx5_exp_get_cq_info(ibcq, &cq_info)) { + ERROR("Unable to query CQ info. check your OFED."); + return ENOTSUP; + } + if (cq_info.cqe_size != RTE_CACHE_LINE_SIZE) { ERROR("Wrong MLX5_CQE_SIZE environment variable value: " "it should be set to %u", RTE_CACHE_LINE_SIZE); return EINVAL; @@ -881,16 +885,16 @@ rxq_setup(struct rxq_ctrl *tmpl) if (elts == NULL) return ENOMEM; tmpl->rxq.rq_db = rwq->rq.db; - tmpl->rxq.cqe_n = log2above(ibcq->cqe); + tmpl->rxq.cqe_n = log2above(cq_info.cqe_cnt); tmpl->rxq.cq_ci = 0; tmpl->rxq.rq_ci = 0; - tmpl->rxq.cq_db = cq->dbrec; + tmpl->rxq.cq_db = cq_info.dbrec; tmpl->rxq.wqes = (volatile struct mlx5_wqe_data_seg (*)[]) (uintptr_t)rwq->rq.buff; tmpl->rxq.cqes = (volatile struct mlx5_cqe (*)[]) - (uintptr_t)cq->active_buf->buf; + (uintptr_t)cq_info.buf; tmpl->rxq.elts = elts; return 0; } diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index c286367..a31e4e5 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -205,14 +205,18 @@ txq_setup(struct txq_ctrl *tmpl, struct txq_ctrl *txq_ctrl) { struct mlx5_qp *qp = to_mqp(tmpl->qp); struct ibv_cq *ibcq = tmpl->cq; - struct mlx5_cq *cq = to_mxxx(cq, cq); + struct ibv_mlx5_cq_info cq_info; - if (cq->cqe_sz != RTE_CACHE_LINE_SIZE) { + if (ibv_mlx5_exp_get_cq_info(ibcq, &cq_info)) { + ERROR("Unable to query CQ info. check your OFED."); + return ENOTSUP; + } + if (cq_info.cqe_size != RTE_CACHE_LINE_SIZE) { ERROR("Wrong MLX5_CQE_SIZE environment variable value: " "it should be set to %u", RTE_CACHE_LINE_SIZE); return EINVAL; } - tmpl->txq.cqe_n = log2above(ibcq->cqe); + tmpl->txq.cqe_n = log2above(cq_info.cqe_cnt); tmpl->txq.qp_num_8s = qp->ctrl_seg.qp_num << 8; tmpl->txq.wqes = (volatile struct mlx5_wqe64 (*)[]) @@ -220,10 +224,10 @@ txq_setup(struct txq_ctrl *tmpl, struct txq_ctrl *txq_ctrl) tmpl->txq.wqe_n = log2above(qp->sq.wqe_cnt); tmpl->txq.qp_db = &qp->gen_data.db[MLX5_SND_DBR]; tmpl->txq.bf_reg = qp->gen_data.bf->reg; - tmpl->txq.cq_db = cq->dbrec; + tmpl->txq.cq_db = cq_info.dbrec; tmpl->txq.cqes = (volatile struct mlx5_cqe (*)[]) - (uintptr_t)cq->active_buf->buf; + (uintptr_t)cq_info.buf; tmpl->txq.elts = (struct rte_mbuf *(*)[1 << tmpl->txq.elts_n]) ((uintptr_t)txq_ctrl + sizeof(*txq_ctrl)); -- 2.7.4