From: Saeed Mahameed <saeedm@mellanox.com>
To: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org,
Jesper Dangaard Brouer <brouer@redhat.com>,
Jonathan Lemon <bsd@fb.com>, Saeed Mahameed <saeedm@mellanox.com>
Subject: [pull request][net-next V2 00/13] Mellanox, mlx5 RX and XDP improvements
Date: Tue, 23 Apr 2019 12:14:47 -0700 [thread overview]
Message-ID: <20190423191500.16632-1-saeedm@mellanox.com> (raw)
Hi Dave,
This series includes updates to mlx5e driver RX data path and some
significant XDP RX/TX improvements to overcome/mitigate HW and PCIE
bottlenecks.
For more information please see tag log below.
Please pull and let me know if there is any problem.
Please note that the series starts with a merge of mlx5-next branch,
to resolve and avoid dependency with rdma tree, and I just merged
v5.1-rc1 into mlx5-next since we forgot to reset the branch on last
merge window, i hope this is ok with you, next time i will avoid such
merges with linus tree.
v1->v2:
- Drop 1st patch "prefetch for small L1_CACHE_BYTES", we will have to
introduce a new netdev helper function to be used by any driver, we will
resubmit it as standalone patch later.
Thanks,
Saeed.
---
The following changes since commit 3839f99d21688d3062ebd3cc06db46edb3b99ac1:
Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux (2019-04-23 11:57:33 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2019-04-22
for you to fetch changes up to f8ebecf2e32a62137dc5a98b2c94b1db37a0f9f8:
net/mlx5e: Use #define for the WQE wait timeout constant (2019-04-23 12:09:22 -0700)
----------------------------------------------------------------
mlx5-updates-2019-04-22
This series includes updates to mlx5e driver RX data path and some
significant XDP RX/TX improvements to overcome/mitigate HW and PCIE
bottlenecks.
From Tariq:
1) Some Enhancements in rq->flags
2) Stabilize RX packet rate (on Striding RQ) with
multiple outstanding UMR posts
In this patch, we add support for multiple outstanding UMR posts,
to allow faster gap closure between consuming MPWQEs and reposting
them back into the WQ.
Performance test:
As expected, huge improvement in large-scale (48 cores).
xdp_redirect_map, 64B UDP multi-stream.
Redirect from ConnectX-5 100Gbps to ConnectX-6 100Gbps.
CPU: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz.
Before: Unstable, 7 to 30 Mpps
After: Stable, at 70.5 Mpps
From Shay:
3) XDP, Inline small packets into the TX MPWQE in XDP xmit flow
Upon high packet rate with multiple CPUs TX workloads, much of the HCA's
resources are spent on prefetching TX descriptors, thus affecting
transmission rates.
This patch comes to mitigate this problem by moving some workload to the
CPU and reducing the HW data prefetch overhead for small packets (<= 256B).
When forwarding packets with XDP, a packet that is smaller
than a certain size (set to ~256 bytes) would be sent inline within
its WQE TX descrptor (mem-copied), when the hardware tx queue is congested
beyond a pre-defined water-mark.
Performance:
Tested packet rate for UDP 64Byte multi-stream
over two dual port ConnectX-5 100Gbps NICs.
CPU: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
* Tested with hyper-threading disabled
XDP_TX:
| | before | after | |
| 24 rings | 51Mpps | 116Mpps | +126% |
| 1 ring | 12Mpps | 12Mpps | same |
XDP_REDIRECT:
** Below is the transmit rate, not the redirection rate
which might be larger, and is not affected by this patch.
| | before | after | |
| 32 rings | 64Mpps | 92Mpps | +43% |
| 1 ring | 6.4Mpps | 6.4Mpps | same |
As we can see, feature significantly improves scaling, without
hurting single ring performance.
From Maxim:
4) Some trivial refactoring and code improvements prior to a larger series
to support AF_XDP.
-Saeed.
----------------------------------------------------------------
Maxim Mikityanskiy (8):
net/mlx5e: Remove unused parameter
net/mlx5e: Report mlx5e_xdp_set errors
net/mlx5e: Move parameter calculation functions to en/params.c
net/mlx5e: Add an underflow warning comment
net/mlx5e: Remove unused parameter
net/mlx5e: Take HW interrupt trigger into a function
net/mlx5e: Remove unused rx_page_reuse stat
net/mlx5e: Use #define for the WQE wait timeout constant
Shay Agroskin (2):
net/mlx5e: XDP, Add TX MPWQE session counter
net/mlx5e: XDP, Inline small packets into the TX MPWQE in XDP xmit flow
Tariq Toukan (3):
net/mlx5e: RX, Support multiple outstanding UMR posts
net/mlx5e: XDP, Fix shifted flag index in RQ bitmap
net/mlx5e: XDP, Enhance RQ indication for XDP redirect flush
drivers/net/ethernet/mellanox/mlx5/core/Makefile | 3 +-
drivers/net/ethernet/mellanox/mlx5/core/en.h | 20 ++-
.../net/ethernet/mellanox/mlx5/core/en/params.c | 104 +++++++++++++
.../net/ethernet/mellanox/mlx5/core/en/params.h | 22 +++
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 30 ++--
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h | 57 ++++++-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 172 ++++++---------------
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 130 ++++++++++------
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c | 15 +-
drivers/net/ethernet/mellanox/mlx5/core/en_stats.h | 8 +-
drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 11 ++
drivers/net/ethernet/mellanox/mlx5/core/wq.h | 12 ++
include/linux/mlx5/qp.h | 1 +
13 files changed, 390 insertions(+), 195 deletions(-)
create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/params.c
create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/params.h
next reply other threads:[~2019-04-23 19:15 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-23 19:14 Saeed Mahameed [this message]
2019-04-23 19:14 ` [net-next V2 01/13] net/mlx5e: RX, Support multiple outstanding UMR posts Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 02/13] net/mlx5e: XDP, Fix shifted flag index in RQ bitmap Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 03/13] net/mlx5e: XDP, Enhance RQ indication for XDP redirect flush Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 04/13] net/mlx5e: XDP, Add TX MPWQE session counter Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 05/13] net/mlx5e: XDP, Inline small packets into the TX MPWQE in XDP xmit flow Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 06/13] net/mlx5e: Remove unused parameter Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 07/13] net/mlx5e: Report mlx5e_xdp_set errors Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 08/13] net/mlx5e: Move parameter calculation functions to en/params.c Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 09/13] net/mlx5e: Add an underflow warning comment Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 10/13] net/mlx5e: Remove unused parameter Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 11/13] net/mlx5e: Take HW interrupt trigger into a function Saeed Mahameed
2019-04-23 19:14 ` [net-next V2 12/13] net/mlx5e: Remove unused rx_page_reuse stat Saeed Mahameed
2019-04-23 19:15 ` [net-next V2 13/13] net/mlx5e: Use #define for the WQE wait timeout constant Saeed Mahameed
2019-04-23 23:25 ` [pull request][net-next V2 00/13] Mellanox, mlx5 RX and XDP improvements Jakub Kicinski
2019-04-24 0:08 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190423191500.16632-1-saeedm@mellanox.com \
--to=saeedm@mellanox.com \
--cc=brouer@redhat.com \
--cc=bsd@fb.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).