diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-15 23:38:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-15 23:38:15 -0400 |
commit | 2a3c389a0fde49b241430df806a34276568cfb29 (patch) | |
tree | 9cf35829317e8cc2aaffc4341fb824dad63fce02 /include/linux | |
parent | 8de262531f5fbb7458463224a7587429800c24bf (diff) | |
parent | 0b043644c0ca601cb19943a81aa1f1455dbe9461 (diff) |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
Pull rdma updates from Jason Gunthorpe:
"A smaller cycle this time. Notably we see another new driver, 'Soft
iWarp', and the deletion of an ancient unused driver for nes.
- Revise and simplify the signature offload RDMA MR APIs
- More progress on hoisting object allocation boiler plate code out
of the drivers
- Driver bug fixes and revisions for hns, hfi1, efa, cxgb4, qib,
i40iw
- Tree wide cleanups: struct_size, put_user_page, xarray, rst doc
conversion
- Removal of obsolete ib_ucm chardev and nes driver
- netlink based discovery of chardevs and autoloading of the modules
providing them
- Move more of the rdamvt/hfi1 uapi to include/uapi/rdma
- New driver 'siw' for software based iWarp running on top of netdev,
much like rxe's software RoCE.
- mlx5 feature to report events in their raw devx format to userspace
- Expose per-object counters through rdma tool
- Adaptive interrupt moderation for RDMA (DIM), sharing the DIM core
from netdev"
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (194 commits)
RMDA/siw: Require a 64 bit arch
RDMA/siw: Mark expected switch fall-throughs
RDMA/core: Fix -Wunused-const-variable warnings
rdma/siw: Remove set but not used variable 's'
rdma/siw: Add missing dependencies on LIBCRC32C and DMA_VIRT_OPS
RDMA/siw: Add missing rtnl_lock around access to ifa
rdma/siw: Use proper enumerated type in map_cqe_status
RDMA/siw: Remove unnecessary kthread create/destroy printouts
IB/rdmavt: Fix variable shadowing issue in rvt_create_cq
RDMA/core: Fix race when resolving IP address
RDMA/core: Make rdma_counter.h compile stand alone
IB/core: Work on the caller socket net namespace in nldev_newlink()
RDMA/rxe: Fill in wc byte_len with IB_WC_RECV_RDMA_WITH_IMM
RDMA/mlx5: Set RDMA DIM to be enabled by default
RDMA/nldev: Added configuration of RDMA dynamic interrupt moderation to netlink
RDMA/core: Provide RDMA DIM support for ULPs
linux/dim: Implement RDMA adaptive moderation (DIM)
IB/mlx5: Report correctly tag matching rendezvous capability
docs: infiniband: add it to the driver-api bookset
IB/mlx5: Implement VHCA tunnel mechanism in DEVX
...
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/dim.h | 23 | ||||
-rw-r--r-- | include/linux/mlx5/mlx5_ifc.h | 6 | ||||
-rw-r--r-- | include/linux/mlx5/qp.h | 4 |
3 files changed, 30 insertions, 3 deletions
diff --git a/include/linux/dim.h b/include/linux/dim.h index aa9bdd47a648..d3a0fbfff2bb 100644 --- a/include/linux/dim.h +++ b/include/linux/dim.h | |||
@@ -82,6 +82,7 @@ struct dim_stats { | |||
82 | * @prev_stats: Measured rates from previous iteration (for comparison) | 82 | * @prev_stats: Measured rates from previous iteration (for comparison) |
83 | * @start_sample: Sampled data at start of current iteration | 83 | * @start_sample: Sampled data at start of current iteration |
84 | * @work: Work to perform on action required | 84 | * @work: Work to perform on action required |
85 | * @priv: A pointer to the struct that points to dim | ||
85 | * @profile_ix: Current moderation profile | 86 | * @profile_ix: Current moderation profile |
86 | * @mode: CQ period count mode | 87 | * @mode: CQ period count mode |
87 | * @tune_state: Algorithm tuning state (see below) | 88 | * @tune_state: Algorithm tuning state (see below) |
@@ -95,6 +96,7 @@ struct dim { | |||
95 | struct dim_sample start_sample; | 96 | struct dim_sample start_sample; |
96 | struct dim_sample measuring_sample; | 97 | struct dim_sample measuring_sample; |
97 | struct work_struct work; | 98 | struct work_struct work; |
99 | void *priv; | ||
98 | u8 profile_ix; | 100 | u8 profile_ix; |
99 | u8 mode; | 101 | u8 mode; |
100 | u8 tune_state; | 102 | u8 tune_state; |
@@ -363,4 +365,25 @@ struct dim_cq_moder net_dim_get_def_tx_moderation(u8 cq_period_mode); | |||
363 | */ | 365 | */ |
364 | void net_dim(struct dim *dim, struct dim_sample end_sample); | 366 | void net_dim(struct dim *dim, struct dim_sample end_sample); |
365 | 367 | ||
368 | /* RDMA DIM */ | ||
369 | |||
370 | /* | ||
371 | * RDMA DIM profile: | ||
372 | * profile size must be of RDMA_DIM_PARAMS_NUM_PROFILES. | ||
373 | */ | ||
374 | #define RDMA_DIM_PARAMS_NUM_PROFILES 9 | ||
375 | #define RDMA_DIM_START_PROFILE 0 | ||
376 | |||
377 | /** | ||
378 | * rdma_dim - Runs the adaptive moderation. | ||
379 | * @dim: The moderation struct. | ||
380 | * @completions: The number of completions collected in this round. | ||
381 | * | ||
382 | * Each call to rdma_dim takes the latest amount of completions that | ||
383 | * have been collected and counts them as a new event. | ||
384 | * Once enough events have been collected the algorithm decides a new | ||
385 | * moderation level. | ||
386 | */ | ||
387 | void rdma_dim(struct dim *dim, u64 completions); | ||
388 | |||
366 | #endif /* DIM_H */ | 389 | #endif /* DIM_H */ |
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h index 515624c66ce1..b3d5752657d9 100644 --- a/include/linux/mlx5/mlx5_ifc.h +++ b/include/linux/mlx5/mlx5_ifc.h | |||
@@ -1391,7 +1391,9 @@ struct mlx5_ifc_cmd_hca_cap_bits { | |||
1391 | u8 reserved_at_6c8[0x28]; | 1391 | u8 reserved_at_6c8[0x28]; |
1392 | u8 sf_base_id[0x10]; | 1392 | u8 sf_base_id[0x10]; |
1393 | 1393 | ||
1394 | u8 reserved_at_700[0x100]; | 1394 | u8 reserved_at_700[0x80]; |
1395 | u8 vhca_tunnel_commands[0x40]; | ||
1396 | u8 reserved_at_7c0[0x40]; | ||
1395 | }; | 1397 | }; |
1396 | 1398 | ||
1397 | enum mlx5_flow_destination_type { | 1399 | enum mlx5_flow_destination_type { |
@@ -9695,7 +9697,7 @@ struct mlx5_ifc_general_obj_in_cmd_hdr_bits { | |||
9695 | u8 opcode[0x10]; | 9697 | u8 opcode[0x10]; |
9696 | u8 uid[0x10]; | 9698 | u8 uid[0x10]; |
9697 | 9699 | ||
9698 | u8 reserved_at_20[0x10]; | 9700 | u8 vhca_tunnel_id[0x10]; |
9699 | u8 obj_type[0x10]; | 9701 | u8 obj_type[0x10]; |
9700 | 9702 | ||
9701 | u8 obj_id[0x20]; | 9703 | u8 obj_id[0x20]; |
diff --git a/include/linux/mlx5/qp.h b/include/linux/mlx5/qp.h index 127d224443e3..ae63b1ae9004 100644 --- a/include/linux/mlx5/qp.h +++ b/include/linux/mlx5/qp.h | |||
@@ -37,7 +37,8 @@ | |||
37 | #include <linux/mlx5/driver.h> | 37 | #include <linux/mlx5/driver.h> |
38 | 38 | ||
39 | #define MLX5_INVALID_LKEY 0x100 | 39 | #define MLX5_INVALID_LKEY 0x100 |
40 | #define MLX5_SIG_WQE_SIZE (MLX5_SEND_WQE_BB * 5) | 40 | /* UMR (3 WQE_BB's) + SIG (3 WQE_BB's) + PSV (mem) + PSV (wire) */ |
41 | #define MLX5_SIG_WQE_SIZE (MLX5_SEND_WQE_BB * 8) | ||
41 | #define MLX5_DIF_SIZE 8 | 42 | #define MLX5_DIF_SIZE 8 |
42 | #define MLX5_STRIDE_BLOCK_OP 0x400 | 43 | #define MLX5_STRIDE_BLOCK_OP 0x400 |
43 | #define MLX5_CPY_GRD_MASK 0xc0 | 44 | #define MLX5_CPY_GRD_MASK 0xc0 |
@@ -70,6 +71,7 @@ enum mlx5_qp_optpar { | |||
70 | MLX5_QP_OPTPAR_CQN_RCV = 1 << 19, | 71 | MLX5_QP_OPTPAR_CQN_RCV = 1 << 19, |
71 | MLX5_QP_OPTPAR_DC_HS = 1 << 20, | 72 | MLX5_QP_OPTPAR_DC_HS = 1 << 20, |
72 | MLX5_QP_OPTPAR_DC_KEY = 1 << 21, | 73 | MLX5_QP_OPTPAR_DC_KEY = 1 << 21, |
74 | MLX5_QP_OPTPAR_COUNTER_SET_ID = 1 << 25, | ||
73 | }; | 75 | }; |
74 | 76 | ||
75 | enum mlx5_qp_state { | 77 | enum mlx5_qp_state { |