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 cancel_work_sync(&smc->conn.close_work); in smc_close_cancel_work()
120 cancel_delayed_work_sync(&smc->conn.tx_work); in smc_close_cancel_work()
156 smc_conn_free(&smc->conn); in smc_close_active_abort()
167 smc_conn_free(&smc->conn); in smc_close_active_abort()
186 static inline bool smc_close_sent_any_close(struct smc_connection *conn) in smc_close_sent_any_close() argument
188 return conn->local_tx_ctrl.conn_state_flags.peer_conn_abort || in smc_close_sent_any_close()
189 conn->local_tx_ctrl.conn_state_flags.peer_conn_closed; in smc_close_sent_any_close()
195 &smc->conn.local_tx_ctrl.conn_state_flags; in smc_close_active()
196 struct smc_connection *conn = &smc->conn; in smc_close_active() local
232 cancel_delayed_work_sync(&conn->tx_work); in smc_close_active()
236 rc = smc_close_final(conn); in smc_close_active()
255 !smc_close_sent_any_close(conn)) { in smc_close_active()
257 rc = smc_close_final(conn); in smc_close_active()
263 if (!smc_cdc_rxed_any_close(conn)) in smc_close_active()
266 cancel_delayed_work_sync(&conn->tx_work); in smc_close_active()
272 rc = smc_close_final(conn); in smc_close_active()
273 if (smc_cdc_rxed_any_close(conn)) { in smc_close_active()
285 !smc_close_sent_any_close(conn)) { in smc_close_active()
287 rc = smc_close_final(conn); in smc_close_active()
295 rc = smc_close_abort(conn); in smc_close_active()
314 &smc->conn.local_tx_ctrl.conn_state_flags; in smc_close_passive_abort_received()
330 !smc_close_sent_any_close(&smc->conn)) in smc_close_passive_abort_received()
357 struct smc_connection *conn = container_of(work, in smc_close_passive_work() local
360 struct smc_sock *smc = container_of(conn, struct smc_sock, conn); in smc_close_passive_work()
369 rxflags = &conn->local_rx_ctrl.conn_state_flags; in smc_close_passive_work()
374 cancel_delayed_work_sync(&conn->tx_work); in smc_close_passive_work()
395 if (!smc_cdc_rxed_any_close(conn)) in smc_close_passive_work()
398 smc_close_sent_any_close(conn)) { in smc_close_passive_work()
408 if (smc_cdc_rxed_any_close(conn)) { in smc_close_passive_work()
435 smc_conn_free(conn); in smc_close_passive_work()
448 struct smc_connection *conn = &smc->conn; in smc_close_shutdown_write() local
464 cancel_delayed_work_sync(&conn->tx_work); in smc_close_shutdown_write()
469 rc = smc_close_wr(conn); in smc_close_shutdown_write()
474 if (!smc_cdc_rxed_any_close(conn)) in smc_close_shutdown_write()
477 cancel_delayed_work_sync(&conn->tx_work); in smc_close_shutdown_write()
482 rc = smc_close_wr(conn); in smc_close_shutdown_write()
504 INIT_WORK(&smc->conn.close_work, smc_close_passive_work); in smc_close_init()