You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (87 commits) mlx4_core: Fix section mismatches IPoIB: Allow setting policy to ignore multicast groups IB/mthca: Mark error paths as unlikely() in post_srq_recv functions IB/ipath: Minor fix to ordering of freeing and zeroing of tid pages. IB/ipath: Remove redundant link state checks IB/ipath: Fix IB_EVENT_PORT_ERR event IB/ipath: Better handling of unexpected GPIO interrupts IB/ipath: Maintain active time on all chips IB/ipath: Fix QHT7040 serial number check IB/ipath: Indicate a couple of chip bugs to userspace IB/ipath: iba6110 rev4 no longer needs recv header overrun workaround IB/ipath: Use counters in ipath_poll and cleanup interrupts in ipath_close IB/ipath: Remove duplicate copy of LMC IB/ipath: Add ability to set the LMC via the sysfs debugging interface IB/ipath: Optimize completion queue entry insertion and polling IB/ipath: Implement IB_EVENT_QP_LAST_WQE_REACHED IB/ipath: Generate flush CQE when QP is in error state IB/ipath: Remove redundant code IB/ipath: Future proof eeprom checksum code (contents reading) IB/ipath: UC RDMA WRITE with IMMEDIATE doesn't send the immediate ...
This commit is contained in:
@@ -48,6 +48,10 @@ enum {
|
||||
MLX4_MAX_PORTS = 2
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX4_BOARD_ID_LEN = 64
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX4_DEV_CAP_FLAG_RC = 1 << 0,
|
||||
MLX4_DEV_CAP_FLAG_UC = 1 << 1,
|
||||
@@ -210,6 +214,17 @@ struct mlx4_mr {
|
||||
int enabled;
|
||||
};
|
||||
|
||||
struct mlx4_fmr {
|
||||
struct mlx4_mr mr;
|
||||
struct mlx4_mpt_entry *mpt;
|
||||
__be64 *mtts;
|
||||
dma_addr_t dma_handle;
|
||||
int max_pages;
|
||||
int max_maps;
|
||||
int maps;
|
||||
u8 page_shift;
|
||||
};
|
||||
|
||||
struct mlx4_uar {
|
||||
unsigned long pfn;
|
||||
int index;
|
||||
@@ -272,6 +287,8 @@ struct mlx4_dev {
|
||||
unsigned long flags;
|
||||
struct mlx4_caps caps;
|
||||
struct radix_tree_root qp_table_tree;
|
||||
u32 rev_id;
|
||||
char board_id[MLX4_BOARD_ID_LEN];
|
||||
};
|
||||
|
||||
struct mlx4_init_port_param {
|
||||
@@ -331,4 +348,14 @@ int mlx4_CLOSE_PORT(struct mlx4_dev *dev, int port);
|
||||
int mlx4_multicast_attach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16]);
|
||||
int mlx4_multicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16]);
|
||||
|
||||
int mlx4_map_phys_fmr(struct mlx4_dev *dev, struct mlx4_fmr *fmr, u64 *page_list,
|
||||
int npages, u64 iova, u32 *lkey, u32 *rkey);
|
||||
int mlx4_fmr_alloc(struct mlx4_dev *dev, u32 pd, u32 access, int max_pages,
|
||||
int max_maps, u8 page_shift, struct mlx4_fmr *fmr);
|
||||
int mlx4_fmr_enable(struct mlx4_dev *dev, struct mlx4_fmr *fmr);
|
||||
void mlx4_fmr_unmap(struct mlx4_dev *dev, struct mlx4_fmr *fmr,
|
||||
u32 *lkey, u32 *rkey);
|
||||
int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr);
|
||||
int mlx4_SYNC_TPT(struct mlx4_dev *dev);
|
||||
|
||||
#endif /* MLX4_DEVICE_H */
|
||||
|
||||
@@ -477,12 +477,15 @@ int ib_send_cm_rej(struct ib_cm_id *cm_id,
|
||||
const void *private_data,
|
||||
u8 private_data_len);
|
||||
|
||||
#define IB_CM_MRA_FLAG_DELAY 0x80 /* Send MRA only after a duplicate msg */
|
||||
|
||||
/**
|
||||
* ib_send_cm_mra - Sends a message receipt acknowledgement to a connection
|
||||
* message.
|
||||
* @cm_id: Connection identifier associated with the connection message.
|
||||
* @service_timeout: The maximum time required for the sender to reply to
|
||||
* to the connection message.
|
||||
* @service_timeout: The lower 5-bits specify the maximum time required for
|
||||
* the sender to reply to to the connection message. The upper 3-bits
|
||||
* specify additional control flags.
|
||||
* @private_data: Optional user-defined private data sent with the
|
||||
* message receipt acknowledgement.
|
||||
* @private_data_len: Size of the private data buffer, in bytes.
|
||||
|
||||
@@ -109,8 +109,8 @@ enum ib_sa_selector {
|
||||
* Reserved rows are indicated with comments to help maintainability.
|
||||
*/
|
||||
|
||||
/* reserved: 0 */
|
||||
/* reserved: 1 */
|
||||
#define IB_SA_PATH_REC_SERVICE_ID (IB_SA_COMP_MASK( 0) |\
|
||||
IB_SA_COMP_MASK( 1))
|
||||
#define IB_SA_PATH_REC_DGID IB_SA_COMP_MASK( 2)
|
||||
#define IB_SA_PATH_REC_SGID IB_SA_COMP_MASK( 3)
|
||||
#define IB_SA_PATH_REC_DLID IB_SA_COMP_MASK( 4)
|
||||
@@ -123,7 +123,7 @@ enum ib_sa_selector {
|
||||
#define IB_SA_PATH_REC_REVERSIBLE IB_SA_COMP_MASK(11)
|
||||
#define IB_SA_PATH_REC_NUMB_PATH IB_SA_COMP_MASK(12)
|
||||
#define IB_SA_PATH_REC_PKEY IB_SA_COMP_MASK(13)
|
||||
/* reserved: 14 */
|
||||
#define IB_SA_PATH_REC_QOS_CLASS IB_SA_COMP_MASK(14)
|
||||
#define IB_SA_PATH_REC_SL IB_SA_COMP_MASK(15)
|
||||
#define IB_SA_PATH_REC_MTU_SELECTOR IB_SA_COMP_MASK(16)
|
||||
#define IB_SA_PATH_REC_MTU IB_SA_COMP_MASK(17)
|
||||
@@ -134,8 +134,7 @@ enum ib_sa_selector {
|
||||
#define IB_SA_PATH_REC_PREFERENCE IB_SA_COMP_MASK(22)
|
||||
|
||||
struct ib_sa_path_rec {
|
||||
/* reserved */
|
||||
/* reserved */
|
||||
__be64 service_id;
|
||||
union ib_gid dgid;
|
||||
union ib_gid sgid;
|
||||
__be16 dlid;
|
||||
@@ -148,7 +147,7 @@ struct ib_sa_path_rec {
|
||||
int reversible;
|
||||
u8 numb_path;
|
||||
__be16 pkey;
|
||||
/* reserved */
|
||||
__be16 qos_class;
|
||||
u8 sl;
|
||||
u8 mtu_selector;
|
||||
u8 mtu;
|
||||
|
||||
@@ -45,6 +45,7 @@ struct ib_umem {
|
||||
int offset;
|
||||
int page_size;
|
||||
int writable;
|
||||
int hugetlb;
|
||||
struct list_head chunk_list;
|
||||
struct work_struct work;
|
||||
struct mm_struct *mm;
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* ib_user_mad_hdr - MAD packet header
|
||||
* ib_user_mad_hdr_old - Old version of MAD packet header without pkey_index
|
||||
* @id - ID of agent MAD received with/to be sent with
|
||||
* @status - 0 on successful receive, ETIMEDOUT if no response
|
||||
* received (transaction ID in data[] will be set to TID of original
|
||||
@@ -71,7 +71,7 @@
|
||||
* @gid - Remote GID in GRH
|
||||
* @flow_label - Flow label in GRH
|
||||
*/
|
||||
struct ib_user_mad_hdr {
|
||||
struct ib_user_mad_hdr_old {
|
||||
__u32 id;
|
||||
__u32 status;
|
||||
__u32 timeout_ms;
|
||||
@@ -90,6 +90,52 @@ struct ib_user_mad_hdr {
|
||||
__be32 flow_label;
|
||||
};
|
||||
|
||||
/**
|
||||
* ib_user_mad_hdr - MAD packet header
|
||||
* This layout allows specifying/receiving the P_Key index. To use
|
||||
* this capability, an application must call the
|
||||
* IB_USER_MAD_ENABLE_PKEY ioctl on the user MAD file handle before
|
||||
* any other actions with the file handle.
|
||||
* @id - ID of agent MAD received with/to be sent with
|
||||
* @status - 0 on successful receive, ETIMEDOUT if no response
|
||||
* received (transaction ID in data[] will be set to TID of original
|
||||
* request) (ignored on send)
|
||||
* @timeout_ms - Milliseconds to wait for response (unset on receive)
|
||||
* @retries - Number of automatic retries to attempt
|
||||
* @qpn - Remote QP number received from/to be sent to
|
||||
* @qkey - Remote Q_Key to be sent with (unset on receive)
|
||||
* @lid - Remote lid received from/to be sent to
|
||||
* @sl - Service level received with/to be sent with
|
||||
* @path_bits - Local path bits received with/to be sent with
|
||||
* @grh_present - If set, GRH was received/should be sent
|
||||
* @gid_index - Local GID index to send with (unset on receive)
|
||||
* @hop_limit - Hop limit in GRH
|
||||
* @traffic_class - Traffic class in GRH
|
||||
* @gid - Remote GID in GRH
|
||||
* @flow_label - Flow label in GRH
|
||||
* @pkey_index - P_Key index
|
||||
*/
|
||||
struct ib_user_mad_hdr {
|
||||
__u32 id;
|
||||
__u32 status;
|
||||
__u32 timeout_ms;
|
||||
__u32 retries;
|
||||
__u32 length;
|
||||
__be32 qpn;
|
||||
__be32 qkey;
|
||||
__be16 lid;
|
||||
__u8 sl;
|
||||
__u8 path_bits;
|
||||
__u8 grh_present;
|
||||
__u8 gid_index;
|
||||
__u8 hop_limit;
|
||||
__u8 traffic_class;
|
||||
__u8 gid[16];
|
||||
__be32 flow_label;
|
||||
__u16 pkey_index;
|
||||
__u8 reserved[6];
|
||||
};
|
||||
|
||||
/**
|
||||
* ib_user_mad - MAD packet
|
||||
* @hdr - MAD packet header
|
||||
@@ -101,6 +147,26 @@ struct ib_user_mad {
|
||||
__u64 data[0];
|
||||
};
|
||||
|
||||
/*
|
||||
* Earlier versions of this interface definition declared the
|
||||
* method_mask[] member as an array of __u32 but treated it as a
|
||||
* bitmap made up of longs in the kernel. This ambiguity meant that
|
||||
* 32-bit big-endian applications that can run on both 32-bit and
|
||||
* 64-bit kernels had no consistent ABI to rely on, and 64-bit
|
||||
* big-endian applications that treated method_mask as being made up
|
||||
* of 32-bit words would have their bitmap misinterpreted.
|
||||
*
|
||||
* To clear up this confusion, we change the declaration of
|
||||
* method_mask[] to use unsigned long and handle the conversion from
|
||||
* 32-bit userspace to 64-bit kernel for big-endian systems in the
|
||||
* compat_ioctl method. Unfortunately, to keep the structure layout
|
||||
* the same, we need the method_mask[] array to be aligned only to 4
|
||||
* bytes even when long is 64 bits, which forces us into this ugly
|
||||
* typedef.
|
||||
*/
|
||||
typedef unsigned long __attribute__((aligned(4))) packed_ulong;
|
||||
#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof (long)))
|
||||
|
||||
/**
|
||||
* ib_user_mad_reg_req - MAD registration request
|
||||
* @id - Set by the kernel; used to identify agent in future requests.
|
||||
@@ -119,7 +185,7 @@ struct ib_user_mad {
|
||||
*/
|
||||
struct ib_user_mad_reg_req {
|
||||
__u32 id;
|
||||
__u32 method_mask[4];
|
||||
packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK];
|
||||
__u8 qpn;
|
||||
__u8 mgmt_class;
|
||||
__u8 mgmt_class_version;
|
||||
@@ -134,4 +200,6 @@ struct ib_user_mad_reg_req {
|
||||
|
||||
#define IB_USER_MAD_UNREGISTER_AGENT _IOW(IB_IOCTL_MAGIC, 2, __u32)
|
||||
|
||||
#define IB_USER_MAD_ENABLE_PKEY _IO(IB_IOCTL_MAGIC, 3)
|
||||
|
||||
#endif /* IB_USER_MAD_H */
|
||||
|
||||
@@ -314,4 +314,18 @@ int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr,
|
||||
*/
|
||||
void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr);
|
||||
|
||||
/**
|
||||
* rdma_set_service_type - Set the type of service associated with a
|
||||
* connection identifier.
|
||||
* @id: Communication identifier to associated with service type.
|
||||
* @tos: Type of service.
|
||||
*
|
||||
* The type of service is interpretted as a differentiated service
|
||||
* field (RFC 2474). The service type should be specified before
|
||||
* performing route resolution, as existing communication on the
|
||||
* connection identifier may be unaffected. The type of service
|
||||
* requested may not be supported by the network to all destinations.
|
||||
*/
|
||||
void rdma_set_service_type(struct rdma_cm_id *id, int tos);
|
||||
|
||||
#endif /* RDMA_CM_H */
|
||||
|
||||
@@ -212,4 +212,22 @@ struct rdma_ucm_event_resp {
|
||||
} param;
|
||||
};
|
||||
|
||||
/* Option levels */
|
||||
enum {
|
||||
RDMA_OPTION_ID = 0
|
||||
};
|
||||
|
||||
/* Option details */
|
||||
enum {
|
||||
RDMA_OPTION_ID_TOS = 0
|
||||
};
|
||||
|
||||
struct rdma_ucm_set_option {
|
||||
__u64 optval;
|
||||
__u32 id;
|
||||
__u32 level;
|
||||
__u32 optname;
|
||||
__u32 optlen;
|
||||
};
|
||||
|
||||
#endif /* RDMA_USER_CM_H */
|
||||
|
||||
Reference in New Issue
Block a user