Lines Matching refs:smc
169 struct smc_sock *smc = container_of(conn, struct smc_sock, conn); in smc_lgr_register_conn() local
183 sock_hold(&smc->sk); /* sock_put in smc_lgr_unregister_conn() */ in smc_lgr_register_conn()
198 struct smc_sock *smc = container_of(conn, struct smc_sock, conn); in __smc_lgr_unregister_conn() local
206 sock_put(&smc->sk); /* sock_hold in smc_lgr_register_conn() */ in __smc_lgr_unregister_conn()
826 static int smc_lgr_create(struct smc_sock *smc, struct smc_init_info *ini) in smc_lgr_create() argument
891 lgr->role = smc->listen_smc ? SMC_SERV : SMC_CLNT; in smc_lgr_create()
915 smc_llc_lgr_init(lgr, smc); in smc_lgr_create()
927 lgr->buf_type = lgr->net->smc.sysctl_smcr_buf_type; in smc_lgr_create()
930 smc->conn.lgr = lgr; in smc_lgr_create()
967 static int smc_switch_cursor(struct smc_sock *smc, struct smc_cdc_tx_pend *pend, in smc_switch_cursor() argument
970 struct smc_connection *conn = &smc->conn; in smc_switch_cursor()
1001 atomic_set(&smc->conn.peer_rmbe_space, smc_write_space(conn)); in smc_switch_cursor()
1003 if (smc->sk.sk_state != SMC_INIT && in smc_switch_cursor()
1004 smc->sk.sk_state != SMC_CLOSED) { in smc_switch_cursor()
1008 smc->sk.sk_data_ready(&smc->sk); in smc_switch_cursor()
1036 struct smc_sock *smc; in smc_switch_conns() local
1063 smc = container_of(conn, struct smc_sock, conn); in smc_switch_conns()
1065 if (smc->sk.sk_state == SMC_INIT) in smc_switch_conns()
1067 if (smc->sk.sk_state == SMC_CLOSED || in smc_switch_conns()
1068 smc->sk.sk_state == SMC_PEERCLOSEWAIT1 || in smc_switch_conns()
1069 smc->sk.sk_state == SMC_PEERCLOSEWAIT2 || in smc_switch_conns()
1070 smc->sk.sk_state == SMC_APPFINCLOSEWAIT || in smc_switch_conns()
1071 smc->sk.sk_state == SMC_APPCLOSEWAIT1 || in smc_switch_conns()
1072 smc->sk.sk_state == SMC_APPCLOSEWAIT2 || in smc_switch_conns()
1073 smc->sk.sk_state == SMC_PEERFINCLOSEWAIT || in smc_switch_conns()
1074 smc->sk.sk_state == SMC_PEERABORTWAIT || in smc_switch_conns()
1075 smc->sk.sk_state == SMC_PROCESSABORT) { in smc_switch_conns()
1081 sock_hold(&smc->sk); in smc_switch_conns()
1090 rc = smc_switch_cursor(smc, pend, wr_buf); in smc_switch_conns()
1092 sock_put(&smc->sk); in smc_switch_conns()
1417 static void smc_sk_wake_ups(struct smc_sock *smc) in smc_sk_wake_ups() argument
1419 smc->sk.sk_write_space(&smc->sk); in smc_sk_wake_ups()
1420 smc->sk.sk_data_ready(&smc->sk); in smc_sk_wake_ups()
1421 smc->sk.sk_state_change(&smc->sk); in smc_sk_wake_ups()
1427 struct smc_sock *smc = container_of(conn, struct smc_sock, conn); in smc_conn_kill() local
1434 smc->sk.sk_err = ECONNABORTED; in smc_conn_kill()
1435 smc_sk_wake_ups(smc); in smc_conn_kill()
1446 smc_close_active_abort(smc); in smc_conn_kill()
1470 struct smc_sock *smc; in __smc_lgr_terminate() local
1485 smc = container_of(conn, struct smc_sock, conn); in __smc_lgr_terminate()
1486 sock_hold(&smc->sk); /* sock_put below */ in __smc_lgr_terminate()
1487 lock_sock(&smc->sk); in __smc_lgr_terminate()
1489 release_sock(&smc->sk); in __smc_lgr_terminate()
1490 sock_put(&smc->sk); /* sock_hold above */ in __smc_lgr_terminate()
1653 struct smc_sock *smc = container_of(conn, struct smc_sock, conn); in smc_conn_abort_work() local
1655 lock_sock(&smc->sk); in smc_conn_abort_work()
1657 release_sock(&smc->sk); in smc_conn_abort_work()
1658 sock_put(&smc->sk); /* sock_hold done by schedulers of abort_work */ in smc_conn_abort_work()
1869 int smc_conn_create(struct smc_sock *smc, struct smc_init_info *ini) in smc_conn_create() argument
1871 struct smc_connection *conn = &smc->conn; in smc_conn_create()
1872 struct net *net = sock_net(&smc->sk); in smc_conn_create()
1884 role = smc->listen_smc ? SMC_SERV : SMC_CLNT; in smc_conn_create()
1932 rc = smc_lgr_create(smc, ini); in smc_conn_create()
1952 INIT_WORK(&smc->conn.abort_work, smc_conn_abort_work); in smc_conn_create()
2320 static int __smc_buf_create(struct smc_sock *smc, bool is_smcd, bool is_rmb) in __smc_buf_create() argument
2323 struct smc_connection *conn = &smc->conn; in __smc_buf_create()
2332 bufsize = smc->sk.sk_rcvbuf / 2; in __smc_buf_create()
2335 bufsize = smc->sk.sk_sndbuf / 2; in __smc_buf_create()
2352 SMC_STAT_RMB_SIZE(smc, is_smcd, is_rmb, bufsize); in __smc_buf_create()
2353 SMC_STAT_BUF_REUSE(smc, is_smcd, is_rmb); in __smc_buf_create()
2367 SMC_STAT_RMB_DOWNGRADED(smc, is_smcd, is_rmb); in __smc_buf_create()
2372 SMC_STAT_RMB_ALLOC(smc, is_smcd, is_rmb); in __smc_buf_create()
2373 SMC_STAT_RMB_SIZE(smc, is_smcd, is_rmb, bufsize); in __smc_buf_create()
2394 smc->sk.sk_rcvbuf = bufsize * 2; in __smc_buf_create()
2402 smc->sk.sk_sndbuf = bufsize * 2; in __smc_buf_create()
2440 int smc_buf_create(struct smc_sock *smc, bool is_smcd) in smc_buf_create() argument
2445 rc = __smc_buf_create(smc, is_smcd, false); in smc_buf_create()
2449 rc = __smc_buf_create(smc, is_smcd, true); in smc_buf_create()
2451 down_write(&smc->conn.lgr->sndbufs_lock); in smc_buf_create()
2452 list_del(&smc->conn.sndbuf_desc->list); in smc_buf_create()
2453 up_write(&smc->conn.lgr->sndbufs_lock); in smc_buf_create()
2454 smc_buf_free(smc->conn.lgr, false, smc->conn.sndbuf_desc); in smc_buf_create()
2455 smc->conn.sndbuf_desc = NULL; in smc_buf_create()