Lines Matching full:smc
3 * Shared Memory Communications over RDMA (SMC-R) and RoCE
19 #include "smc.h"
53 static int smc_rx_update_consumer(struct smc_sock *smc, in smc_rx_update_consumer() argument
56 struct smc_connection *conn = &smc->conn; in smc_rx_update_consumer()
57 struct sock *sk = &smc->sk; in smc_rx_update_consumer()
94 static void smc_rx_update_cons(struct smc_sock *smc, size_t len) in smc_rx_update_cons() argument
96 struct smc_connection *conn = &smc->conn; in smc_rx_update_cons()
100 smc_rx_update_consumer(smc, cons, len); in smc_rx_update_cons()
104 struct smc_sock *smc; member
112 struct smc_sock *smc = priv->smc; in smc_rx_pipe_buf_release() local
114 struct sock *sk = &smc->sk; in smc_rx_pipe_buf_release()
120 conn = &smc->conn; in smc_rx_pipe_buf_release()
122 smc_rx_update_cons(smc, priv->len); in smc_rx_pipe_buf_release()
144 struct smc_sock *smc) in smc_rx_splice() argument
155 priv->smc = smc; in smc_rx_splice()
156 partial.offset = src - (char *)smc->conn.rmb_desc->cpu_addr; in smc_rx_splice()
162 spd.pages = &smc->conn.rmb_desc->pages; in smc_rx_splice()
169 sock_hold(&smc->sk); in smc_rx_splice()
170 get_page(smc->conn.rmb_desc->pages); in smc_rx_splice()
171 atomic_add(bytes, &smc->conn.splice_pending); in smc_rx_splice()
184 * @smc smc socket
191 int smc_rx_wait(struct smc_sock *smc, long *timeo, in smc_rx_wait() argument
195 struct smc_connection *conn = &smc->conn; in smc_rx_wait()
198 struct sock *sk = &smc->sk; in smc_rx_wait()
217 static int smc_rx_recv_urg(struct smc_sock *smc, struct msghdr *msg, int len, in smc_rx_recv_urg() argument
220 struct smc_connection *conn = &smc->conn; in smc_rx_recv_urg()
222 struct sock *sk = &smc->sk; in smc_rx_recv_urg()
232 smc->conn.urg_state = SMC_URG_READ; in smc_rx_recv_urg()
246 smc_rx_update_consumer(smc, cons, 0); in smc_rx_recv_urg()
260 static bool smc_rx_recvmsg_data_available(struct smc_sock *smc) in smc_rx_recvmsg_data_available() argument
262 struct smc_connection *conn = &smc->conn; in smc_rx_recvmsg_data_available()
268 smc_rx_update_cons(smc, 0); in smc_rx_recvmsg_data_available()
279 int smc_rx_recvmsg(struct smc_sock *smc, struct msghdr *msg, in smc_rx_recvmsg() argument
284 struct smc_connection *conn = &smc->conn; in smc_rx_recvmsg()
298 sk = &smc->sk; in smc_rx_recvmsg()
302 return smc_rx_recv_urg(smc, msg, len, flags); in smc_rx_recvmsg()
316 if (smc_rx_recvmsg_data_available(smc)) in smc_rx_recvmsg()
323 if (smc_rx_recvmsg_data_available(smc)) in smc_rx_recvmsg()
358 smc_rx_wait(smc, &timeo, smc_rx_data_available); in smc_rx_recvmsg()
372 smc_rx_wait(smc, &timeo, func); in smc_rx_recvmsg()
381 sock_flag(&smc->sk, SOCK_URGINLINE) && in smc_rx_recvmsg()
402 smc); in smc_rx_recvmsg()
430 if (msg && smc_rx_update_consumer(smc, cons, copylen)) in smc_rx_recvmsg()
439 void smc_rx_init(struct smc_sock *smc) in smc_rx_init() argument
441 smc->sk.sk_data_ready = smc_rx_wake_up; in smc_rx_init()
442 atomic_set(&smc->conn.splice_pending, 0); in smc_rx_init()
443 smc->conn.urg_state = SMC_URG_READ; in smc_rx_init()