#include <linux/mlx5/driver.h>
#include "mlx5_ifc_vhca_event.h"
#include "mlx5_core.h"
#include "vhca_event.h"
#include "ecpf.h"
#define CREATE_TRACE_POINTS
#include "diag/vhca_tracepoint.h"
struct mlx5_vhca_state_notifier { … };
struct mlx5_vhca_event_work { … };
struct mlx5_vhca_event_handler { … };
struct mlx5_vhca_events { … };
int mlx5_cmd_query_vhca_state(struct mlx5_core_dev *dev, u16 function_id, u32 *out, u32 outlen)
{ … }
static int mlx5_cmd_modify_vhca_state(struct mlx5_core_dev *dev, u16 function_id,
u32 *in, u32 inlen)
{ … }
int mlx5_modify_vhca_sw_id(struct mlx5_core_dev *dev, u16 function_id, u32 sw_fn_id)
{ … }
int mlx5_vhca_event_arm(struct mlx5_core_dev *dev, u16 function_id)
{ … }
static void
mlx5_vhca_event_notify(struct mlx5_core_dev *dev, struct mlx5_vhca_state_event *event)
{ … }
static void mlx5_vhca_state_work_handler(struct work_struct *_work)
{ … }
void mlx5_vhca_events_work_enqueue(struct mlx5_core_dev *dev, int idx, struct work_struct *work)
{ … }
static int
mlx5_vhca_state_change_notifier(struct notifier_block *nb, unsigned long type, void *data)
{ … }
void mlx5_vhca_state_cap_handle(struct mlx5_core_dev *dev, void *set_hca_cap)
{ … }
int mlx5_vhca_event_init(struct mlx5_core_dev *dev)
{ … }
void mlx5_vhca_event_work_queues_flush(struct mlx5_core_dev *dev)
{ … }
void mlx5_vhca_event_cleanup(struct mlx5_core_dev *dev)
{ … }
void mlx5_vhca_event_start(struct mlx5_core_dev *dev)
{ … }
void mlx5_vhca_event_stop(struct mlx5_core_dev *dev)
{ … }
int mlx5_vhca_event_notifier_register(struct mlx5_core_dev *dev, struct notifier_block *nb)
{ … }
void mlx5_vhca_event_notifier_unregister(struct mlx5_core_dev *dev, struct notifier_block *nb)
{ … }