Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
Pull rdma updates from Jason Gunthorpe:
"Usual size of updates, a new driver, and most of the bulk focusing on
rxe:
- Usual typos, style, and language updates
- Driver updates for mlx5, irdma, siw, rts, srp, hfi1, hns, erdma,
mlx4, srp
- Lots of RXE updates:
* Improve reply error handling for bad MR operations
* Code tidying
* Debug printing uses common loggers
* Remove half implemented RD related stuff
* Support IBA's recently defined Atomic Write and Flush operations
- erdma support for atomic operations
- New driver 'mana' for Ethernet HW available in Azure VMs. This
driver only supports DPDK"
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (122 commits)
IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
RDMA: Add missed netdev_put() for the netdevice_tracker
RDMA/rxe: Enable RDMA FLUSH capability for rxe device
RDMA/cm: Make QP FLUSHABLE for supported device
RDMA/rxe: Implement flush completion
RDMA/rxe: Implement flush execution in responder side
RDMA/rxe: Implement RC RDMA FLUSH service in requester side
RDMA/rxe: Extend rxe packet format to support flush
RDMA/rxe: Allow registering persistent flag for pmem MR only
RDMA/rxe: Extend rxe user ABI to support flush
RDMA: Extend RDMA kernel verbs ABI to support flush
RDMA: Extend RDMA user ABI to support flush
RDMA/rxe: Fix incorrect responder length checking
RDMA/rxe: Fix oops with zero length reads
RDMA/mlx5: Remove not-used IB_FLOW_SPEC_IB define
RDMA/hns: Fix XRC caps on HIP08
RDMA/hns: Fix error code of CMD
RDMA/hns: Fix page size cap from firmware
RDMA/hns: Fix PBL page MTR find
RDMA/hns: Fix AH attr queried by query_qp
...
This commit is contained in:
@@ -85,11 +85,26 @@ struct hns_roce_ib_create_qp_resp {
|
||||
__aligned_u64 dwqe_mmap_key;
|
||||
};
|
||||
|
||||
enum {
|
||||
HNS_ROCE_EXSGE_FLAGS = 1 << 0,
|
||||
};
|
||||
|
||||
enum {
|
||||
HNS_ROCE_RSP_EXSGE_FLAGS = 1 << 0,
|
||||
};
|
||||
|
||||
struct hns_roce_ib_alloc_ucontext_resp {
|
||||
__u32 qp_tab_size;
|
||||
__u32 cqe_size;
|
||||
__u32 srq_tab_size;
|
||||
__u32 reserved;
|
||||
__u32 config;
|
||||
__u32 max_inline_data;
|
||||
};
|
||||
|
||||
struct hns_roce_ib_alloc_ucontext {
|
||||
__u32 config;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct hns_roce_ib_alloc_pd_resp {
|
||||
|
||||
@@ -57,6 +57,8 @@ enum ib_uverbs_access_flags {
|
||||
IB_UVERBS_ACCESS_ZERO_BASED = 1 << 5,
|
||||
IB_UVERBS_ACCESS_ON_DEMAND = 1 << 6,
|
||||
IB_UVERBS_ACCESS_HUGETLB = 1 << 7,
|
||||
IB_UVERBS_ACCESS_FLUSH_GLOBAL = 1 << 8,
|
||||
IB_UVERBS_ACCESS_FLUSH_PERSISTENT = 1 << 9,
|
||||
|
||||
IB_UVERBS_ACCESS_RELAXED_ORDERING = IB_UVERBS_ACCESS_OPTIONAL_FIRST,
|
||||
IB_UVERBS_ACCESS_OPTIONAL_RANGE =
|
||||
@@ -251,6 +253,7 @@ enum rdma_driver_id {
|
||||
RDMA_DRIVER_EFA,
|
||||
RDMA_DRIVER_SIW,
|
||||
RDMA_DRIVER_ERDMA,
|
||||
RDMA_DRIVER_MANA,
|
||||
};
|
||||
|
||||
enum ib_uverbs_gid_type {
|
||||
|
||||
@@ -105,6 +105,18 @@ enum {
|
||||
IB_USER_VERBS_EX_CMD_MODIFY_CQ
|
||||
};
|
||||
|
||||
/* see IBA A19.4.1.1 Placement Types */
|
||||
enum ib_placement_type {
|
||||
IB_FLUSH_GLOBAL = 1U << 0,
|
||||
IB_FLUSH_PERSISTENT = 1U << 1,
|
||||
};
|
||||
|
||||
/* see IBA A19.4.1.2 Selectivity Level */
|
||||
enum ib_selectivity_level {
|
||||
IB_FLUSH_RANGE = 0,
|
||||
IB_FLUSH_MR,
|
||||
};
|
||||
|
||||
/*
|
||||
* Make sure that all structs defined in this file remain laid out so
|
||||
* that they pack the same way on 32-bit and 64-bit architectures (to
|
||||
@@ -466,6 +478,8 @@ enum ib_uverbs_wc_opcode {
|
||||
IB_UVERBS_WC_BIND_MW = 5,
|
||||
IB_UVERBS_WC_LOCAL_INV = 6,
|
||||
IB_UVERBS_WC_TSO = 7,
|
||||
IB_UVERBS_WC_FLUSH = 8,
|
||||
IB_UVERBS_WC_ATOMIC_WRITE = 9,
|
||||
};
|
||||
|
||||
struct ib_uverbs_wc {
|
||||
@@ -784,6 +798,8 @@ enum ib_uverbs_wr_opcode {
|
||||
IB_UVERBS_WR_RDMA_READ_WITH_INV = 11,
|
||||
IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
|
||||
IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
|
||||
IB_UVERBS_WR_FLUSH = 14,
|
||||
IB_UVERBS_WR_ATOMIC_WRITE = 15,
|
||||
/* Review enum ib_wr_opcode before modifying this */
|
||||
};
|
||||
|
||||
@@ -1331,6 +1347,11 @@ enum ib_uverbs_device_cap_flags {
|
||||
/* Deprecated. Please use IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS. */
|
||||
IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
|
||||
IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
|
||||
/* Flush placement types */
|
||||
IB_UVERBS_DEVICE_FLUSH_GLOBAL = 1ULL << 38,
|
||||
IB_UVERBS_DEVICE_FLUSH_PERSISTENT = 1ULL << 39,
|
||||
/* Atomic write attributes */
|
||||
IB_UVERBS_DEVICE_ATOMIC_WRITE = 1ULL << 40,
|
||||
};
|
||||
|
||||
enum ib_uverbs_raw_packet_caps {
|
||||
|
||||
66
include/uapi/rdma/mana-abi.h
Normal file
66
include/uapi/rdma/mana-abi.h
Normal file
@@ -0,0 +1,66 @@
|
||||
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) */
|
||||
/*
|
||||
* Copyright (c) 2022, Microsoft Corporation. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef MANA_ABI_USER_H
|
||||
#define MANA_ABI_USER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <rdma/ib_user_ioctl_verbs.h>
|
||||
|
||||
/*
|
||||
* Increment this value if any changes that break userspace ABI
|
||||
* compatibility are made.
|
||||
*/
|
||||
|
||||
#define MANA_IB_UVERBS_ABI_VERSION 1
|
||||
|
||||
struct mana_ib_create_cq {
|
||||
__aligned_u64 buf_addr;
|
||||
};
|
||||
|
||||
struct mana_ib_create_qp {
|
||||
__aligned_u64 sq_buf_addr;
|
||||
__u32 sq_buf_size;
|
||||
__u32 port;
|
||||
};
|
||||
|
||||
struct mana_ib_create_qp_resp {
|
||||
__u32 sqid;
|
||||
__u32 cqid;
|
||||
__u32 tx_vp_offset;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct mana_ib_create_wq {
|
||||
__aligned_u64 wq_buf_addr;
|
||||
__u32 wq_buf_size;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
/* RX Hash function flags */
|
||||
enum mana_ib_rx_hash_function_flags {
|
||||
MANA_IB_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
|
||||
};
|
||||
|
||||
struct mana_ib_create_qp_rss {
|
||||
__aligned_u64 rx_hash_fields_mask;
|
||||
__u8 rx_hash_function;
|
||||
__u8 reserved[7];
|
||||
__u32 rx_hash_key_len;
|
||||
__u8 rx_hash_key[40];
|
||||
__u32 port;
|
||||
};
|
||||
|
||||
struct rss_resp_entry {
|
||||
__u32 cqid;
|
||||
__u32 wqid;
|
||||
};
|
||||
|
||||
struct mana_ib_create_qp_rss_resp {
|
||||
__aligned_u64 num_entries;
|
||||
struct rss_resp_entry entries[64];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -82,6 +82,13 @@ struct rxe_send_wr {
|
||||
__u32 invalidate_rkey;
|
||||
} ex;
|
||||
union {
|
||||
struct {
|
||||
__aligned_u64 remote_addr;
|
||||
__u32 length;
|
||||
__u32 rkey;
|
||||
__u8 type;
|
||||
__u8 level;
|
||||
} flush;
|
||||
struct {
|
||||
__aligned_u64 remote_addr;
|
||||
__u32 rkey;
|
||||
@@ -146,6 +153,7 @@ struct rxe_dma_info {
|
||||
__u32 reserved;
|
||||
union {
|
||||
__DECLARE_FLEX_ARRAY(__u8, inline_data);
|
||||
__DECLARE_FLEX_ARRAY(__u8, atomic_wr);
|
||||
__DECLARE_FLEX_ARRAY(struct rxe_sge, sge);
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user