Lines Matching refs:conn

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