#include <linux/bug.h>
#include <linux/errno.h>
#include <linux/spinlock.h>
#include "usnic_log.h"
#include "usnic_vnic.h"
#include "usnic_fwd.h"
#include "usnic_uiom.h"
#include "usnic_debugfs.h"
#include "usnic_ib_qp_grp.h"
#include "usnic_ib_sysfs.h"
#include "usnic_transport.h"
#define DFLT_RQ_IDX …
const char *usnic_ib_qp_grp_state_to_string(enum ib_qp_state state)
{ … }
int usnic_ib_qp_grp_dump_hdr(char *buf, int buf_sz)
{ … }
int usnic_ib_qp_grp_dump_rows(void *obj, char *buf, int buf_sz)
{ … }
static struct usnic_vnic_res_chunk *
get_qp_res_chunk(struct usnic_ib_qp_grp *qp_grp)
{ … }
static int enable_qp_grp(struct usnic_ib_qp_grp *qp_grp)
{ … }
static int disable_qp_grp(struct usnic_ib_qp_grp *qp_grp)
{ … }
static int init_filter_action(struct usnic_ib_qp_grp *qp_grp,
struct usnic_filter_action *uaction)
{ … }
static struct usnic_ib_qp_grp_flow*
create_roce_custom_flow(struct usnic_ib_qp_grp *qp_grp,
struct usnic_transport_spec *trans_spec)
{ … }
static void release_roce_custom_flow(struct usnic_ib_qp_grp_flow *qp_flow)
{ … }
static struct usnic_ib_qp_grp_flow*
create_udp_flow(struct usnic_ib_qp_grp *qp_grp,
struct usnic_transport_spec *trans_spec)
{ … }
static void release_udp_flow(struct usnic_ib_qp_grp_flow *qp_flow)
{ … }
static struct usnic_ib_qp_grp_flow*
create_and_add_flow(struct usnic_ib_qp_grp *qp_grp,
struct usnic_transport_spec *trans_spec)
{ … }
static void release_and_remove_flow(struct usnic_ib_qp_grp_flow *qp_flow)
{ … }
static void release_and_remove_all_flows(struct usnic_ib_qp_grp *qp_grp)
{ … }
int usnic_ib_qp_grp_modify(struct usnic_ib_qp_grp *qp_grp,
enum ib_qp_state new_state,
void *data)
{ … }
static struct usnic_vnic_res_chunk**
alloc_res_chunk_list(struct usnic_vnic *vnic,
struct usnic_vnic_res_spec *res_spec, void *owner_obj)
{ … }
static void free_qp_grp_res(struct usnic_vnic_res_chunk **res_chunk_list)
{ … }
static int qp_grp_and_vf_bind(struct usnic_ib_vf *vf,
struct usnic_ib_pd *pd,
struct usnic_ib_qp_grp *qp_grp)
{ … }
static void qp_grp_and_vf_unbind(struct usnic_ib_qp_grp *qp_grp)
{ … }
static void log_spec(struct usnic_vnic_res_spec *res_spec)
{ … }
static int qp_grp_id_from_flow(struct usnic_ib_qp_grp_flow *qp_flow,
uint32_t *id)
{ … }
int usnic_ib_qp_grp_create(struct usnic_ib_qp_grp *qp_grp,
struct usnic_fwd_dev *ufdev, struct usnic_ib_vf *vf,
struct usnic_ib_pd *pd,
struct usnic_vnic_res_spec *res_spec,
struct usnic_transport_spec *transport_spec)
{ … }
void usnic_ib_qp_grp_destroy(struct usnic_ib_qp_grp *qp_grp)
{ … }
struct usnic_vnic_res_chunk*
usnic_ib_qp_grp_get_chunk(struct usnic_ib_qp_grp *qp_grp,
enum usnic_vnic_res_type res_type)
{ … }