numam-dpdk/drivers/net/mlx5
Nélio Laranjeiro 99c12dcca6 net/mlx5: handle Rx CQE compression
Mini (compressed) completion queue entries (CQEs) are returned by the
NIC when PCI back pressure is detected, in which case the first CQE64
contains common packet information followed by a number of CQE8
providing the rest, followed by a matching number of empty CQE64
entries to be used by software for decompression.

Before decompression:

      0           1          2           6         7         8
  +-------+  +---------+ +-------+   +-------+ +-------+ +-------+
  | CQE64 |  |  CQE64  | | CQE64 |   | CQE64 | | CQE64 | | CQE64 |
  |-------|  |---------| |-------|   |-------| |-------| |-------|
  | ..... |  | cqe8[0] | |       | . |       | |       | | ..... |
  | ..... |  | cqe8[1] | |       | . |       | |       | | ..... |
  | ..... |  | ....... | |       | . |       | |       | | ..... |
  | ..... |  | cqe8[7] | |       |   |       | |       | | ..... |
  +-------+  +---------+ +-------+   +-------+ +-------+ +-------+

After decompression:

      0          1     ...     8
  +-------+  +-------+     +-------+
  | CQE64 |  | CQE64 |     | CQE64 |
  |-------|  |-------|     |-------|
  | ..... |  | ..... |  .  | ..... |
  | ..... |  | ..... |  .  | ..... |
  | ..... |  | ..... |  .  | ..... |
  | ..... |  | ..... |     | ..... |
  +-------+  +-------+     +-------+

This patch does not perform the entire decompression step as it would be
really expensive, instead the first CQE64 is consumed and an internal
context is maintained to interpret the following CQE8 entries directly.

Intermediate empty CQE64 entries are handed back to HW without further
processing.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Signed-off-by: Olga Shern <olgas@mellanox.com>
Signed-off-by: Vasily Philipov <vasilyf@mellanox.com>
2016-06-27 16:17:52 +02:00
..
Makefile net/mlx5: refactor Tx data path 2016-06-27 16:17:52 +02:00
mlx5_defs.h net/mlx5: update prerequisites for upcoming enhancements 2016-06-27 16:17:52 +02:00
mlx5_ethdev.c net/mlx5: refactor Tx data path 2016-06-27 16:17:52 +02:00
mlx5_fdir.c net/mlx5: refactor Rx data path 2016-06-27 16:17:52 +02:00
mlx5_mac.c net/mlx: fix compilation with glibc 2.20 2016-06-20 17:21:34 +02:00
mlx5_mr.c net/mlx5: refactor Tx data path 2016-06-27 16:17:52 +02:00
mlx5_prm.h net/mlx5: add definitions for data path without Verbs 2016-06-27 16:17:52 +02:00
mlx5_rss.c mlx5: fix null RSS key handling 2016-03-25 19:01:37 +01:00
mlx5_rxmode.c net/mlx5: update prerequisites for upcoming enhancements 2016-06-27 16:17:52 +02:00
mlx5_rxq.c net/mlx5: handle Rx CQE compression 2016-06-27 16:17:52 +02:00
mlx5_rxtx.c net/mlx5: handle Rx CQE compression 2016-06-27 16:17:52 +02:00
mlx5_rxtx.h net/mlx5: handle Rx CQE compression 2016-06-27 16:17:52 +02:00
mlx5_stats.c mlx5: allow operation in secondary processes 2016-03-25 18:56:44 +01:00
mlx5_trigger.c mlx5: allow operation in secondary processes 2016-03-25 18:56:44 +01:00
mlx5_txq.c net/mlx5: handle Rx CQE compression 2016-06-27 16:17:52 +02:00
mlx5_utils.h remove extra parentheses in return statement 2016-02-10 15:47:50 +01:00
mlx5_vlan.c net/mlx5: refactor Rx data path 2016-06-27 16:17:52 +02:00
mlx5.c net/mlx5: handle Rx CQE compression 2016-06-27 16:17:52 +02:00
mlx5.h net/mlx5: handle Rx CQE compression 2016-06-27 16:17:52 +02:00
rte_pmd_mlx5_version.map mlx5: introduce new driver for Mellanox ConnectX-4 adapters 2015-10-30 22:03:42 +01:00