Lines Matching refs:conn
57 if (!smc_tx_prepared_sends(&smc->conn)) in smc_close_stream_wait()
61 smc_tx_pending(&smc->conn); in smc_close_stream_wait()
69 !smc_tx_prepared_sends(&smc->conn) || in smc_close_stream_wait()
72 smc->conn.killed, in smc_close_stream_wait()
88 static int smc_close_wr(struct smc_connection *conn) in smc_close_wr() argument
90 conn->local_tx_ctrl.conn_state_flags.peer_done_writing = 1; in smc_close_wr()
92 return smc_cdc_get_slot_and_msg_send(conn); in smc_close_wr()
95 static int smc_close_final(struct smc_connection *conn) in smc_close_final() argument
97 if (atomic_read(&conn->bytes_to_rcv)) in smc_close_final()
98 conn->local_tx_ctrl.conn_state_flags.peer_conn_abort = 1; in smc_close_final()
100 conn->local_tx_ctrl.conn_state_flags.peer_conn_closed = 1; in smc_close_final()
101 if (conn->killed) in smc_close_final()
104 return smc_cdc_get_slot_and_msg_send(conn); in smc_close_final()
107 int smc_close_abort(struct smc_connection *conn) in smc_close_abort() argument
109 conn->local_tx_ctrl.conn_state_flags.peer_conn_abort = 1; in smc_close_abort()
111 return smc_cdc_get_slot_and_msg_send(conn); in smc_close_abort()
119 if (cancel_work_sync(&smc->conn.close_work)) in smc_close_cancel_work()
121 cancel_delayed_work_sync(&smc->conn.tx_work); in smc_close_cancel_work()
157 smc_conn_free(&smc->conn); in smc_close_active_abort()
168 smc_conn_free(&smc->conn); in smc_close_active_abort()
187 static inline bool smc_close_sent_any_close(struct smc_connection *conn) in smc_close_sent_any_close() argument
189 return conn->local_tx_ctrl.conn_state_flags.peer_conn_abort || in smc_close_sent_any_close()
190 conn->local_tx_ctrl.conn_state_flags.peer_conn_closed; in smc_close_sent_any_close()
196 &smc->conn.local_tx_ctrl.conn_state_flags; in smc_close_active()
197 struct smc_connection *conn = &smc->conn; in smc_close_active() local
233 cancel_delayed_work_sync(&conn->tx_work); in smc_close_active()
237 rc = smc_close_final(conn); in smc_close_active()
256 !smc_close_sent_any_close(conn)) { in smc_close_active()
258 rc = smc_close_final(conn); in smc_close_active()
264 if (!smc_cdc_rxed_any_close(conn)) in smc_close_active()
267 cancel_delayed_work_sync(&conn->tx_work); in smc_close_active()
273 rc = smc_close_final(conn); in smc_close_active()
274 if (smc_cdc_rxed_any_close(conn)) { in smc_close_active()
286 !smc_close_sent_any_close(conn)) { in smc_close_active()
288 rc = smc_close_final(conn); in smc_close_active()
296 rc = smc_close_abort(conn); in smc_close_active()
315 &smc->conn.local_tx_ctrl.conn_state_flags; in smc_close_passive_abort_received()
331 !smc_close_sent_any_close(&smc->conn)) in smc_close_passive_abort_received()
358 struct smc_connection *conn = container_of(work, in smc_close_passive_work() local
361 struct smc_sock *smc = container_of(conn, struct smc_sock, conn); in smc_close_passive_work()
370 rxflags = &conn->local_rx_ctrl.conn_state_flags; in smc_close_passive_work()
375 cancel_delayed_work_sync(&conn->tx_work); in smc_close_passive_work()
396 if (!smc_cdc_rxed_any_close(conn)) in smc_close_passive_work()
399 smc_close_sent_any_close(conn)) { in smc_close_passive_work()
409 if (smc_cdc_rxed_any_close(conn)) { in smc_close_passive_work()
436 smc_conn_free(conn); in smc_close_passive_work()
449 struct smc_connection *conn = &smc->conn; in smc_close_shutdown_write() local
465 cancel_delayed_work_sync(&conn->tx_work); in smc_close_shutdown_write()
470 rc = smc_close_wr(conn); in smc_close_shutdown_write()
475 if (!smc_cdc_rxed_any_close(conn)) in smc_close_shutdown_write()
478 cancel_delayed_work_sync(&conn->tx_work); in smc_close_shutdown_write()
483 rc = smc_close_wr(conn); in smc_close_shutdown_write()
505 INIT_WORK(&smc->conn.close_work, smc_close_passive_work); in smc_close_init()