#include <linux/skbuff.h>
#include "rxe.h"
#include "rxe_loc.h"
#include "rxe_queue.h"
static char *resp_state_name[] = …;
void rxe_resp_queue_pkt(struct rxe_qp *qp, struct sk_buff *skb)
{ … }
static inline enum resp_states get_req(struct rxe_qp *qp,
struct rxe_pkt_info **pkt_p)
{ … }
static enum resp_states check_psn(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states check_op_seq(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static bool check_qp_attr_access(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states check_op_valid(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states get_srq_wqe(struct rxe_qp *qp)
{ … }
static enum resp_states check_resource(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states rxe_resp_check_length(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static void qp_resp_from_reth(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
{ … }
static void qp_resp_from_atmeth(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
{ … }
static enum resp_states check_rkey(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states send_data_in(struct rxe_qp *qp, void *data_addr,
int data_len)
{ … }
static enum resp_states write_data_in(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static struct resp_res *rxe_prepare_res(struct rxe_qp *qp,
struct rxe_pkt_info *pkt,
int type)
{ … }
static enum resp_states process_flush(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states atomic_reply(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states atomic_write_reply(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static struct sk_buff *prepare_ack_packet(struct rxe_qp *qp,
struct rxe_pkt_info *ack,
int opcode,
int payload,
u32 psn,
u8 syndrome)
{ … }
static struct rxe_mr *rxe_recheck_mr(struct rxe_qp *qp, u32 rkey)
{ … }
static enum resp_states read_reply(struct rxe_qp *qp,
struct rxe_pkt_info *req_pkt)
{ … }
static int invalidate_rkey(struct rxe_qp *qp, u32 rkey)
{ … }
static enum resp_states execute(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
{ … }
static enum resp_states do_complete(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static int send_common_ack(struct rxe_qp *qp, u8 syndrome, u32 psn,
int opcode, const char *msg)
{ … }
static int send_ack(struct rxe_qp *qp, u8 syndrome, u32 psn)
{ … }
static int send_atomic_ack(struct rxe_qp *qp, u8 syndrome, u32 psn)
{ … }
static int send_read_response_ack(struct rxe_qp *qp, u8 syndrome, u32 psn)
{ … }
static enum resp_states acknowledge(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static enum resp_states cleanup(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static struct resp_res *find_resource(struct rxe_qp *qp, u32 psn)
{ … }
static enum resp_states duplicate_request(struct rxe_qp *qp,
struct rxe_pkt_info *pkt)
{ … }
static void do_class_ac_error(struct rxe_qp *qp, u8 syndrome,
enum ib_wc_status status)
{ … }
static enum resp_states do_class_d1e_error(struct rxe_qp *qp)
{ … }
static void drain_req_pkts(struct rxe_qp *qp)
{ … }
static int flush_recv_wqe(struct rxe_qp *qp, struct rxe_recv_wqe *wqe)
{ … }
static void flush_recv_queue(struct rxe_qp *qp, bool notify)
{ … }
int rxe_receiver(struct rxe_qp *qp)
{ … }