net/mlx5e: Unify the RX flow
authorAchiad Shochat <achiad@mellanox.com>
Tue, 4 Aug 2015 11:05:40 +0000 (14:05 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Aug 2015 05:00:58 +0000 (22:00 -0700)
commit4cbeaff54f00f39493c4251bf115d02e26ac8bf2
tree6a8785365f9e9cf93f09158a445d3e8b3dfd89d7
parentadc4cc99b765d49b0613365a89212cfc75c06c22
net/mlx5e: Unify the RX flow

Generally an RX packet flows through the following objects:
Flow table --> TIR --> RQT --> RQ

Where:
- TIR stands for "Transport Interface Receive", defining the RSS and
  LRO paramaters.
- RQT stands for "RQ Table", implementing the RSS indirection table.
- RQ stands for "Receive Queue"

For flows that do not need LRO, nor RSS, the driver made a shortcut to
the above RX flow by pointing to the RQ directly from the TIR, yielding
this flow:
Flow table --> TIR --> RQ

In this commit we remove this shortcut by "inserting" a single-RQ RQT
between the TIR and the RQ, i.e RX packets will reach the same RQ but
will go through an RQT of size 1, pointing to just a single RQ.

This way the RX traffic re-direction to/from the "Drop RQ" will be more
uniform (AKA "one flow"), as it will involve only RQTs re-direction and
no TIRs re-direction.

Signed-off-by: Achiad Shochat <achiad@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx5/core/en.h
drivers/net/ethernet/mellanox/mlx5/core/en_main.c