#include <linux/mlx5/device.h>
#include <linux/mlx5/transobj.h>
#include "clock.h"
#include "aso.h"
#include "wq.h"
struct mlx5_aso_cq { … } ____cacheline_aligned_in_smp;
struct mlx5_aso { … } ____cacheline_aligned_in_smp;
static void mlx5_aso_free_cq(struct mlx5_aso_cq *cq)
{ … }
static int mlx5_aso_alloc_cq(struct mlx5_core_dev *mdev, int numa_node,
void *cqc_data, struct mlx5_aso_cq *cq)
{ … }
static int create_aso_cq(struct mlx5_aso_cq *cq, void *cqc_data)
{ … }
static void mlx5_aso_destroy_cq(struct mlx5_aso_cq *cq)
{ … }
static int mlx5_aso_create_cq(struct mlx5_core_dev *mdev, int numa_node,
struct mlx5_aso_cq *cq)
{ … }
static int mlx5_aso_alloc_sq(struct mlx5_core_dev *mdev, int numa_node,
void *sqc_data, struct mlx5_aso *sq)
{ … }
static int create_aso_sq(struct mlx5_core_dev *mdev, int pdn,
void *sqc_data, struct mlx5_aso *sq)
{ … }
static int mlx5_aso_set_sq_rdy(struct mlx5_core_dev *mdev, u32 sqn)
{ … }
static int mlx5_aso_create_sq_rdy(struct mlx5_core_dev *mdev, u32 pdn,
void *sqc_data, struct mlx5_aso *sq)
{ … }
static void mlx5_aso_free_sq(struct mlx5_aso *sq)
{ … }
static void mlx5_aso_destroy_sq(struct mlx5_aso *sq)
{ … }
static int mlx5_aso_create_sq(struct mlx5_core_dev *mdev, int numa_node,
u32 pdn, struct mlx5_aso *sq)
{ … }
struct mlx5_aso *mlx5_aso_create(struct mlx5_core_dev *mdev, u32 pdn)
{ … }
void mlx5_aso_destroy(struct mlx5_aso *aso)
{ … }
void mlx5_aso_build_wqe(struct mlx5_aso *aso, u8 ds_cnt,
struct mlx5_aso_wqe *aso_wqe,
u32 obj_id, u32 opc_mode)
{ … }
struct mlx5_aso_wqe *mlx5_aso_get_wqe(struct mlx5_aso *aso)
{ … }
void mlx5_aso_post_wqe(struct mlx5_aso *aso, bool with_data,
struct mlx5_wqe_ctrl_seg *doorbell_cseg)
{ … }
int mlx5_aso_poll_cq(struct mlx5_aso *aso, bool with_data)
{ … }