{"id":809204,"url":"http://patchwork.ozlabs.org/api/1.2/patches/809204/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/patch/20170903042117.28923-13-saeedm@mellanox.com/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/1.2/projects/7/?format=json","name":"Linux network development","link_name":"netdev","list_id":"netdev.vger.kernel.org","list_email":"netdev@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20170903042117.28923-13-saeedm@mellanox.com>","list_archive_url":null,"date":"2017-09-03T04:21:12","name":"[net-next,12/17] net/mlx5e: Remove unnecessary fields in ICO SQ","commit_ref":null,"pull_url":null,"state":"accepted","archived":true,"hash":"c4cf68da585a258ed4c60c8c81f79b1f7f72436a","submitter":{"id":65299,"url":"http://patchwork.ozlabs.org/api/1.2/people/65299/?format=json","name":"Saeed Mahameed","email":"saeedm@mellanox.com"},"delegate":{"id":34,"url":"http://patchwork.ozlabs.org/api/1.2/users/34/?format=json","username":"davem","first_name":"David","last_name":"Miller","email":"davem@davemloft.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/patch/20170903042117.28923-13-saeedm@mellanox.com/mbox/","series":[{"id":1196,"url":"http://patchwork.ozlabs.org/api/1.2/series/1196/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/list/?series=1196","date":"2017-09-03T04:21:09","name":"[net-next,01/17] net/mlx5e: Reorganize struct mlx5e_rq","version":1,"mbox":"http://patchwork.ozlabs.org/series/1196/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/809204/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/809204/checks/","tags":{},"related":[],"headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xlKZz6JJLz9s7C\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSun,  3 Sep 2017 14:22:51 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752026AbdICEWt (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSun, 3 Sep 2017 00:22:49 -0400","from mail-il-dmz.mellanox.com ([193.47.165.129]:60110 \"EHLO\n\tmellanox.co.il\" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org\n\twith ESMTP id S1751454AbdICEWO (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sun, 3 Sep 2017 00:22:14 -0400","from Internal Mail-Server by MTLPINE1 (envelope-from\n\tsaeedm@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 3 Sep 2017 07:22:06 +0300","from sws.mtl.labs.mlnx (reg-l-vrt-045-015.mtl.labs.mlnx\n\t[10.135.45.15])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id v834M5lD017672;\n\tSun, 3 Sep 2017 07:22:06 +0300"],"From":"Saeed Mahameed <saeedm@mellanox.com>","To":"\"David S. Miller\" <davem@davemloft.net>","Cc":"netdev@vger.kernel.org, kernel-team@fb.com,\n\tTariq Toukan <tariqt@mellanox.com>, Saeed Mahameed <saeedm@mellanox.com>","Subject":"[net-next 12/17] net/mlx5e: Remove unnecessary fields in ICO SQ","Date":"Sun,  3 Sep 2017 07:21:12 +0300","Message-Id":"<20170903042117.28923-13-saeedm@mellanox.com>","X-Mailer":"git-send-email 2.13.0","In-Reply-To":"<20170903042117.28923-1-saeedm@mellanox.com>","References":"<20170903042117.28923-1-saeedm@mellanox.com>","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"From: Tariq Toukan <tariqt@mellanox.com>\n\nAs of current design, in each NAPI, only a single UMR WQE\ncompletion could be available in the completion queue of the\nthe internal control operations (ICO) send queue, in addition\nto nop operations that require no actions upon completion.\nThis renders the consume index obsolete, as the wqe_counter\nfield in CQE is sufficient.\n\nThis helps removing a memory barrier, and obsoletes the need\nfor tracking the num_wqebbs to update the consumer counter.\n\nIn addition, remove other unused fields in icosq struct:\npdev, dma_fifo_pc, and prev_cc.\n\nSigned-off-by: Tariq Toukan <tariqt@mellanox.com>\nSigned-off-by: Saeed Mahameed <saeedm@mellanox.com>\n---\n drivers/net/ethernet/mellanox/mlx5/core/en.h      |  7 -------\n drivers/net/ethernet/mellanox/mlx5/core/en_main.c |  2 --\n drivers/net/ethernet/mellanox/mlx5/core/en_rx.c   | 19 ++-----------------\n 3 files changed, 2 insertions(+), 26 deletions(-)","diff":"diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h\nindex 8d29a6eb9406..e55d9439bc12 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h\n@@ -343,7 +343,6 @@ enum {\n \n struct mlx5e_sq_wqe_info {\n \tu8  opcode;\n-\tu8  num_wqebbs;\n };\n \n struct mlx5e_txqsq {\n@@ -419,13 +418,8 @@ struct mlx5e_xdpsq {\n struct mlx5e_icosq {\n \t/* data path */\n \n-\t/* dirtied @completion */\n-\tu16                        cc;\n-\n \t/* dirtied @xmit */\n \tu16                        pc ____cacheline_aligned_in_smp;\n-\tu32                        dma_fifo_pc;\n-\tu16                        prev_cc;\n \n \tstruct mlx5e_cq            cq;\n \n@@ -439,7 +433,6 @@ struct mlx5e_icosq {\n \tvoid __iomem              *uar_map;\n \tu32                        sqn;\n \tu16                        edge;\n-\tstruct device             *pdev;\n \t__be32                     mkey_be;\n \tunsigned long              state;\n \ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c\nindex 162ba6ab749a..a4c9a0a2c408 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c\n@@ -950,7 +950,6 @@ static void mlx5e_activate_rq(struct mlx5e_rq *rq)\n \n \tset_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);\n \tsq->db.ico_wqe[pi].opcode     = MLX5_OPCODE_NOP;\n-\tsq->db.ico_wqe[pi].num_wqebbs = 1;\n \tnopwqe = mlx5e_post_nop(&sq->wq, sq->sqn, &sq->pc);\n \tmlx5e_notify_hw(&sq->wq, sq->pc, sq->uar_map, &nopwqe->ctrl);\n }\n@@ -1052,7 +1051,6 @@ static int mlx5e_alloc_icosq(struct mlx5e_channel *c,\n \tstruct mlx5_core_dev *mdev = c->mdev;\n \tint err;\n \n-\tsq->pdev      = c->pdev;\n \tsq->mkey_be   = c->mkey_be;\n \tsq->channel   = c;\n \tsq->uar_map   = mdev->mlx5e_res.bfreg.map;\ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\nindex b236dfd71c18..88a8749c67d6 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\n@@ -357,7 +357,6 @@ static inline void mlx5e_post_umr_wqe(struct mlx5e_rq *rq, u16 ix)\n \t/* fill sq edge with nops to avoid wqe wrap around */\n \twhile ((pi = (sq->pc & wq->sz_m1)) > sq->edge) {\n \t\tsq->db.ico_wqe[pi].opcode = MLX5_OPCODE_NOP;\n-\t\tsq->db.ico_wqe[pi].num_wqebbs = 1;\n \t\tmlx5e_post_nop(wq, sq->sqn, &sq->pc);\n \t}\n \n@@ -368,7 +367,6 @@ static inline void mlx5e_post_umr_wqe(struct mlx5e_rq *rq, u16 ix)\n \t\t\t    MLX5_OPCODE_UMR);\n \n \tsq->db.ico_wqe[pi].opcode = MLX5_OPCODE_UMR;\n-\tsq->db.ico_wqe[pi].num_wqebbs = num_wqebbs;\n \tsq->pc += num_wqebbs;\n \tmlx5e_notify_hw(&sq->wq, sq->pc, sq->uar_map, &wqe->ctrl);\n }\n@@ -487,15 +485,13 @@ bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq)\n static inline void mlx5e_poll_ico_single_cqe(struct mlx5e_cq *cq,\n \t\t\t\t\t     struct mlx5e_icosq *sq,\n \t\t\t\t\t     struct mlx5e_rq *rq,\n-\t\t\t\t\t     struct mlx5_cqe64 *cqe,\n-\t\t\t\t\t     u16 *sqcc)\n+\t\t\t\t\t     struct mlx5_cqe64 *cqe)\n {\n \tstruct mlx5_wq_cyc *wq = &sq->wq;\n \tu16 ci = be16_to_cpu(cqe->wqe_counter) & wq->sz_m1;\n \tstruct mlx5e_sq_wqe_info *icowi = &sq->db.ico_wqe[ci];\n \n \tmlx5_cqwq_pop(&cq->wq);\n-\t*sqcc += icowi->num_wqebbs;\n \n \tif (unlikely((cqe->op_own >> 4) != MLX5_CQE_REQ)) {\n \t\tWARN_ONCE(true, \"mlx5e: Bad OP in ICOSQ CQE: 0x%x\\n\",\n@@ -518,7 +514,6 @@ static void mlx5e_poll_ico_cq(struct mlx5e_cq *cq, struct mlx5e_rq *rq)\n {\n \tstruct mlx5e_icosq *sq = container_of(cq, struct mlx5e_icosq, cq);\n \tstruct mlx5_cqe64 *cqe;\n-\tu16 sqcc;\n \n \tif (unlikely(!MLX5E_TEST_BIT(sq->state, MLX5E_SQ_STATE_ENABLED)))\n \t\treturn;\n@@ -527,20 +522,10 @@ static void mlx5e_poll_ico_cq(struct mlx5e_cq *cq, struct mlx5e_rq *rq)\n \tif (likely(!cqe))\n \t\treturn;\n \n-\t/* sq->cc must be updated only after mlx5_cqwq_update_db_record(),\n-\t * otherwise a cq overrun may occur\n-\t */\n-\tsqcc = sq->cc;\n-\n \t/* by design, there's only a single cqe */\n-\tmlx5e_poll_ico_single_cqe(cq, sq, rq, cqe, &sqcc);\n+\tmlx5e_poll_ico_single_cqe(cq, sq, rq, cqe);\n \n \tmlx5_cqwq_update_db_record(&cq->wq);\n-\n-\t/* ensure cq space is freed before enabling more cqes */\n-\twmb();\n-\n-\tsq->cc = sqcc;\n }\n \n bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq)\n","prefixes":["net-next","12/17"]}