mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 10:31:33 -04:00
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
Pull rdma updates from Jason Gunthorpe:
"A new Pensando ionic driver, a new Gen 3 HW support for Intel irdma,
and lots of small bnxt_re improvements.
- Small bug fixes and improves to hfi1, efa, mlx5, erdma, rdmarvt,
siw
- Allow userspace access to IB service records through the rdmacm
- Optimize dma mapping for erdma
- Fix shutdown of the GSI QP in mana
- Support relaxed ordering MR and fix a corruption bug with mlx5 DMA
Data Direct
- Many improvement to bnxt_re:
- Debugging features and counters
- Improve performance of some commands
- Change flow_label reporting in completions
- Mirror vnic
- RDMA flow support
- New RDMA driver for Pensando Ethernet devices: ionic
- Gen 3 hardware support for the Intel irdma driver
- Fix rdma routing resolution with VRFs"
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (85 commits)
RDMA/ionic: Fix memory leak of admin q_wr
RDMA/siw: Always report immediate post SQ errors
RDMA/bnxt_re: improve clarity in ALLOC_PAGE handler
RDMA/irdma: Remove unused struct irdma_cq fields
RDMA/irdma: Fix positive vs negative error codes in irdma_post_send()
RDMA/bnxt_re: Remove non-statistics counters from hw_counters
RDMA/bnxt_re: Add debugfs info entry for device and resource information
RDMA/bnxt_re: Fix incorrect errno used in function comments
RDMA: Use %pe format specifier for error pointers
RDMA/ionic: Use ether_addr_copy instead of memcpy
RDMA/ionic: Fix build failure on SPARC due to xchg() operand size
RDMA/rxe: Fix race in do_task() when draining
IB/sa: Fix sa_local_svc_timeout_ms read race
IB/ipoib: Ignore L3 master device
RDMA/core: Use route entry flag to decide on loopback traffic
RDMA/core: Resolve MAC of next-hop device without ARP support
RDMA/core: Squash a single user static function
RDMA/irdma: Update Kconfig
RDMA/irdma: Extend CQE Error and Flush Handling for GEN3 Devices
RDMA/irdma: Add Atomic Operations support
...
This commit is contained in:
@@ -255,6 +255,7 @@ enum rdma_driver_id {
|
||||
RDMA_DRIVER_SIW,
|
||||
RDMA_DRIVER_ERDMA,
|
||||
RDMA_DRIVER_MANA,
|
||||
RDMA_DRIVER_IONIC,
|
||||
};
|
||||
|
||||
enum ib_uverbs_gid_type {
|
||||
|
||||
@@ -74,4 +74,18 @@ struct ib_user_path_rec {
|
||||
__u8 preference;
|
||||
};
|
||||
|
||||
struct ib_user_service_rec {
|
||||
__be64 id;
|
||||
__u8 gid[16];
|
||||
__be16 pkey;
|
||||
__u8 reserved[2];
|
||||
__be32 lease;
|
||||
__u8 key[16];
|
||||
__u8 name[64];
|
||||
__u8 data_8[16];
|
||||
__be16 data_16[8];
|
||||
__be32 data_32[4];
|
||||
__be64 data_64[2];
|
||||
};
|
||||
|
||||
#endif /* IB_USER_SA_H */
|
||||
|
||||
115
include/uapi/rdma/ionic-abi.h
Normal file
115
include/uapi/rdma/ionic-abi.h
Normal file
@@ -0,0 +1,115 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Copyright (C) 2018-2025, Advanced Micro Devices, Inc */
|
||||
|
||||
#ifndef IONIC_ABI_H
|
||||
#define IONIC_ABI_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define IONIC_ABI_VERSION 1
|
||||
|
||||
#define IONIC_EXPDB_64 1
|
||||
#define IONIC_EXPDB_128 2
|
||||
#define IONIC_EXPDB_256 4
|
||||
#define IONIC_EXPDB_512 8
|
||||
|
||||
#define IONIC_EXPDB_SQ 1
|
||||
#define IONIC_EXPDB_RQ 2
|
||||
|
||||
#define IONIC_CMB_ENABLE 1
|
||||
#define IONIC_CMB_REQUIRE 2
|
||||
#define IONIC_CMB_EXPDB 4
|
||||
#define IONIC_CMB_WC 8
|
||||
#define IONIC_CMB_UC 16
|
||||
|
||||
struct ionic_ctx_req {
|
||||
__u32 rsvd[2];
|
||||
};
|
||||
|
||||
struct ionic_ctx_resp {
|
||||
__u32 rsvd;
|
||||
__u32 page_shift;
|
||||
|
||||
__aligned_u64 dbell_offset;
|
||||
|
||||
__u16 version;
|
||||
__u8 qp_opcodes;
|
||||
__u8 admin_opcodes;
|
||||
|
||||
__u8 sq_qtype;
|
||||
__u8 rq_qtype;
|
||||
__u8 cq_qtype;
|
||||
__u8 admin_qtype;
|
||||
|
||||
__u8 max_stride;
|
||||
__u8 max_spec;
|
||||
__u8 udma_count;
|
||||
__u8 expdb_mask;
|
||||
__u8 expdb_qtypes;
|
||||
|
||||
__u8 rsvd2[3];
|
||||
};
|
||||
|
||||
struct ionic_qdesc {
|
||||
__aligned_u64 addr;
|
||||
__u32 size;
|
||||
__u16 mask;
|
||||
__u8 depth_log2;
|
||||
__u8 stride_log2;
|
||||
};
|
||||
|
||||
struct ionic_ah_resp {
|
||||
__u32 ahid;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct ionic_cq_req {
|
||||
struct ionic_qdesc cq[2];
|
||||
__u8 udma_mask;
|
||||
__u8 rsvd[7];
|
||||
};
|
||||
|
||||
struct ionic_cq_resp {
|
||||
__u32 cqid[2];
|
||||
__u8 udma_mask;
|
||||
__u8 rsvd[7];
|
||||
};
|
||||
|
||||
struct ionic_qp_req {
|
||||
struct ionic_qdesc sq;
|
||||
struct ionic_qdesc rq;
|
||||
__u8 sq_spec;
|
||||
__u8 rq_spec;
|
||||
__u8 sq_cmb;
|
||||
__u8 rq_cmb;
|
||||
__u8 udma_mask;
|
||||
__u8 rsvd[3];
|
||||
};
|
||||
|
||||
struct ionic_qp_resp {
|
||||
__u32 qpid;
|
||||
__u8 sq_cmb;
|
||||
__u8 rq_cmb;
|
||||
__u8 udma_idx;
|
||||
__u8 rsvd[1];
|
||||
__aligned_u64 sq_cmb_offset;
|
||||
__aligned_u64 rq_cmb_offset;
|
||||
};
|
||||
|
||||
struct ionic_srq_req {
|
||||
struct ionic_qdesc rq;
|
||||
__u8 rq_spec;
|
||||
__u8 rq_cmb;
|
||||
__u8 udma_mask;
|
||||
__u8 rsvd[5];
|
||||
};
|
||||
|
||||
struct ionic_srq_resp {
|
||||
__u32 qpid;
|
||||
__u8 rq_cmb;
|
||||
__u8 udma_idx;
|
||||
__u8 rsvd[2];
|
||||
__aligned_u64 rq_cmb_offset;
|
||||
};
|
||||
|
||||
#endif /* IONIC_ABI_H */
|
||||
@@ -20,11 +20,14 @@ enum irdma_memreg_type {
|
||||
IRDMA_MEMREG_TYPE_MEM = 0,
|
||||
IRDMA_MEMREG_TYPE_QP = 1,
|
||||
IRDMA_MEMREG_TYPE_CQ = 2,
|
||||
IRDMA_MEMREG_TYPE_SRQ = 3,
|
||||
};
|
||||
|
||||
enum {
|
||||
IRDMA_ALLOC_UCTX_USE_RAW_ATTR = 1 << 0,
|
||||
IRDMA_ALLOC_UCTX_MIN_HW_WQ_SIZE = 1 << 1,
|
||||
IRDMA_ALLOC_UCTX_MAX_HW_SRQ_QUANTA = 1 << 2,
|
||||
IRDMA_SUPPORT_WQE_FORMAT_V2 = 1 << 3,
|
||||
};
|
||||
|
||||
struct irdma_alloc_ucontext_req {
|
||||
@@ -54,7 +57,8 @@ struct irdma_alloc_ucontext_resp {
|
||||
__u8 rsvd2;
|
||||
__aligned_u64 comp_mask;
|
||||
__u16 min_hw_wq_size;
|
||||
__u8 rsvd3[6];
|
||||
__u32 max_hw_srq_quanta;
|
||||
__u8 rsvd3[2];
|
||||
};
|
||||
|
||||
struct irdma_alloc_pd_resp {
|
||||
@@ -71,6 +75,16 @@ struct irdma_create_cq_req {
|
||||
__aligned_u64 user_shadow_area;
|
||||
};
|
||||
|
||||
struct irdma_create_srq_req {
|
||||
__aligned_u64 user_srq_buf;
|
||||
__aligned_u64 user_shadow_area;
|
||||
};
|
||||
|
||||
struct irdma_create_srq_resp {
|
||||
__u32 srq_id;
|
||||
__u32 srq_size;
|
||||
};
|
||||
|
||||
struct irdma_create_qp_req {
|
||||
__aligned_u64 user_wqe_bufs;
|
||||
__aligned_u64 user_compl_ctx;
|
||||
|
||||
@@ -67,7 +67,9 @@ enum {
|
||||
RDMA_USER_CM_CMD_QUERY,
|
||||
RDMA_USER_CM_CMD_BIND,
|
||||
RDMA_USER_CM_CMD_RESOLVE_ADDR,
|
||||
RDMA_USER_CM_CMD_JOIN_MCAST
|
||||
RDMA_USER_CM_CMD_JOIN_MCAST,
|
||||
RDMA_USER_CM_CMD_RESOLVE_IB_SERVICE,
|
||||
RDMA_USER_CM_CMD_WRITE_CM_EVENT,
|
||||
};
|
||||
|
||||
/* See IBTA Annex A11, servies ID bytes 4 & 5 */
|
||||
@@ -147,7 +149,8 @@ struct rdma_ucm_resolve_route {
|
||||
enum {
|
||||
RDMA_USER_CM_QUERY_ADDR,
|
||||
RDMA_USER_CM_QUERY_PATH,
|
||||
RDMA_USER_CM_QUERY_GID
|
||||
RDMA_USER_CM_QUERY_GID,
|
||||
RDMA_USER_CM_QUERY_IB_SERVICE
|
||||
};
|
||||
|
||||
struct rdma_ucm_query {
|
||||
@@ -187,6 +190,11 @@ struct rdma_ucm_query_path_resp {
|
||||
struct ib_path_rec_data path_data[];
|
||||
};
|
||||
|
||||
struct rdma_ucm_query_ib_service_resp {
|
||||
__u32 num_service_recs;
|
||||
struct ib_user_service_rec recs[];
|
||||
};
|
||||
|
||||
struct rdma_ucm_conn_param {
|
||||
__u32 qp_num;
|
||||
__u32 qkey;
|
||||
@@ -297,6 +305,7 @@ struct rdma_ucm_event_resp {
|
||||
union {
|
||||
struct rdma_ucm_conn_param conn;
|
||||
struct rdma_ucm_ud_param ud;
|
||||
__u32 arg32[2];
|
||||
} param;
|
||||
__u32 reserved;
|
||||
struct rdma_ucm_ece ece;
|
||||
@@ -338,4 +347,33 @@ struct rdma_ucm_migrate_resp {
|
||||
__u32 events_reported;
|
||||
};
|
||||
|
||||
enum {
|
||||
RDMA_USER_CM_IB_SERVICE_FLAG_ID = 1 << 0,
|
||||
RDMA_USER_CM_IB_SERVICE_FLAG_NAME = 1 << 1,
|
||||
};
|
||||
|
||||
#define RDMA_USER_CM_IB_SERVICE_NAME_SIZE 64
|
||||
struct rdma_ucm_ib_service {
|
||||
__u64 service_id;
|
||||
__u8 service_name[RDMA_USER_CM_IB_SERVICE_NAME_SIZE];
|
||||
__u32 flags;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct rdma_ucm_resolve_ib_service {
|
||||
__u32 id;
|
||||
struct rdma_ucm_ib_service ibs;
|
||||
};
|
||||
|
||||
struct rdma_ucm_write_cm_event {
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
__u32 event;
|
||||
__u32 status;
|
||||
union {
|
||||
struct rdma_ucm_conn_param conn;
|
||||
struct rdma_ucm_ud_param ud;
|
||||
__u64 arg;
|
||||
} param;
|
||||
};
|
||||
#endif /* RDMA_USER_CM_H */
|
||||
|
||||
Reference in New Issue
Block a user