#include <linux/gfp.h>
#include <linux/export.h>
#include <linux/mlx4/cmd.h>
#include <linux/mlx4/qp.h>
#include "mlx4.h"
#include "icm.h"
#define MLX4_BF_QP_SKIP_MASK …
#define MLX4_MAX_BF_QP_RANGE …
void mlx4_put_qp(struct mlx4_qp *qp)
{ … }
EXPORT_SYMBOL_GPL(…);
void mlx4_qp_event(struct mlx4_dev *dev, u32 qpn, int event_type)
{ … }
static int is_master_qp0(struct mlx4_dev *dev, struct mlx4_qp *qp, int *real_qp0, int *proxy_qp0)
{ … }
static int __mlx4_qp_modify(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
enum mlx4_qp_state cur_state, enum mlx4_qp_state new_state,
struct mlx4_qp_context *context,
enum mlx4_qp_optpar optpar,
int sqd_event, struct mlx4_qp *qp, int native)
{ … }
int mlx4_qp_modify(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
enum mlx4_qp_state cur_state, enum mlx4_qp_state new_state,
struct mlx4_qp_context *context,
enum mlx4_qp_optpar optpar,
int sqd_event, struct mlx4_qp *qp)
{ … }
EXPORT_SYMBOL_GPL(…);
int __mlx4_qp_reserve_range(struct mlx4_dev *dev, int cnt, int align,
int *base, u8 flags)
{ … }
int mlx4_qp_reserve_range(struct mlx4_dev *dev, int cnt, int align,
int *base, u8 flags, u8 usage)
{ … }
EXPORT_SYMBOL_GPL(…);
void __mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt)
{ … }
void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt)
{ … }
EXPORT_SYMBOL_GPL(…);
int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn)
{ … }
static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn)
{ … }
void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn)
{ … }
static void mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn)
{ … }
struct mlx4_qp *mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn)
{ … }
int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp)
{ … }
EXPORT_SYMBOL_GPL(…);
int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn,
enum mlx4_update_qp_attr attr,
struct mlx4_update_qp_params *params)
{ … }
EXPORT_SYMBOL_GPL(…);
void mlx4_qp_remove(struct mlx4_dev *dev, struct mlx4_qp *qp)
{ … }
EXPORT_SYMBOL_GPL(…);
void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp)
{ … }
EXPORT_SYMBOL_GPL(…);
static int mlx4_CONF_SPECIAL_QP(struct mlx4_dev *dev, u32 base_qpn)
{ … }
#define MLX4_QP_TABLE_RSS_ETH_PRIORITY …
#define MLX4_QP_TABLE_RAW_ETH_PRIORITY …
#define MLX4_QP_TABLE_RAW_ETH_SIZE …
static int mlx4_create_zones(struct mlx4_dev *dev,
u32 reserved_bottom_general,
u32 reserved_top_general,
u32 reserved_bottom_rss,
u32 start_offset_rss,
u32 max_table_offset)
{ … }
static void mlx4_cleanup_qp_zones(struct mlx4_dev *dev)
{ … }
int mlx4_init_qp_table(struct mlx4_dev *dev)
{ … }
void mlx4_cleanup_qp_table(struct mlx4_dev *dev)
{ … }
int mlx4_qp_query(struct mlx4_dev *dev, struct mlx4_qp *qp,
struct mlx4_qp_context *context)
{ … }
EXPORT_SYMBOL_GPL(…);
int mlx4_qp_to_ready(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
struct mlx4_qp_context *context,
struct mlx4_qp *qp, enum mlx4_qp_state *qp_state)
{ … }
EXPORT_SYMBOL_GPL(…);
u16 mlx4_qp_roce_entropy(struct mlx4_dev *dev, u32 qpn)
{ … }