[PATCH rdma v5 2/7] RDMA/zrdma: Add core data structures and ABI definitions
Yanze Zhang <[email protected]>
| Newsgroups | org.kernel.vger.linux-rdma,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Add fundamental data structures, hardware control structures, and user-space ABI definitions required by the driver. These headers provide the type definitions for the subsequent implementation patches. Signed-off-by: Yanze Zhang <[email protected]> --- drivers/infiniband/hw/zrdma/zrdma_abi.h | 78 ++++++++++++++++++++++ drivers/infiniband/hw/zrdma/zrdma_ctrl.h | 22 ++++++ drivers/infiniband/hw/zrdma/zrdma_defs.h | 19 ++++++ drivers/infiniband/hw/zrdma/zrdma_type.h | 85 ++++++++++++++++++++++++ 4 files changed, 204 insertions(+) create mode 100644 drivers/infiniband/hw/zrdma/zrdma_abi.h create mode 100644 drivers/infiniband/hw/zrdma/zrdma_ctrl.h create mode 100644 drivers/infiniband/hw/zrdma/zrdma_defs.h create mode 100644 drivers/infiniband/hw/zrdma/zrdma_type.h diff --git a/drivers/infiniband/hw/zrdma/zrdma_abi.h b/drivers/infiniband/hw/zrdma/zrdma_abi.h new file mode 100644 index 000000000000..d0b7f2f4ef5a --- /dev/null +++ b/drivers/infiniband/hw/zrdma/zrdma_abi.h @@ -0,0 +1,78 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB + * + * ZTE DingHai Rdma driver + * Copyright (c) 2022-2026, ZTE Corporation + */ + +#ifndef ZRDMA_ABI_H +#define ZRDMA_ABI_H + +/* user-space whose last ABI ver is 5 */ +#define ZXDH_ABI_VER 5 +#define ZXDH_CONTEXT_VER_V1 5 +#define ZXDH_CONTEXT_VER_V2 6 +#define ZXDH_CONTEXT_VER_V3 7 + +enum zxdh_rdma_tool_flags { + ZXDH_QP_EXTEND_OP = 1 << 0, + ZXDH_CAPTURE = 1 << 1, + ZXDH_GET_HW_DATA = 1 << 2, + ZXDH_GET_HW_OBJECT_DATA = 1 << 3, + ZXDH_CHECK_HW_HEALTH = 1 << 4, + ZXDH_RDMA_TOOL_CFG_DEV_PARAM = 1 << 5, + ZXDH_RDMA_TOOL_SHOW_RES_MAP = 1 << 5, + ZXDH_RDMA_TOOL_READ_RAM = 1 << 6, + ZXDH_RDMA_TOOL_DEVX_MODIFY_CQ = 1 << 7, + ZXDH_RDMA_SET_CREDIT_CAP = 1 << 8, + ZXDH_RDMA_SWITCH = 1 << 9, + ZXDH_RDMA_TOOL_DEVX_EXT_MEM = 1 << 10, + ZXDH_RDMA_TOOL_PRIV_EXT = 1 << 11, +}; + +enum zxdh_db_addr_type { + ZXDH_DB_ADDR_PHY = 0, + ZXDH_DB_ADDR_BAR = 1, +}; + +struct zxdh_alloc_pd_resp { + __u32 pd_id; + __u8 rsvd[4]; +}; + +struct zxdh_alloc_ucontext_req { + __u32 rsvd32; + __u8 userspace_ver; + __u8 rsvd8[3]; +}; + +struct zxdh_alloc_ucontext_resp { + __u32 max_pds; + __u32 max_qps; + __u32 wq_size; /* size of the WQs (SQ+RQ) in the mmaped area */ + __u8 kernel_ver; + __u8 db_addr_type; + __u16 rdma_tool_flags; + __aligned_u64 feature_flags; + __aligned_u64 sq_db_mmap_key; + __aligned_u64 cq_db_mmap_key; + __u32 max_hw_wq_frags; + __u32 max_hw_read_sges; + __u32 max_hw_inline; + __u32 max_hw_rq_quanta; + __u32 max_hw_srq_quanta; + __u32 max_hw_wq_quanta; + __u32 max_hw_srq_wr; + __u32 min_hw_cq_size; + __u32 max_hw_cq_size; + __u16 max_hw_sq_chunk; + __u8 hw_rev; + __u8 chip_rev; + __aligned_u64 srq_db_mmap_key; + __aligned_u64 sq_db_bar_off; + __aligned_u64 cq_db_bar_off; + __aligned_u64 srq_db_bar_off; + __u32 srq_db_mmap_size; + __u16 rsv[6]; +}; + +#endif /* ZRDMA_ABI_H */ diff --git a/drivers/infiniband/hw/zrdma/zrdma_ctrl.h b/drivers/infiniband/hw/zrdma/zrdma_ctrl.h new file mode 100644 index 000000000000..d25570683b61 --- /dev/null +++ b/drivers/infiniband/hw/zrdma/zrdma_ctrl.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB + * + * ZTE DingHai Rdma driver + * Copyright (c) 2022-2026, ZTE Corporation + */ + +#ifndef ZRDMA_CTRL_H +#define ZRDMA_CTRL_H + +struct zxdh_hw { + u8 __iomem *hw_addr; + struct device *device; +}; + +struct zxdh_sc_dev { + struct zxdh_hw *hw; + u32 max_ceqs; + u8 ep_id; + u8 driver_load; +}; + +#endif diff --git a/drivers/infiniband/hw/zrdma/zrdma_defs.h b/drivers/infiniband/hw/zrdma/zrdma_defs.h new file mode 100644 index 000000000000..208f1f60bbae --- /dev/null +++ b/drivers/infiniband/hw/zrdma/zrdma_defs.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB + * + * ZTE DingHai Rdma driver + * Copyright (c) 2022-2026, ZTE Corporation + */ + +#ifndef ZRDMA_DEFS_H +#define ZRDMA_DEFS_H + +#include <linux/bitfield.h> +#include <rdma/ib_verbs.h> + +#define ZXDH_FEATURE_RTS_AE 1ULL +#define ZXDH_FEATURE_CQ_RESIZE 2ULL +#define ZXDH_FEATURE_64_BYTE_CQE 128ULL + +#define ZXDH_MAX_USER_PRIORITY 8 + +#endif /* ZRDMA_DEFS_H */ diff --git a/drivers/infiniband/hw/zrdma/zrdma_type.h b/drivers/infiniband/hw/zrdma/zrdma_type.h new file mode 100644 index 000000000000..5ee9e17f35f7 --- /dev/null +++ b/drivers/infiniband/hw/zrdma/zrdma_type.h @@ -0,0 +1,85 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB + * + * ZTE DingHai Rdma driver + * Copyright (c) 2022-2026, ZTE Corporation + */ + +#ifndef ZRDMA_TYPE_H +#define ZRDMA_TYPE_H + +#include <linux/msi.h> + +enum zxdh_rdma_reset_type { + ZXDH_RDMA_PFR, + ZXDH_RDMA_CORER, + ZXDH_RDMA_GLOBR, +}; + +enum zxdh_function_type { + ZXDH_FUNCTION_TYPE_PF, + ZXDH_FUNCTION_TYPE_VF, +}; + +struct zxdh_rdma_core_dev; + +struct zxdh_rdma_core_ops { + int (*request_reset)(struct zxdh_rdma_core_dev *cdev, + enum zxdh_rdma_reset_type reset_type); + int (*zxdh_common_func)(void *in_param, void *out_param, u32 opcode); +}; + +struct zxdh_rdma_ver_info { + u16 major; + u16 minor; + u64 support; /* 0~7:net_major,8~15:net_minor,16~23:rdma_minor,24~63:rscv */ +}; + +enum zxdh_rdma_protocol { + ZXDH_RDMA_PROTOCOL_IWARP = BIT(0), + ZXDH_RDMA_PROTOCOL_ROCEV2 = BIT(1), +}; + +struct zxdh_qos_params { + u8 num_tc; +}; + +struct zxdh_rdma_core_dev { + struct pci_dev *pdev; + struct auxiliary_device *adev; + u8 __iomem *hw_addr; + int zdev_info_id; + struct zxdh_rdma_ver_info ver; + void *auxiliary_priv; + enum zxdh_function_type ftype; + u16 vport_id; + u16 slot_id; + enum zxdh_rdma_protocol rdma_protocol; + + struct zxdh_qos_params qos_info; + struct msix_entry *msix_entries; + u16 msix_count; + const struct zxdh_rdma_core_ops *ops; + void *dh_dev; +}; + +struct zxdh_rdma_if { + void *(*get_rdma_netdev)(void *dh_dev); +}; + +struct zxdh_auxiliary_dev { + struct auxiliary_device adev; + struct zxdh_rdma_core_dev *zxdh_info; + struct zxdh_rdma_if *rdma_ops; + void *ops; + void *parent; + s32 aux_id; + void *auxiliary_ops[18]; +}; + +struct zxdh_sc_pd { + struct zxdh_sc_dev *dev; + u32 pd_id; + int abi_ver; +}; + +#endif /* ZRDMA_TYPE_H */ -- 2.27.0