Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
0002 /*
0003  * Copyright (c) 2013-2018, Mellanox Technologies. All rights reserved.
0004  */
0005 
0006 #ifndef MLX5_IB_SRQ_H
0007 #define MLX5_IB_SRQ_H
0008 
0009 enum {
0010     MLX5_SRQ_FLAG_ERR    = (1 << 0),
0011     MLX5_SRQ_FLAG_WQ_SIG = (1 << 1),
0012     MLX5_SRQ_FLAG_RNDV   = (1 << 2),
0013 };
0014 
0015 struct mlx5_srq_attr {
0016     u32 type;
0017     u32 flags;
0018     u32 log_size;
0019     u32 wqe_shift;
0020     u32 log_page_size;
0021     u32 wqe_cnt;
0022     u32 srqn;
0023     u32 xrcd;
0024     u32 page_offset;
0025     u32 cqn;
0026     u32 pd;
0027     u32 lwm;
0028     u32 user_index;
0029     u64 db_record;
0030     __be64 *pas;
0031     struct ib_umem *umem;
0032     u32 tm_log_list_size;
0033     u32 tm_next_tag;
0034     u32 tm_hw_phase_cnt;
0035     u32 tm_sw_phase_cnt;
0036     u16 uid;
0037 };
0038 
0039 struct mlx5_ib_dev;
0040 
0041 struct mlx5_core_srq {
0042     struct mlx5_core_rsc_common common; /* must be first */
0043     u32 srqn;
0044     int max;
0045     size_t max_gs;
0046     size_t max_avail_gather;
0047     int wqe_shift;
0048     void (*event)(struct mlx5_core_srq *srq, enum mlx5_event e);
0049 
0050     u16 uid;
0051 };
0052 
0053 struct mlx5_srq_table {
0054     struct notifier_block nb;
0055     struct xarray array;
0056 };
0057 
0058 int mlx5_cmd_create_srq(struct mlx5_ib_dev *dev, struct mlx5_core_srq *srq,
0059             struct mlx5_srq_attr *in);
0060 int mlx5_cmd_destroy_srq(struct mlx5_ib_dev *dev, struct mlx5_core_srq *srq);
0061 int mlx5_cmd_query_srq(struct mlx5_ib_dev *dev, struct mlx5_core_srq *srq,
0062                struct mlx5_srq_attr *out);
0063 int mlx5_cmd_arm_srq(struct mlx5_ib_dev *dev, struct mlx5_core_srq *srq,
0064              u16 lwm, int is_srq);
0065 struct mlx5_core_srq *mlx5_cmd_get_srq(struct mlx5_ib_dev *dev, u32 srqn);
0066 
0067 int mlx5_init_srq_table(struct mlx5_ib_dev *dev);
0068 void mlx5_cleanup_srq_table(struct mlx5_ib_dev *dev);
0069 #endif /* MLX5_IB_SRQ_H */