From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f50.google.com (mail-wm0-f50.google.com [74.125.82.50]) by dpdk.org (Postfix) with ESMTP id B94D6C684 for ; Fri, 29 Jan 2016 11:33:20 +0100 (CET) Received: by mail-wm0-f50.google.com with SMTP id l66so48228185wml.0 for ; Fri, 29 Jan 2016 02:33:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+LRgL7R+Yfpi/SyKNDYXnFMMveEk+ELH7EEYbhwyRds=; b=aPw013wC39FfrWCPdKogUxOVNeYCMlkUfgRtCJrfBALTjlyFHYKTdchkrPatX0mIZD uENxdMiXVTMTnN3CI2INcRHpQuLl4Np95Da4UmXHUXxpGzi6Ypv1mSEI1Cx0bKcYypbr ylK0vmcttIWB0+e8fbaeNki7YYAKr+rHz8hYstuFoFthgXs8jYA55MOkN4cED0k0MT3x unFR+oX7ap6x168sba4aoPaI6agwX8HEOFQhXItH0MRZBHEGrAwwTuaw4C6ZkfagdLVY T21T0yT4sqm/iVtz0Mr89e1w3YxhFETkXTmldPpjMlZ3etyBkkcqs92xd8DEzH6OP+ai KhVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+LRgL7R+Yfpi/SyKNDYXnFMMveEk+ELH7EEYbhwyRds=; b=U75jPYoE76BkZimzVPly2fX7t5tLvpIOyPve+4Aq7pGCZ02PS33KNWrvigyom4tlmU jjkJYvhteIPNTjtMSSpDas9NHhuAIdVwvpKFnHMIjSjmgxFZ8sIF6lHB9qkHNEpweB5i KmrfRuC4TRZ3qTWbOPe/uGROIdHMj6Tt5ra0jZK+TKOYTjkN2Ki1b+egxGS6brleNm77 PbPTS7tfkQ2x+7EUXbYvt9HdMlZnCH61yf/qyohIlu0jwjgwt6Hw7ulEoQ3f6j510cVG alB+c0xdqd8ScE8RbuJuc+EmNmk7Z6Zh5Kq2C8q0JSmpSwUCY+1b+TvyoQArqCGkJSO7 BDuQ== X-Gm-Message-State: AG10YOSH6/7P5JiVo4GJ5CTny30x6iXDmE19kCDC2rpYJZOw+aStkxRm+rZbQ1yqpboRsAc0 X-Received: by 10.194.93.199 with SMTP id cw7mr9162856wjb.64.1454063600643; Fri, 29 Jan 2016 02:33:20 -0800 (PST) Received: from 6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by smtp.gmail.com with ESMTPSA id lc3sm15021764wjb.7.2016.01.29.02.33.19 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 29 Jan 2016 02:33:20 -0800 (PST) From: Adrien Mazarguil To: dev@dpdk.org Date: Fri, 29 Jan 2016 11:32:49 +0100 Message-Id: <1454063573-1993-3-git-send-email-adrien.mazarguil@6wind.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1454063573-1993-1-git-send-email-adrien.mazarguil@6wind.com> References: <1454063573-1993-1-git-send-email-adrien.mazarguil@6wind.com> Subject: [dpdk-dev] [PATCH 2/6] mlx5: reorder TX/RX queue structure X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Jan 2016 10:33:20 -0000 From: Nelio Laranjeiro Remove padding and move important fields to the beginning for better performance. Signed-off-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_rxtx.h | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h index fde0ca2..4a857d8 100644 --- a/drivers/net/mlx5/mlx5_rxtx.h +++ b/drivers/net/mlx5/mlx5_rxtx.h @@ -105,7 +105,6 @@ struct priv; struct rxq { struct priv *priv; /* Back pointer to private data. */ struct rte_mempool *mp; /* Memory Pool for allocations. */ - struct ibv_mr *mr; /* Memory Region (for mp). */ struct ibv_cq *cq; /* Completion Queue. */ struct ibv_exp_wq *wq; /* Work Queue. */ struct ibv_exp_wq_family *if_wq; /* WQ burst interface. */ @@ -117,19 +116,20 @@ struct rxq { unsigned int port_id; /* Port ID for incoming packets. */ unsigned int elts_n; /* (*elts)[] length. */ unsigned int elts_head; /* Current index in (*elts)[]. */ - union { - struct rxq_elt_sp (*sp)[]; /* Scattered RX elements. */ - struct rxq_elt (*no_sp)[]; /* RX elements. */ - } elts; unsigned int sp:1; /* Use scattered RX elements. */ unsigned int csum:1; /* Enable checksum offloading. */ unsigned int csum_l2tun:1; /* Same for L2 tunnels. */ unsigned int vlan_strip:1; /* Enable VLAN stripping. */ + union { + struct rxq_elt_sp (*sp)[]; /* Scattered RX elements. */ + struct rxq_elt (*no_sp)[]; /* RX elements. */ + } elts; uint32_t mb_len; /* Length of a mp-issued mbuf. */ - struct mlx5_rxq_stats stats; /* RX queue counters. */ unsigned int socket; /* CPU socket ID for allocations. */ + struct mlx5_rxq_stats stats; /* RX queue counters. */ struct ibv_exp_res_domain *rd; /* Resource Domain. */ struct fdir_queue fdir_queue; /* Flow director queue. */ + struct ibv_mr *mr; /* Memory Region (for mp). */ }; /* Hash RX queue types. */ @@ -248,30 +248,31 @@ typedef uint8_t linear_t[16384]; /* TX queue descriptor. */ struct txq { struct priv *priv; /* Back pointer to private data. */ - struct { - const struct rte_mempool *mp; /* Cached Memory Pool. */ - struct ibv_mr *mr; /* Memory Region (for mp). */ - uint32_t lkey; /* mr->lkey */ - } mp2mr[MLX5_PMD_TX_MP_CACHE]; /* MP to MR translation table. */ struct ibv_cq *cq; /* Completion Queue. */ struct ibv_qp *qp; /* Queue Pair. */ - struct ibv_exp_qp_burst_family *if_qp; /* QP burst interface. */ - struct ibv_exp_cq_family *if_cq; /* CQ interface. */ + struct txq_elt (*elts)[]; /* TX elements. */ #if MLX5_PMD_MAX_INLINE > 0 uint32_t max_inline; /* Max inline send size <= MLX5_PMD_MAX_INLINE. */ #endif unsigned int elts_n; /* (*elts)[] length. */ - struct txq_elt (*elts)[]; /* TX elements. */ unsigned int elts_head; /* Current index in (*elts)[]. */ unsigned int elts_tail; /* First element awaiting completion. */ unsigned int elts_comp; /* Number of completion requests. */ unsigned int elts_comp_cd; /* Countdown for next completion request. */ unsigned int elts_comp_cd_init; /* Initial value for countdown. */ + struct { + const struct rte_mempool *mp; /* Cached Memory Pool. */ + struct ibv_mr *mr; /* Memory Region (for mp). */ + uint32_t lkey; /* mr->lkey */ + } mp2mr[MLX5_PMD_TX_MP_CACHE]; /* MP to MR translation table. */ struct mlx5_txq_stats stats; /* TX queue counters. */ + /* Elements used only for init part are here. */ linear_t (*elts_linear)[]; /* Linearized buffers. */ struct ibv_mr *mr_linear; /* Memory Region for linearized buffers. */ - unsigned int socket; /* CPU socket ID for allocations. */ + struct ibv_exp_qp_burst_family *if_qp; /* QP burst interface. */ + struct ibv_exp_cq_family *if_cq; /* CQ interface. */ struct ibv_exp_res_domain *rd; /* Resource Domain. */ + unsigned int socket; /* CPU socket ID for allocations. */ }; /* mlx5_rxq.c */ -- 2.1.4