#include <linux/slab.h>
#include <linux/sched/signal.h>
#include <net/sock.h>
#include <net/af_rxrpc.h>
#include "internal.h"
#include "afs_cm.h"
#include "protocol_yfs.h"
#define RXRPC_TRACE_ONLY_DEFINE_ENUMS
#include <trace/events/rxrpc.h>
struct workqueue_struct *afs_async_calls;
static void afs_wake_up_call_waiter(struct sock *, struct rxrpc_call *, unsigned long);
static void afs_wake_up_async_call(struct sock *, struct rxrpc_call *, unsigned long);
static void afs_process_async_call(struct work_struct *);
static void afs_rx_new_call(struct sock *, struct rxrpc_call *, unsigned long);
static void afs_rx_discard_new_call(struct rxrpc_call *, unsigned long);
static int afs_deliver_cm_op_id(struct afs_call *);
static const struct afs_call_type afs_RXCMxxxx = …;
int afs_open_socket(struct afs_net *net)
{ … }
void afs_close_socket(struct afs_net *net)
{ … }
static struct afs_call *afs_alloc_call(struct afs_net *net,
const struct afs_call_type *type,
gfp_t gfp)
{ … }
void afs_put_call(struct afs_call *call)
{ … }
static struct afs_call *afs_get_call(struct afs_call *call,
enum afs_call_trace why)
{ … }
static void afs_queue_call_work(struct afs_call *call)
{ … }
struct afs_call *afs_alloc_flat_call(struct afs_net *net,
const struct afs_call_type *type,
size_t request_size, size_t reply_max)
{ … }
void afs_flat_call_destructor(struct afs_call *call)
{ … }
static void afs_notify_end_request_tx(struct sock *sock,
struct rxrpc_call *rxcall,
unsigned long call_user_ID)
{ … }
void afs_make_call(struct afs_call *call, gfp_t gfp)
{ … }
static void afs_log_error(struct afs_call *call, s32 remote_abort)
{ … }
static void afs_deliver_to_call(struct afs_call *call)
{ … }
void afs_wait_for_call_to_complete(struct afs_call *call)
{ … }
static void afs_wake_up_call_waiter(struct sock *sk, struct rxrpc_call *rxcall,
unsigned long call_user_ID)
{ … }
static void afs_wake_up_async_call(struct sock *sk, struct rxrpc_call *rxcall,
unsigned long call_user_ID)
{ … }
static void afs_process_async_call(struct work_struct *work)
{ … }
static void afs_rx_attach(struct rxrpc_call *rxcall, unsigned long user_call_ID)
{ … }
void afs_charge_preallocation(struct work_struct *work)
{ … }
static void afs_rx_discard_new_call(struct rxrpc_call *rxcall,
unsigned long user_call_ID)
{ … }
static void afs_rx_new_call(struct sock *sk, struct rxrpc_call *rxcall,
unsigned long user_call_ID)
{ … }
static int afs_deliver_cm_op_id(struct afs_call *call)
{ … }
static void afs_notify_end_reply_tx(struct sock *sock,
struct rxrpc_call *rxcall,
unsigned long call_user_ID)
{ … }
void afs_send_empty_reply(struct afs_call *call)
{ … }
void afs_send_simple_reply(struct afs_call *call, const void *buf, size_t len)
{ … }
int afs_extract_data(struct afs_call *call, bool want_more)
{ … }
noinline int afs_protocol_error(struct afs_call *call,
enum afs_eproto_cause cause)
{ … }