summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-07-15 23:38:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-07-15 23:38:15 -0400
commit2a3c389a0fde49b241430df806a34276568cfb29 (patch)
tree9cf35829317e8cc2aaffc4341fb824dad63fce02 /include/linux
parent8de262531f5fbb7458463224a7587429800c24bf (diff)
parent0b043644c0ca601cb19943a81aa1f1455dbe9461 (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.h23
-rw-r--r--include/linux/mlx5/mlx5_ifc.h6
-rw-r--r--include/linux/mlx5/qp.h4
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 */
364void net_dim(struct dim *dim, struct dim_sample end_sample); 366void 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 */
387void 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
1397enum mlx5_flow_destination_type { 1399enum 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
75enum mlx5_qp_state { 77enum mlx5_qp_state {