mirror_ubuntu-kernels/include/linux/mlx5
Bodong Wang 591905ba96 net/mlx5: Introduce Mellanox SmartNIC and modify page management logic
Mellanox's SmartNIC combines embedded CPU(e.g, ARM) processing power
with advanced network offloads to accelerate a multitude of security,
networking and storage applications.

With the introduction of the SmartNIC, there is a new PCI function
called Embedded CPU Physical Function(ECPF). And it's possible for a
PF to get its ICM pages from the ECPF PCI function. Driver shall
identify if it is running on such a function by reading a bit in
the initialization segment.

When firmware asks for pages, it would issue a page request event
specifying how many pages it requests and for which function. That
driver responds with a manage_pages command providing the requested
pages along with an indication for which function it is providing these
pages.

The encoding before this patch was as follows:
    function_id == 0: pages are requested for the function receiving
                      the EQE.
    function_id != 0: pages are requested for VF identified by the
                      function_id value

A new one bit field in the EQE identifies that pages are requested for
the ECPF.

The notion of page_supplier can be introduced here and to support that,
manage pages and query pages were modified so firmware can distinguish
the following cases:

1. Function provides pages for itself
2. PF provides pages for its VF
3. ECPF provides pages to itself
4. ECPF provides pages for another function

This distinction is possible through the introduction of the bit
"embedded_cpu_function" in query_pages, manage_pages and page request
EQE.

Signed-off-by: Bodong Wang <bodong@mellanox.com>
Signed-off-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
2019-02-14 12:14:41 -08:00
..
accel.h net/mlx5: IPSec, Add support for ESN 2018-03-07 15:54:36 -08:00
cmd.h
cq.h net/mlx5e: Use CQE padding for Ethernet CQs 2018-12-11 14:52:20 -08:00
device.h net/mlx5: Introduce Mellanox SmartNIC and modify page management logic 2019-02-14 12:14:41 -08:00
doorbell.h
driver.h net/mlx5: Introduce Mellanox SmartNIC and modify page management logic 2019-02-14 12:14:41 -08:00
eq.h net/mlx5: EQ, Introduce atomic notifier chain subscription API 2018-11-26 13:39:33 -08:00
eswitch.h net/mlx5: E-Switch, Avoid setup attempt if not being e-switch manager 2018-06-26 15:26:29 -07:00
fs_helpers.h {net,IB}/mlx5: Add ipsec helper 2018-04-04 12:06:27 -06:00
fs.h net/mlx5: Support extended destination format in flow steering command 2018-12-10 14:00:08 -08:00
mlx5_ifc_fpga.h net/mlx5: Accel, add TLS rx offload routines 2018-07-16 00:13:11 -07:00
mlx5_ifc.h net/mlx5: Introduce Mellanox SmartNIC and modify page management logic 2019-02-14 12:14:41 -08:00
port.h net/mlx5: Device events, Use async events chain 2018-11-26 13:39:34 -08:00
qp.h net/mlx5: Add interface to hold and release core resources 2018-11-12 22:20:29 +02:00
transobj.h net/mlx5: Move SRQ functions to RDMA part 2018-12-04 09:14:30 +02:00
vport.h net/mlx5: Use consistent vport num argument type 2019-02-14 12:14:41 -08:00