diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-08-04 20:10:31 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-08-04 20:10:31 -0400 |
| commit | 0cda611386b2fcbf8bb32e9a5d82bfed4856fc36 (patch) | |
| tree | 1647e00675ab924edfb22b69ea3872db091b8900 /include/linux/mlx5 | |
| parent | fdf1f7ff1bd7f1c6d1d5dc2b29b6b11a4f722276 (diff) | |
| parent | 7f1d25b47d919cef29388aff37e7b074e65bf512 (diff) | |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
Pull base rdma updates from Doug Ledford:
"Round one of 4.8 code: while this is mostly normal, there is a new
driver in here (the driver was hosted outside the kernel for several
years and is actually a fairly mature and well coded driver). It
amounts to 13,000 of the 16,000 lines of added code in here.
Summary:
- Updates/fixes for iw_cxgb4 driver
- Updates/fixes for mlx5 driver
- Add flow steering and RSS API
- Add hardware stats to mlx4 and mlx5 drivers
- Add firmware version API for RDMA driver use
- Add the rxe driver (this is a software RoCE driver that makes any
Ethernet device a RoCE device)
- Fixes for i40iw driver
- Support for send only multicast joins in the cma layer
- Other minor fixes"
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (72 commits)
Soft RoCE driver
IB/core: Support for CMA multicast join flags
IB/sa: Add cached attribute containing SM information to SA port
IB/uverbs: Fix race between uverbs_close and remove_one
IB/mthca: Clean up error unwind flow in mthca_reset()
IB/mthca: NULL arg to pci_dev_put is OK
IB/hfi1: NULL arg to sc_return_credits is OK
IB/mlx4: Add diagnostic hardware counters
net/mlx4: Query performance and diagnostics counters
net/mlx4: Add diagnostic counters capability bit
Use smaller 512 byte messages for portmapper messages
IB/ipoib: Report SG feature regardless of HW UD CSUM capability
IB/mlx4: Don't use GFP_ATOMIC for CQ resize struct
IB/hfi1: Disable by default
IB/rdmavt: Disable by default
IB/mlx5: Fix port counter ID association to QP offset
IB/mlx5: Fix iteration overrun in GSI qps
i40iw: Add NULL check for puda buffer
i40iw: Change dup_ack_thresh to u8
i40iw: Remove unnecessary check for moving CQ head
...
Diffstat (limited to 'include/linux/mlx5')
| -rw-r--r-- | include/linux/mlx5/cq.h | 2 | ||||
| -rw-r--r-- | include/linux/mlx5/driver.h | 6 | ||||
| -rw-r--r-- | include/linux/mlx5/qp.h | 4 | ||||
| -rw-r--r-- | include/linux/mlx5/srq.h | 25 |
4 files changed, 32 insertions, 5 deletions
diff --git a/include/linux/mlx5/cq.h b/include/linux/mlx5/cq.h index 2be976dd4966..2566f6d6444f 100644 --- a/include/linux/mlx5/cq.h +++ b/include/linux/mlx5/cq.h | |||
| @@ -58,6 +58,8 @@ struct mlx5_core_cq { | |||
| 58 | void (*comp)(struct mlx5_core_cq *); | 58 | void (*comp)(struct mlx5_core_cq *); |
| 59 | void *priv; | 59 | void *priv; |
| 60 | } tasklet_ctx; | 60 | } tasklet_ctx; |
| 61 | int reset_notify_added; | ||
| 62 | struct list_head reset_notify; | ||
| 61 | }; | 63 | }; |
| 62 | 64 | ||
| 63 | 65 | ||
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index a041b99fceac..ccea6fb16482 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h | |||
| @@ -46,6 +46,7 @@ | |||
| 46 | 46 | ||
| 47 | #include <linux/mlx5/device.h> | 47 | #include <linux/mlx5/device.h> |
| 48 | #include <linux/mlx5/doorbell.h> | 48 | #include <linux/mlx5/doorbell.h> |
| 49 | #include <linux/mlx5/srq.h> | ||
| 49 | 50 | ||
| 50 | enum { | 51 | enum { |
| 51 | MLX5_RQ_BITMASK_VSD = 1 << 1, | 52 | MLX5_RQ_BITMASK_VSD = 1 << 1, |
| @@ -798,11 +799,10 @@ struct mlx5_cmd_mailbox *mlx5_alloc_cmd_mailbox_chain(struct mlx5_core_dev *dev, | |||
| 798 | void mlx5_free_cmd_mailbox_chain(struct mlx5_core_dev *dev, | 799 | void mlx5_free_cmd_mailbox_chain(struct mlx5_core_dev *dev, |
| 799 | struct mlx5_cmd_mailbox *head); | 800 | struct mlx5_cmd_mailbox *head); |
| 800 | int mlx5_core_create_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq, | 801 | int mlx5_core_create_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq, |
| 801 | struct mlx5_create_srq_mbox_in *in, int inlen, | 802 | struct mlx5_srq_attr *in); |
| 802 | int is_xrc); | ||
| 803 | int mlx5_core_destroy_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq); | 803 | int mlx5_core_destroy_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq); |
| 804 | int mlx5_core_query_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq, | 804 | int mlx5_core_query_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq, |
| 805 | struct mlx5_query_srq_mbox_out *out); | 805 | struct mlx5_srq_attr *out); |
| 806 | int mlx5_core_arm_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq, | 806 | int mlx5_core_arm_srq(struct mlx5_core_dev *dev, struct mlx5_core_srq *srq, |
| 807 | u16 lwm, int is_srq); | 807 | u16 lwm, int is_srq); |
| 808 | void mlx5_init_mkey_table(struct mlx5_core_dev *dev); | 808 | void mlx5_init_mkey_table(struct mlx5_core_dev *dev); |
diff --git a/include/linux/mlx5/qp.h b/include/linux/mlx5/qp.h index ab310819ac36..7879bf411891 100644 --- a/include/linux/mlx5/qp.h +++ b/include/linux/mlx5/qp.h | |||
| @@ -556,9 +556,9 @@ struct mlx5_destroy_qp_mbox_out { | |||
| 556 | struct mlx5_modify_qp_mbox_in { | 556 | struct mlx5_modify_qp_mbox_in { |
| 557 | struct mlx5_inbox_hdr hdr; | 557 | struct mlx5_inbox_hdr hdr; |
| 558 | __be32 qpn; | 558 | __be32 qpn; |
| 559 | u8 rsvd1[4]; | ||
| 560 | __be32 optparam; | ||
| 561 | u8 rsvd0[4]; | 559 | u8 rsvd0[4]; |
| 560 | __be32 optparam; | ||
| 561 | u8 rsvd1[4]; | ||
| 562 | struct mlx5_qp_context ctx; | 562 | struct mlx5_qp_context ctx; |
| 563 | u8 rsvd2[16]; | 563 | u8 rsvd2[16]; |
| 564 | }; | 564 | }; |
diff --git a/include/linux/mlx5/srq.h b/include/linux/mlx5/srq.h index f43ed054a3e0..33c97dc900f8 100644 --- a/include/linux/mlx5/srq.h +++ b/include/linux/mlx5/srq.h | |||
| @@ -35,6 +35,31 @@ | |||
| 35 | 35 | ||
| 36 | #include <linux/mlx5/driver.h> | 36 | #include <linux/mlx5/driver.h> |
| 37 | 37 | ||
| 38 | enum { | ||
| 39 | MLX5_SRQ_FLAG_ERR = (1 << 0), | ||
| 40 | MLX5_SRQ_FLAG_WQ_SIG = (1 << 1), | ||
| 41 | }; | ||
| 42 | |||
| 43 | struct mlx5_srq_attr { | ||
| 44 | u32 type; | ||
| 45 | u32 flags; | ||
| 46 | u32 log_size; | ||
| 47 | u32 wqe_shift; | ||
| 48 | u32 log_page_size; | ||
| 49 | u32 wqe_cnt; | ||
| 50 | u32 srqn; | ||
| 51 | u32 xrcd; | ||
| 52 | u32 page_offset; | ||
| 53 | u32 cqn; | ||
| 54 | u32 pd; | ||
| 55 | u32 lwm; | ||
| 56 | u32 user_index; | ||
| 57 | u64 db_record; | ||
| 58 | u64 *pas; | ||
| 59 | }; | ||
| 60 | |||
| 61 | struct mlx5_core_dev; | ||
| 62 | |||
| 38 | void mlx5_init_srq_table(struct mlx5_core_dev *dev); | 63 | void mlx5_init_srq_table(struct mlx5_core_dev *dev); |
| 39 | void mlx5_cleanup_srq_table(struct mlx5_core_dev *dev); | 64 | void mlx5_cleanup_srq_table(struct mlx5_core_dev *dev); |
| 40 | 65 | ||
