{"id":809203,"url":"http://patchwork.ozlabs.org/api/patches/809203/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/patch/20170903042117.28923-2-saeedm@mellanox.com/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/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-2-saeedm@mellanox.com>","list_archive_url":null,"date":"2017-09-03T04:21:01","name":"[net-next,01/17] net/mlx5e: Reorganize struct mlx5e_rq","commit_ref":null,"pull_url":null,"state":"accepted","archived":true,"hash":"8123edfa6b35817916dcb1a210d16f07a9c46c62","submitter":{"id":65299,"url":"http://patchwork.ozlabs.org/api/people/65299/?format=json","name":"Saeed Mahameed","email":"saeedm@mellanox.com"},"delegate":{"id":34,"url":"http://patchwork.ozlabs.org/api/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-2-saeedm@mellanox.com/mbox/","series":[{"id":1196,"url":"http://patchwork.ozlabs.org/api/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/809203/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/809203/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 3xlKZy3V5Sz9s7C\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSun,  3 Sep 2017 14:22:50 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751471AbdICEWO (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSun, 3 Sep 2017 00:22:14 -0400","from mail-il-dmz.mellanox.com ([193.47.165.129]:59964 \"EHLO\n\tmellanox.co.il\" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org\n\twith ESMTP id S1750827AbdICEWL (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sun, 3 Sep 2017 00:22:11 -0400","from Internal Mail-Server by MTLPINE1 (envelope-from\n\tsaeedm@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 3 Sep 2017 07:22:05 +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 v834M5l2017672;\n\tSun, 3 Sep 2017 07:22:05 +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 01/17] net/mlx5e: Reorganize struct mlx5e_rq","Date":"Sun,  3 Sep 2017 07:21:01 +0300","Message-Id":"<20170903042117.28923-2-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\nBring fast-path fields together, and combine RX WQE mutual\nexclusive fields into a union.\n\nPage-reuse and XDP are mutually exclusive and cannot be used at\nthe same time.\nUse a union to combine their footprints.\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      | 16 +++++++++-------\n drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 10 +++++-----\n drivers/net/ethernet/mellanox/mlx5/core/en_rx.c   | 13 ++++++-------\n 3 files changed, 20 insertions(+), 19 deletions(-)","diff":"diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h\nindex 6c2abeccfa5a..d964db286c95 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h\n@@ -527,20 +527,24 @@ struct mlx5e_rq {\n \t\tstruct {\n \t\t\tstruct mlx5e_wqe_frag_info *frag_info;\n \t\t\tu32 frag_sz;\t/* max possible skb frag_sz */\n-\t\t\tbool page_reuse;\n-\t\t\tbool xdp_xmit;\n+\t\t\tunion {\n+\t\t\t\tbool page_reuse;\n+\t\t\t\tbool xdp_xmit;\n+\t\t\t};\n \t\t} wqe;\n \t\tstruct {\n \t\t\tstruct mlx5e_mpw_info *info;\n \t\t\tvoid                  *mtt_no_align;\n+\t\t\tu16                    stride_sz;\n+\t\t\tu16                    num_strides;\n \t\t} mpwqe;\n \t};\n \tstruct {\n-\t\tu8             page_order;\n \t\tu32            wqe_sz;    /* wqe data buffer size */\n+\t\tu16            headroom;\n+\t\tu8             page_order;\n \t\tu8             map_dir;   /* dma map direction */\n \t} buff;\n-\t__be32                 mkey_be;\n \n \tstruct device         *pdev;\n \tstruct net_device     *netdev;\n@@ -555,7 +559,6 @@ struct mlx5e_rq {\n \n \tunsigned long          state;\n \tint                    ix;\n-\tu16                    rx_headroom;\n \n \tstruct mlx5e_rx_am     am; /* Adaptive Moderation */\n \n@@ -565,9 +568,8 @@ struct mlx5e_rq {\n \n \t/* control */\n \tstruct mlx5_wq_ctrl    wq_ctrl;\n+\t__be32                 mkey_be;\n \tu8                     wq_type;\n-\tu32                    mpwqe_stride_sz;\n-\tu32                    mpwqe_num_strides;\n \tu32                    rqn;\n \tstruct mlx5e_channel  *channel;\n \tstruct mlx5_core_dev  *mdev;\ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c\nindex 85841e24c65b..94761d0e1b33 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c\n@@ -593,7 +593,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,\n \t}\n \n \trq->buff.map_dir = rq->xdp_prog ? DMA_BIDIRECTIONAL : DMA_FROM_DEVICE;\n-\trq->rx_headroom = params->rq_headroom;\n+\trq->buff.headroom = params->rq_headroom;\n \n \tswitch (rq->wq_type) {\n \tcase MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ:\n@@ -615,10 +615,10 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,\n \t\t\tgoto err_rq_wq_destroy;\n \t\t}\n \n-\t\trq->mpwqe_stride_sz = BIT(params->mpwqe_log_stride_sz);\n-\t\trq->mpwqe_num_strides = BIT(params->mpwqe_log_num_strides);\n+\t\trq->mpwqe.stride_sz = BIT(params->mpwqe_log_stride_sz);\n+\t\trq->mpwqe.num_strides = BIT(params->mpwqe_log_num_strides);\n \n-\t\trq->buff.wqe_sz = rq->mpwqe_stride_sz * rq->mpwqe_num_strides;\n+\t\trq->buff.wqe_sz = rq->mpwqe.stride_sz * rq->mpwqe.num_strides;\n \t\tbyte_count = rq->buff.wqe_sz;\n \n \t\terr = mlx5e_create_rq_umr_mkey(mdev, rq);\n@@ -665,7 +665,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,\n \t\tbyte_count = rq->buff.wqe_sz;\n \n \t\t/* calc the required page order */\n-\t\trq->wqe.frag_sz = MLX5_SKB_FRAG_SZ(rq->rx_headroom + byte_count);\n+\t\trq->wqe.frag_sz = MLX5_SKB_FRAG_SZ(rq->buff.headroom + byte_count);\n \t\tnpages = DIV_ROUND_UP(rq->wqe.frag_sz, PAGE_SIZE);\n \t\trq->buff.page_order = order_base_2(npages);\n \ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\nindex be8197a75a63..1b50f1e7e48a 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\n@@ -263,8 +263,7 @@ int mlx5e_alloc_rx_wqe(struct mlx5e_rq *rq, struct mlx5e_rx_wqe *wqe, u16 ix)\n \t\twi->offset = 0;\n \t}\n \n-\twqe->data.addr = cpu_to_be64(wi->di.addr + wi->offset +\n-\t\t\t\t     rq->rx_headroom);\n+\twqe->data.addr = cpu_to_be64(wi->di.addr + wi->offset + rq->buff.headroom);\n \treturn 0;\n }\n \n@@ -296,7 +295,7 @@ void mlx5e_dealloc_rx_wqe(struct mlx5e_rq *rq, u16 ix)\n \n static inline int mlx5e_mpwqe_strides_per_page(struct mlx5e_rq *rq)\n {\n-\treturn rq->mpwqe_num_strides >> MLX5_MPWRQ_WQE_PAGE_ORDER;\n+\treturn rq->mpwqe.num_strides >> MLX5_MPWRQ_WQE_PAGE_ORDER;\n }\n \n static inline void mlx5e_add_skb_frag_mpwqe(struct mlx5e_rq *rq,\n@@ -305,7 +304,7 @@ static inline void mlx5e_add_skb_frag_mpwqe(struct mlx5e_rq *rq,\n \t\t\t\t\t    u32 page_idx, u32 frag_offset,\n \t\t\t\t\t    u32 len)\n {\n-\tunsigned int truesize =\tALIGN(len, rq->mpwqe_stride_sz);\n+\tunsigned int truesize = ALIGN(len, rq->mpwqe.stride_sz);\n \n \tdma_sync_single_for_cpu(rq->pdev,\n \t\t\t\twi->umr.dma_info[page_idx].addr + frag_offset,\n@@ -776,9 +775,9 @@ struct sk_buff *skb_from_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,\n \t\t\t     struct mlx5e_wqe_frag_info *wi, u32 cqe_bcnt)\n {\n \tstruct mlx5e_dma_info *di = &wi->di;\n+\tu16 rx_headroom = rq->buff.headroom;\n \tstruct sk_buff *skb;\n \tvoid *va, *data;\n-\tu16 rx_headroom = rq->rx_headroom;\n \tbool consumed;\n \tu32 frag_size;\n \n@@ -911,7 +910,7 @@ static inline void mlx5e_mpwqe_fill_rx_skb(struct mlx5e_rq *rq,\n \t\t\t\t\t   struct sk_buff *skb)\n {\n \tu16 stride_ix      = mpwrq_get_cqe_stride_index(cqe);\n-\tu32 wqe_offset     = stride_ix * rq->mpwqe_stride_sz;\n+\tu32 wqe_offset     = stride_ix * rq->mpwqe.stride_sz;\n \tu32 head_offset    = wqe_offset & (PAGE_SIZE - 1);\n \tu32 page_idx       = wqe_offset >> PAGE_SHIFT;\n \tu32 head_page_idx  = page_idx;\n@@ -979,7 +978,7 @@ void mlx5e_handle_rx_cqe_mpwrq(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)\n \tnapi_gro_receive(rq->cq.napi, skb);\n \n mpwrq_cqe_out:\n-\tif (likely(wi->consumed_strides < rq->mpwqe_num_strides))\n+\tif (likely(wi->consumed_strides < rq->mpwqe.num_strides))\n \t\treturn;\n \n \tmlx5e_free_rx_mpwqe(rq, wi);\n","prefixes":["net-next","01/17"]}