Lines Matching full:conn
53 * @conn connection to update
62 struct smc_connection *conn = &smc->conn; in smc_rx_update_consumer() local
67 smc_curs_add(conn->rmb_desc->len, &cons, len); in smc_rx_update_consumer()
70 if (conn->urg_state == SMC_URG_VALID || conn->urg_rx_skip_pend) { in smc_rx_update_consumer()
71 diff = smc_curs_comp(conn->rmb_desc->len, &cons, in smc_rx_update_consumer()
72 &conn->urg_curs); in smc_rx_update_consumer()
77 conn->urg_state = SMC_URG_READ; in smc_rx_update_consumer()
83 smc_curs_add(conn->rmb_desc->len, &cons, 1); in smc_rx_update_consumer()
84 conn->urg_rx_skip_pend = false; in smc_rx_update_consumer()
87 conn->urg_state = SMC_URG_READ; in smc_rx_update_consumer()
91 smc_curs_copy(&conn->local_tx_ctrl.cons, &cons, conn); in smc_rx_update_consumer()
95 smc_tx_consumer_update(conn, force); in smc_rx_update_consumer()
102 struct smc_connection *conn = &smc->conn; in smc_rx_update_cons() local
105 smc_curs_copy(&cons, &conn->local_tx_ctrl.cons, conn); in smc_rx_update_cons()
119 struct smc_connection *conn; in smc_rx_pipe_buf_release() local
126 conn = &smc->conn; in smc_rx_pipe_buf_release()
130 if (atomic_sub_and_test(priv->len, &conn->splice_pending)) in smc_rx_pipe_buf_release()
152 struct smc_link_group *lgr = smc->conn.lgr; in smc_rx_splice()
161 nr_pages = !lgr->is_smcd && smc->conn.rmb_desc->is_vm ? in smc_rx_splice()
180 (!lgr->is_smcd && !smc->conn.rmb_desc->is_vm)) { in smc_rx_splice()
184 partial[0].offset = src - (char *)smc->conn.rmb_desc->cpu_addr; in smc_rx_splice()
187 pages[0] = smc->conn.rmb_desc->pages; in smc_rx_splice()
215 if (!lgr->is_smcd && smc->conn.rmb_desc->is_vm) { in smc_rx_splice()
219 get_page(smc->conn.rmb_desc->pages); in smc_rx_splice()
221 atomic_add(bytes, &smc->conn.splice_pending); in smc_rx_splice()
241 static int smc_rx_data_available_and_no_splice_pend(struct smc_connection *conn, size_t peeked) in smc_rx_data_available_and_no_splice_pend() argument
243 return smc_rx_data_available(conn, peeked) && in smc_rx_data_available_and_no_splice_pend()
244 !atomic_read(&conn->splice_pending); in smc_rx_data_available_and_no_splice_pend()
257 int (*fcrit)(struct smc_connection *conn, size_t baseline)) in smc_rx_wait() argument
260 struct smc_connection *conn = &smc->conn; in smc_rx_wait() local
262 &conn->local_tx_ctrl.conn_state_flags; in smc_rx_wait()
266 if (fcrit(conn, peeked)) in smc_rx_wait()
274 conn->killed || in smc_rx_wait()
275 fcrit(conn, peeked), in smc_rx_wait()
285 struct smc_connection *conn = &smc->conn; in smc_rx_recv_urg() local
291 !(conn->urg_state == SMC_URG_VALID) || in smc_rx_recv_urg()
292 conn->urg_state == SMC_URG_READ) in smc_rx_recv_urg()
296 if (conn->urg_state == SMC_URG_VALID) { in smc_rx_recv_urg()
298 smc->conn.urg_state = SMC_URG_READ; in smc_rx_recv_urg()
302 rc = memcpy_to_msg(msg, &conn->urg_rx_byte, 1); in smc_rx_recv_urg()
304 smc_curs_copy(&cons, &conn->local_tx_ctrl.cons, conn); in smc_rx_recv_urg()
305 if (smc_curs_diff(conn->rmb_desc->len, &cons, in smc_rx_recv_urg()
306 &conn->urg_curs) > 1) in smc_rx_recv_urg()
307 conn->urg_rx_skip_pend = true; in smc_rx_recv_urg()
328 struct smc_connection *conn = &smc->conn; in smc_rx_recvmsg_data_available() local
330 if (smc_rx_data_available(conn, peeked)) in smc_rx_recvmsg_data_available()
332 else if (conn->urg_state == SMC_URG_VALID) in smc_rx_recvmsg_data_available()
350 struct smc_connection *conn = &smc->conn; in smc_rx_recvmsg() local
351 int (*func)(struct smc_connection *conn, size_t baseline); in smc_rx_recvmsg()
372 readable = atomic_read(&conn->bytes_to_rcv); in smc_rx_recvmsg()
373 if (readable >= conn->rmb_desc->len) in smc_rx_recvmsg()
374 SMC_STAT_RMB_RX_FULL(smc, !conn->lnk); in smc_rx_recvmsg()
377 SMC_STAT_RMB_RX_SIZE_SMALL(smc, !conn->lnk); in smc_rx_recvmsg()
379 rcvbuf_base = conn->rx_off + conn->rmb_desc->cpu_addr; in smc_rx_recvmsg()
385 if (conn->killed) in smc_rx_recvmsg()
429 if (!smc_rx_data_available(conn, peeked_bytes)) { in smc_rx_recvmsg()
437 readable = smc_rx_data_available(conn, peeked_bytes); in smc_rx_recvmsg()
438 splbytes = atomic_read(&conn->splice_pending); in smc_rx_recvmsg()
448 smc_curs_copy(&cons, &conn->local_tx_ctrl.cons, conn); in smc_rx_recvmsg()
450 smc_curs_add(conn->rmb_desc->len, &cons, peeked_bytes); in smc_rx_recvmsg()
453 smc_curs_add(conn->rmb_desc->len, &cons, splbytes); in smc_rx_recvmsg()
454 if (conn->urg_state == SMC_URG_VALID && in smc_rx_recvmsg()
462 chunk_len = min_t(size_t, copylen, conn->rmb_desc->len - in smc_rx_recvmsg()
466 smc_rmb_sync_sg_for_cpu(conn); in smc_rx_recvmsg()
501 atomic_sub(copylen, &conn->bytes_to_rcv); in smc_rx_recvmsg()
518 atomic_set(&smc->conn.splice_pending, 0); in smc_rx_init()
519 smc->conn.urg_state = SMC_URG_READ; in smc_rx_init()