OpenCloudOS-Kernel/include/linux/mlx5
Shay Agroskin 64109f1dc4 net/mlx5e: Replace PTP clock lock from RW lock to seq lock
Changed "priv.clock.lock" lock from 'rw_lock' to 'seq_lock'
in order to improve packet rate performance.

Tested on Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz.
Sent 64b packets between two peers connected by ConnectX-5,
and measured packet rate for the receiver in three modes:
	no time-stamping (base rate)
	time-stamping using rw_lock (old lock) for critical region
	time-stamping using seq_lock (new lock) for critical region
Only the receiver time stamped its packets.

The measured packet rate improvements are:

	Single flow (multiple TX rings to single RX ring):
		without timestamping:	  4.26 (M packets)/sec
		with rw-lock (old lock):  4.1  (M packets)/sec
		with seq-lock (new lock): 4.16 (M packets)/sec
		1.46% improvement

	Multiple flows (multiple TX rings to six RX rings):
		without timestamping: 	  22   (M packets)/sec
		with rw-lock (old lock):  11.7 (M packets)/sec
		with seq-lock (new lock): 21.3 (M packets)/sec
		82.05% improvement

The packet rate improvement is due to the lack of atomic operations
for the 'readers' by the seq-lock.
Since there are much more 'readers' than 'writers' contention
on this lock, almost all atomic operations are saved.
this results in a dramatic decrease in overall
cache misses.

Signed-off-by: Shay Agroskin <shayag@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
2018-09-05 21:14:57 -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/mlx5e: Replace PTP clock lock from RW lock to seq lock 2018-09-05 21:14:57 -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/mlx5: Eliminate query xsrq dead code 2018-03-30 16:16:17 -07:00
vport.h net/mlx5: Remove unused mlx5_query_vport_admin_state 2018-08-08 19:34:55 -07:00