netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] Mellanox 100G mlx5 CQE compression
@ 2016-05-10 21:29 Saeed Mahameed
  2016-05-10 21:29 ` [PATCH net-next 1/3] net/mlx5e: " Saeed Mahameed
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Saeed Mahameed @ 2016-05-10 21:29 UTC (permalink / raw)
  To: David S. Miller
  Cc: netdev, Or Gerlitz, Tal Alon, Eran Ben Elisha, Saeed Mahameed

Hi Dave,

Introducing ConnectX-4 CQE (Completion Queue Entry) compression feature
for mlx5 etherent driver.

CQE Compressing reduces PCI overhead by coalescing and compressing multiple CQEs into a
single merged CQE.  Successful compressing improves message rate especially for small packet
traffic.

CQE Compressing in details:

Instead of writing full CQEs to memory, multiple almost identical CQEs are merged and compressed.
Information that is shared between the CQEs is written once, regardless of the number of
compressed CQEs.  In addition, only the unique information (small amount of bytes compared to
full CQE size) is written per CQE. 


CQE Compression Block:

This block contains multiple compressed CQEs.  CQE Compression Block contains a single copy
of CQEs properties which are shared between all the compressed CQEs (called Title, see below)
and multiple mini CQEs (CQEs in compressed form).


Title:

The Title holds information which is shared between all the compressed CQEs in the CQE Compression
Block.  In each Compression Block there is only a single Title regardless of the number
of compressed CQEs.


Mini CQE:

A CQE in compressed form that holds some data needed to extract a single full CQE, for example
8 Bytes instead of 64 Bytes.
The shared information between all compressed CQEs, which belong to the same CQE Compression
Block called Title, is written once, and only the unique information in each compressed
CQE, for example 8 bytes, is written per compressed CQE, called mini CQE.


Since CQE Compression can add overhead to the software (CPU),
it will be only enabled on "weak/slow" PCI slots, where it can actually help.

Applied on top: c047c3b1af62 ('netfilter: conntrack: remove uninitialized shadow variable')

Thanks,
Saeed.

Saeed Mahameed (1):
  net/mlx5e: Enable CQE compression when PCI is slower than link

Tariq Toukan (2):
  net/mlx5e: CQE compression
  net/mlx5e: Expand WQE stride when CQE compression is enabled

 drivers/net/ethernet/mellanox/mlx5/core/en.h       |  24 ++-
 drivers/net/ethernet/mellanox/mlx5/core/en_clock.c |   4 +
 .../net/ethernet/mellanox/mlx5/core/en_ethtool.c   |  19 +++
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |  81 ++++++++-
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c    | 188 ++++++++++++++++++---
 drivers/net/ethernet/mellanox/mlx5/core/en_stats.h |   8 +
 include/linux/mlx5/device.h                        |  34 ++++
 7 files changed, 328 insertions(+), 30 deletions(-)

-- 
2.8.0

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-05-11 23:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-10 21:29 [PATCH net-next 0/3] Mellanox 100G mlx5 CQE compression Saeed Mahameed
2016-05-10 21:29 ` [PATCH net-next 1/3] net/mlx5e: " Saeed Mahameed
2016-05-10 21:29 ` [PATCH net-next 2/3] net/mlx5e: Expand WQE stride when CQE compression is enabled Saeed Mahameed
2016-05-10 21:29 ` [PATCH net-next 3/3] net/mlx5e: Enable CQE compression when PCI is slower than link Saeed Mahameed
2016-05-11 23:44 ` [PATCH net-next 0/3] Mellanox 100G mlx5 CQE compression David Miller

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).