Lines Matching defs:conn
57 if (!smc_tx_prepared_sends(&smc->conn))
66 !smc_tx_prepared_sends(&smc->conn) ||
69 smc->conn.killed,
85 static int smc_close_wr(struct smc_connection *conn)
87 conn->local_tx_ctrl.conn_state_flags.peer_done_writing = 1;
89 return smc_cdc_get_slot_and_msg_send(conn);
92 static int smc_close_final(struct smc_connection *conn)
94 if (atomic_read(&conn->bytes_to_rcv))
95 conn->local_tx_ctrl.conn_state_flags.peer_conn_abort = 1;
97 conn->local_tx_ctrl.conn_state_flags.peer_conn_closed = 1;
98 if (conn->killed)
101 return smc_cdc_get_slot_and_msg_send(conn);
104 int smc_close_abort(struct smc_connection *conn)
106 conn->local_tx_ctrl.conn_state_flags.peer_conn_abort = 1;
108 return smc_cdc_get_slot_and_msg_send(conn);
116 if (cancel_work_sync(&smc->conn.close_work))
118 cancel_delayed_work_sync(&smc->conn.tx_work);
154 smc_conn_free(&smc->conn);
165 smc_conn_free(&smc->conn);
184 static inline bool smc_close_sent_any_close(struct smc_connection *conn)
186 return conn->local_tx_ctrl.conn_state_flags.peer_conn_abort ||
187 conn->local_tx_ctrl.conn_state_flags.peer_conn_closed;
193 &smc->conn.local_tx_ctrl.conn_state_flags;
194 struct smc_connection *conn = &smc->conn;
227 cancel_delayed_work_sync(&conn->tx_work);
231 rc = smc_close_final(conn);
250 !smc_close_sent_any_close(conn)) {
252 rc = smc_close_final(conn);
258 if (!smc_cdc_rxed_any_close(conn))
261 cancel_delayed_work_sync(&conn->tx_work);
267 rc = smc_close_final(conn);
268 if (smc_cdc_rxed_any_close(conn)) {
280 !smc_close_sent_any_close(conn)) {
282 rc = smc_close_final(conn);
290 rc = smc_close_abort(conn);
309 &smc->conn.local_tx_ctrl.conn_state_flags;
325 !smc_close_sent_any_close(&smc->conn))
352 struct smc_connection *conn = container_of(work,
355 struct smc_sock *smc = container_of(conn, struct smc_sock, conn);
364 rxflags = &conn->local_rx_ctrl.conn_state_flags;
369 cancel_delayed_work_sync(&conn->tx_work);
390 if (!smc_cdc_rxed_any_close(conn))
393 smc_close_sent_any_close(conn)) {
403 if (smc_cdc_rxed_any_close(conn)) {
430 smc_conn_free(conn);
443 struct smc_connection *conn = &smc->conn;
459 cancel_delayed_work_sync(&conn->tx_work);
464 rc = smc_close_wr(conn);
469 if (!smc_cdc_rxed_any_close(conn))
472 cancel_delayed_work_sync(&conn->tx_work);
477 rc = smc_close_wr(conn);
499 INIT_WORK(&smc->conn.close_work, smc_close_passive_work);