From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yongseok Koh Subject: [PATCH v2 0/3] net/mlx5: add Multi-Packet Rx support Date: Wed, 9 May 2018 04:13:47 -0700 Message-ID: <20180509111350.20240-1-yskoh@mellanox.com> References: <20180502232054.7852-1-yskoh@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain Cc: dev@dpdk.org, Yongseok Koh To: adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com Return-path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0057.outbound.protection.outlook.com [104.47.1.57]) by dpdk.org (Postfix) with ESMTP id A899F1B1A8 for ; Wed, 9 May 2018 13:14:08 +0200 (CEST) In-Reply-To: <20180502232054.7852-1-yskoh@mellanox.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Multi-Packet Rx Queue (MPRQ a.k.a Striding RQ) can further save PCIe bandwidth by posting a single large buffer for multiple packets. Instead of posting a buffer per a packet, one large buffer is posted in order to receive multiple packets on the buffer. A MPRQ buffer consists of multiple fixed-size strides and each stride receives one packet. Rx packet is mem-copied to a user-provided mbuf if the size of Rx packet is comparatively small, or PMD attaches the Rx packet to the mbuf by external buffer attachment - rte_pktmbuf_attach_extbuf(). A mempool for external buffers will be allocated and managed by PMD. This patchset should be applied after: net/mlx5: add new Memory Region support v2: * add mprq_log_stride_num parameter to configure the number of strides. * enable configuring larger max_rx_pkt_len than the size of user-provided mbuf. The size of the stride isn't static anymore but dynamically determined. * enhance documentation. * fix issues from review. Yongseok Koh (3): net/mlx5: separate filling Rx flags net/mlx5: add a function to rdma-core glue net/mlx5: add Multi-Packet Rx support doc/guides/nics/mlx5.rst | 58 +++++ drivers/net/mlx5/Makefile | 5 + drivers/net/mlx5/mlx5.c | 83 +++++++ drivers/net/mlx5/mlx5.h | 11 + drivers/net/mlx5/mlx5_defs.h | 18 ++ drivers/net/mlx5/mlx5_ethdev.c | 3 + drivers/net/mlx5/mlx5_glue.c | 16 ++ drivers/net/mlx5/mlx5_glue.h | 8 + drivers/net/mlx5/mlx5_prm.h | 15 ++ drivers/net/mlx5/mlx5_rxq.c | 494 ++++++++++++++++++++++++++++++++++++--- drivers/net/mlx5/mlx5_rxtx.c | 307 +++++++++++++++++++++--- drivers/net/mlx5/mlx5_rxtx.h | 37 ++- drivers/net/mlx5/mlx5_rxtx_vec.c | 4 + drivers/net/mlx5/mlx5_rxtx_vec.h | 3 +- drivers/net/mlx5/mlx5_trigger.c | 6 +- 15 files changed, 992 insertions(+), 76 deletions(-) -- 2.11.0