#include <linux/dma-mapping.h>
#include <linux/crc32.h>
#include <linux/iommu.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <net/udp.h>
#include <rdma/ib_verbs.h>
#include <rdma/ib_user_verbs.h>
#include <rdma/iw_cm.h>
#include <rdma/ib_umem.h>
#include <rdma/ib_addr.h>
#include <rdma/ib_cache.h>
#include <linux/qed/qed_if.h>
#include <linux/qed/qed_rdma_if.h>
#include "qedr.h"
#include "verbs.h"
#include <rdma/qedr-abi.h>
#include "qedr_roce_cm.h"
void qedr_inc_sw_gsi_cons(struct qedr_qp_hwq_info *info)
{ … }
void qedr_store_gsi_qp_cq(struct qedr_dev *dev, struct qedr_qp *qp,
struct ib_qp_init_attr *attrs)
{ … }
static void qedr_ll2_complete_tx_packet(void *cxt, u8 connection_handle,
void *cookie,
dma_addr_t first_frag_addr,
bool b_last_fragment,
bool b_last_packet)
{ … }
static void qedr_ll2_complete_rx_packet(void *cxt,
struct qed_ll2_comp_rx_data *data)
{ … }
static void qedr_ll2_release_rx_packet(void *cxt, u8 connection_handle,
void *cookie, dma_addr_t rx_buf_addr,
bool b_last_packet)
{ … }
static void qedr_destroy_gsi_cq(struct qedr_dev *dev,
struct ib_qp_init_attr *attrs)
{ … }
static inline int qedr_check_gsi_qp_attrs(struct qedr_dev *dev,
struct ib_qp_init_attr *attrs)
{ … }
static int qedr_ll2_post_tx(struct qedr_dev *dev,
struct qed_roce_ll2_packet *pkt)
{ … }
static int qedr_ll2_stop(struct qedr_dev *dev)
{ … }
static int qedr_ll2_start(struct qedr_dev *dev,
struct ib_qp_init_attr *attrs, struct qedr_qp *qp)
{ … }
int qedr_create_gsi_qp(struct qedr_dev *dev, struct ib_qp_init_attr *attrs,
struct qedr_qp *qp)
{ … }
int qedr_destroy_gsi_qp(struct qedr_dev *dev)
{ … }
#define QEDR_MAX_UD_HEADER_SIZE …
#define QEDR_GSI_QPN …
static inline int qedr_gsi_build_header(struct qedr_dev *dev,
struct qedr_qp *qp,
const struct ib_send_wr *swr,
struct ib_ud_header *udh,
int *roce_mode)
{ … }
static inline int qedr_gsi_build_packet(struct qedr_dev *dev,
struct qedr_qp *qp,
const struct ib_send_wr *swr,
struct qed_roce_ll2_packet **p_packet)
{ … }
int qedr_gsi_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
const struct ib_send_wr **bad_wr)
{ … }
int qedr_gsi_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
const struct ib_recv_wr **bad_wr)
{ … }
int qedr_gsi_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc)
{ … }