alistair23-linux/include/linux/mlx5
Tariq Toukan 37fdffb217 net/mlx5: WQ, fixes for fragmented WQ buffers API
mlx5e netdevice used to calculate fragment edges by a call to
mlx5_wq_cyc_get_frag_size(). This calculation did not give the correct
indication for queues smaller than a PAGE_SIZE, (broken by default on
PowerPC, where PAGE_SIZE == 64KB).  Here it is replaced by the correct new
calls/API.

Since (TX/RX) Work Queues buffers are fragmented, here we introduce
changes to the API in core driver, so that it gets a stride index and
returns the index of last stride on same fragment, and an additional
wrapping function that returns the number of physically contiguous
strides that can be written contiguously to the work queue.

This obsoletes the following API functions, and their buggy
usage in EN driver:
* mlx5_wq_cyc_get_frag_size()
* mlx5_wq_cyc_ctr2fragix()

The new API improves modularity and hides the details of such
calculation for mlx5e netdevice and mlx5_ib rdma drivers.

New calculation is also more efficient, and improves performance
as follows:

Packet rate test: pktgen, UDP / IPv4, 64byte, single ring, 8K ring size.

Before: 16,477,619 pps
After:  17,085,793 pps

3.7% improvement

Fixes: 3a2f703312 ("net/mlx5: Use order-0 allocations for all WQ types")
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
2018-10-10 18:26:16 -07:00
..
accel.h net/mlx5: IPSec, Add support for ESN 2018-03-07 15:54:36 -08:00
cmd.h
cq.h mlx5: Move dump error CQE function out of mlx5_ib for code sharing 2018-03-27 17:17:28 -07:00
device.h net/mlx5: Rename modify/query_vport state related enums 2018-08-08 19:34:54 -07:00
doorbell.h IB/mlx5: Use blue flame register allocator in mlx5_ib 2017-01-09 20:25:08 +02:00
driver.h net/mlx5: WQ, fixes for fragmented WQ buffers API 2018-10-10 18:26:16 -07: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.h Merge branch 'linus/master' into rdma.git for-next 2018-08-16 14:21:29 -06:00
fs_helpers.h {net,IB}/mlx5: Add ipsec helper 2018-04-04 12:06:27 -06:00
mlx5_ifc.h Merge branch 'linus/master' into rdma.git for-next 2018-08-16 14:21:29 -06:00
mlx5_ifc_fpga.h net/mlx5: Accel, add TLS rx offload routines 2018-07-16 00:13:11 -07:00
port.h net/mlx5e: PFC stall prevention support 2018-03-26 13:46:46 -07:00
qp.h net/mlx5: Add DCT command interface 2018-01-08 11:38:49 -07:00
srq.h net/mlx5: Add XRQ support 2017-08-29 08:30:20 -04:00
transobj.h net/mlx5e: Avoid unbounded peer devices when unpairing TC hairpin rules 2018-10-01 10:58:00 -07:00
vport.h net/mlx5: Remove unused mlx5_query_vport_admin_state 2018-08-08 19:34:55 -07:00