Lines Matching refs:conn
120 struct netbuf *d_svcaddr, CONN **conn);
270 static rdma_stat rib_disconnect(CONN *conn);
273 static rdma_stat rib_registermem(CONN *conn, caddr_t adsp, caddr_t buf,
275 static rdma_stat rib_deregistermem(CONN *conn, caddr_t buf,
281 static rdma_stat rib_registermemsync(CONN *conn, caddr_t adsp, caddr_t buf,
284 static rdma_stat rib_deregistermemsync(CONN *conn, caddr_t buf,
286 static rdma_stat rib_syncmem(CONN *conn, RIB_SYNCMEM_HANDLE shandle,
289 static rdma_stat rib_reg_buf_alloc(CONN *conn, rdma_buf_t *rdbuf);
291 static void rib_reg_buf_free(CONN *conn, rdma_buf_t *rdbuf);
294 static void rib_rbuf_free(CONN *conn, int ptype, void *buf);
296 static rdma_stat rib_send(CONN *conn, struct clist *cl, uint32_t msgid);
297 static rdma_stat rib_send_resp(CONN *conn, struct clist *cl, uint32_t msgid);
298 static rdma_stat rib_post_resp(CONN *conn, struct clist *cl, uint32_t msgid);
299 static rdma_stat rib_post_resp_remove(CONN *conn, uint32_t msgid);
300 static rdma_stat rib_post_recv(CONN *conn, struct clist *cl);
301 static rdma_stat rib_recv(CONN *conn, struct clist **clp, uint32_t msgid);
302 static rdma_stat rib_read(CONN *conn, struct clist *cl, int wait);
303 static rdma_stat rib_write(CONN *conn, struct clist *cl, int wait);
307 static rdma_stat rib_conn_release(CONN *conn);
312 static rib_lrc_entry_t *rib_get_cache_buf(CONN *conn, uint32_t len);
313 static void rib_free_cache_buf(CONN *conn, rib_lrc_entry_t *buf);
322 static rdma_stat rib_conn_release_locked(CONN *conn);
1009 CONN *conn; in rib_clnt_scq_handler() local
1032 conn = qptoc(qp); in rib_clnt_scq_handler()
1061 mutex_enter(&conn->c_lock); in rib_clnt_scq_handler()
1062 if (conn->c_state != C_DISCONN_PEND) in rib_clnt_scq_handler()
1063 conn->c_state = C_ERROR_CONN; in rib_clnt_scq_handler()
1064 mutex_exit(&conn->c_lock); in rib_clnt_scq_handler()
1103 CONN *conn; in rib_svc_scq_handler() local
1125 conn = qptoc(qp); in rib_svc_scq_handler()
1139 mutex_enter(&conn->c_lock); in rib_svc_scq_handler()
1140 if (conn->c_state != C_DISCONN_PEND) in rib_svc_scq_handler()
1141 conn->c_state = C_ERROR_CONN; in rib_svc_scq_handler()
1142 mutex_exit(&conn->c_lock); in rib_svc_scq_handler()
1205 CONN *conn = qptoc(qp); in rib_clnt_rcq_handler() local
1230 mutex_enter(&conn->c_lock); in rib_clnt_rcq_handler()
1231 if (conn->c_state != C_DISCONN_PEND) in rib_clnt_rcq_handler()
1232 conn->c_state = C_ERROR_CONN; in rib_clnt_rcq_handler()
1233 mutex_exit(&conn->c_lock); in rib_clnt_rcq_handler()
1234 rib_rbuf_free(conn, RECV_BUFFER, in rib_clnt_rcq_handler()
1276 CONN *conn = qptoc(qp); in rib_clnt_rcq_handler() local
1282 rib_rbuf_free(conn, RECV_BUFFER, in rib_clnt_rcq_handler()
1285 CONN *conn = qptoc(qp); in rib_clnt_rcq_handler() local
1300 mutex_enter(&conn->c_lock); in rib_clnt_rcq_handler()
1301 if (conn->c_state != C_DISCONN_PEND) in rib_clnt_rcq_handler()
1302 conn->c_state = C_ERROR_CONN; in rib_clnt_rcq_handler()
1303 mutex_exit(&conn->c_lock); in rib_clnt_rcq_handler()
1304 rib_rbuf_free(conn, RECV_BUFFER, in rib_clnt_rcq_handler()
1322 CONN *conn; in rib_svc_rcq_handler() local
1340 conn = qptoc(qp); in rib_svc_rcq_handler()
1362 rib_rbuf_free(conn, RECV_BUFFER, in rib_svc_rcq_handler()
1376 rib_rbuf_free(conn, RECV_BUFFER, in rib_svc_rcq_handler()
1386 rib_rbuf_free(conn, RECV_BUFFER, in rib_svc_rcq_handler()
1401 mutex_enter(&conn->c_lock); in rib_svc_rcq_handler()
1403 (conn->c_state == C_CONNECTED)) { in rib_svc_rcq_handler()
1404 conn->c_ref++; in rib_svc_rcq_handler()
1405 mutex_exit(&conn->c_lock); in rib_svc_rcq_handler()
1417 rdp->conn = conn; in rib_svc_rcq_handler()
1434 mutex_exit(&conn->c_lock); in rib_svc_rcq_handler()
1436 rib_rbuf_free(conn, RECV_BUFFER, in rib_svc_rcq_handler()
1440 rib_rbuf_free(conn, RECV_BUFFER, in rib_svc_rcq_handler()
1546 CONN *conn; in rib_reachable() local
1549 status = rib_connect(&saddr, raddr, addr_type, &rpt, &conn); in rib_reachable()
1554 (void) rib_conn_release(conn); in rib_reachable()
1568 CONN *conn; in rib_clnt_create_chan() local
1575 conn = qptoc(kqp); in rib_clnt_create_chan()
1582 conn->c_raddr.buf = kmem_alloc(raddr->len, KM_SLEEP); in rib_clnt_create_chan()
1583 bcopy(raddr->buf, conn->c_raddr.buf, raddr->len); in rib_clnt_create_chan()
1584 conn->c_raddr.len = conn->c_raddr.maxlen = raddr->len; in rib_clnt_create_chan()
1718 CONN *conn; in rib_clnt_cm_handler() local
1743 conn = qptoc(qp); in rib_clnt_cm_handler()
1744 mutex_enter(&conn->c_lock); in rib_clnt_cm_handler()
1745 if (conn->c_state == C_DISCONN_PEND) { in rib_clnt_cm_handler()
1746 mutex_exit(&conn->c_lock); in rib_clnt_cm_handler()
1750 conn->c_state = C_ERROR_CONN; in rib_clnt_cm_handler()
1755 if (conn->c_ref == 0) { in rib_clnt_cm_handler()
1759 conn->c_state = C_DISCONN_PEND; in rib_clnt_cm_handler()
1760 mutex_exit(&conn->c_lock); in rib_clnt_cm_handler()
1763 (void) rib_disconnect_channel(conn, in rib_clnt_cm_handler()
1772 conn->c_flags |= C_CLOSE_NOTNEEDED; in rib_clnt_cm_handler()
1773 mutex_exit(&conn->c_lock); in rib_clnt_cm_handler()
2021 rib_disconnect_channel(CONN *conn, rib_conn_list_t *conn_list) in rib_disconnect_channel() argument
2023 rib_qp_t *qp = ctoqp(conn); in rib_disconnect_channel()
2026 mutex_enter(&conn->c_lock); in rib_disconnect_channel()
2027 if (conn->c_timeout != NULL) { in rib_disconnect_channel()
2028 mutex_exit(&conn->c_lock); in rib_disconnect_channel()
2029 (void) untimeout(conn->c_timeout); in rib_disconnect_channel()
2030 mutex_enter(&conn->c_lock); in rib_disconnect_channel()
2033 while (conn->c_flags & C_CLOSE_PENDING) { in rib_disconnect_channel()
2034 cv_wait(&conn->c_cv, &conn->c_lock); in rib_disconnect_channel()
2036 mutex_exit(&conn->c_lock); in rib_disconnect_channel()
2043 (void) rib_rm_conn(conn, conn_list); in rib_disconnect_channel()
2081 cv_destroy(&conn->c_cv); in rib_disconnect_channel()
2082 mutex_destroy(&conn->c_lock); in rib_disconnect_channel()
2084 if (conn->c_raddr.buf != NULL) { in rib_disconnect_channel()
2085 kmem_free(conn->c_raddr.buf, conn->c_raddr.len); in rib_disconnect_channel()
2087 if (conn->c_laddr.buf != NULL) { in rib_disconnect_channel()
2088 kmem_free(conn->c_laddr.buf, conn->c_laddr.len); in rib_disconnect_channel()
2090 if (conn->c_netid != NULL) { in rib_disconnect_channel()
2091 kmem_free(conn->c_netid, (strlen(conn->c_netid) + 1)); in rib_disconnect_channel()
2093 if (conn->c_addrmask.buf != NULL) { in rib_disconnect_channel()
2094 kmem_free(conn->c_addrmask.buf, conn->c_addrmask.len); in rib_disconnect_channel()
2305 rib_send_and_wait(CONN *conn, struct clist *cl, uint32_t msgid, in rib_send_and_wait() argument
2318 qp = ctoqp(conn); in rib_send_and_wait()
2362 mutex_enter(&conn->c_lock); in rib_send_and_wait()
2363 if (conn->c_state == C_CONNECTED) { in rib_send_and_wait()
2366 if (conn->c_state != C_CONNECTED || in rib_send_and_wait()
2368 if (conn->c_state != C_DISCONN_PEND) in rib_send_and_wait()
2369 conn->c_state = C_ERROR_CONN; in rib_send_and_wait()
2370 mutex_exit(&conn->c_lock); in rib_send_and_wait()
2373 rib_rbuf_free(conn, SEND_BUFFER, in rib_send_and_wait()
2382 mutex_exit(&conn->c_lock); in rib_send_and_wait()
2404 rib_send(CONN *conn, struct clist *cl, uint32_t msgid) in rib_send() argument
2410 ret = rib_send_and_wait(conn, cl, msgid, 1, 1, &wd); in rib_send()
2420 rib_send_resp(CONN *conn, struct clist *cl, uint32_t msgid) in rib_send_resp() argument
2426 rib_qp_t *qp = ctoqp(conn); in rib_send_resp()
2432 ret = rib_send_and_wait(conn, cl, msgid, 1, 0, wid); in rib_send_resp()
2475 rib_clnt_post(CONN* conn, struct clist *cl, uint32_t msgid) in rib_clnt_post() argument
2477 rib_qp_t *qp = ctoqp(conn); in rib_clnt_post()
2527 mutex_enter(&conn->c_lock); in rib_clnt_post()
2529 if (conn->c_state == C_CONNECTED) { in rib_clnt_post()
2533 if (conn->c_state != C_CONNECTED || in rib_clnt_post()
2535 if (conn->c_state != C_DISCONN_PEND) in rib_clnt_post()
2536 conn->c_state = C_ERROR_CONN; in rib_clnt_post()
2537 mutex_exit(&conn->c_lock); in rib_clnt_post()
2548 mutex_exit(&conn->c_lock); in rib_clnt_post()
2553 rib_rbuf_free(conn, RECV_BUFFER, in rib_clnt_post()
2561 rib_svc_post(CONN* conn, struct clist *cl) in rib_svc_post() argument
2563 rib_qp_t *qp = ctoqp(conn); in rib_svc_post()
2583 rib_rbuf_free(conn, RECV_BUFFER, in rib_svc_post()
2596 mutex_enter(&conn->c_lock); in rib_svc_post()
2597 if (conn->c_state == C_CONNECTED) { in rib_svc_post()
2600 if (conn->c_state != C_CONNECTED || in rib_svc_post()
2602 if (conn->c_state != C_DISCONN_PEND) in rib_svc_post()
2603 conn->c_state = C_ERROR_CONN; in rib_svc_post()
2604 mutex_exit(&conn->c_lock); in rib_svc_post()
2605 rib_rbuf_free(conn, RECV_BUFFER, in rib_svc_post()
2611 mutex_exit(&conn->c_lock); in rib_svc_post()
2618 rib_post_resp(CONN* conn, struct clist *cl, uint32_t msgid) in rib_post_resp() argument
2620 return (rib_clnt_post(conn, cl, msgid)); in rib_post_resp()
2625 rib_post_resp_remove(CONN* conn, uint32_t msgid) in rib_post_resp_remove() argument
2627 rib_qp_t *qp = ctoqp(conn); in rib_post_resp_remove()
2634 rib_rbuf_free(conn, RECV_BUFFER, in rib_post_resp_remove()
2648 rib_post_recv(CONN *conn, struct clist *cl) in rib_post_recv() argument
2650 rib_qp_t *qp = ctoqp(conn); in rib_post_recv()
2652 if (rib_svc_post(conn, cl) == RDMA_SUCCESS) { in rib_post_recv()
2666 rib_recv(CONN *conn, struct clist **clp, uint32_t msgid) in rib_recv() argument
2671 rib_qp_t *qp = ctoqp(conn); in rib_recv()
2724 rib_rbuf_free(conn, RECV_BUFFER, in rib_recv()
2749 rib_write(CONN *conn, struct clist *cl, int wait) in rib_write() argument
2757 rib_qp_t *qp = ctoqp(conn); in rib_write()
2799 mutex_enter(&conn->c_lock); in rib_write()
2800 if (conn->c_state == C_CONNECTED) { in rib_write()
2804 if (conn->c_state != C_CONNECTED || in rib_write()
2806 if (conn->c_state != C_DISCONN_PEND) in rib_write()
2807 conn->c_state = C_ERROR_CONN; in rib_write()
2808 mutex_exit(&conn->c_lock); in rib_write()
2816 mutex_exit(&conn->c_lock); in rib_write()
2841 rib_read(CONN *conn, struct clist *cl, int wait) in rib_read() argument
2849 rib_qp_t *qp = ctoqp(conn); in rib_read()
2889 mutex_enter(&conn->c_lock); in rib_read()
2890 if (conn->c_state == C_CONNECTED) { in rib_read()
2893 if (conn->c_state != C_CONNECTED || in rib_read()
2895 if (conn->c_state != C_DISCONN_PEND) in rib_read()
2896 conn->c_state = C_ERROR_CONN; in rib_read()
2897 mutex_exit(&conn->c_lock); in rib_read()
2905 mutex_exit(&conn->c_lock); in rib_read()
2943 CONN *conn; in rib_srv_cm_handler() local
2995 conn = qptoc(qp); in rib_srv_cm_handler()
2999 buf = rib_rbuf_alloc(conn, &rdbuf); in rib_srv_cm_handler()
3008 (void) rib_disconnect_channel(conn, NULL); in rib_srv_cm_handler()
3018 status = rib_post_recv(conn, &cl); in rib_srv_cm_handler()
3027 (void) rib_disconnect_channel(conn, NULL); in rib_srv_cm_handler()
3031 (void) rib_add_connlist(conn, &hca->srv_conn_list); in rib_srv_cm_handler()
3055 conn->c_netid = kmem_zalloc(strlen(RIBNETID_TCP) + 1, in rib_srv_cm_handler()
3057 (void) strcpy(conn->c_netid, RIBNETID_TCP); in rib_srv_cm_handler()
3059 conn->c_raddr.maxlen = in rib_srv_cm_handler()
3060 conn->c_raddr.len = sin_size; in rib_srv_cm_handler()
3061 conn->c_raddr.buf = kmem_zalloc(sin_size, KM_SLEEP); in rib_srv_cm_handler()
3063 s = (struct sockaddr_in *)conn->c_raddr.buf; in rib_srv_cm_handler()
3068 conn->c_laddr.maxlen = in rib_srv_cm_handler()
3069 conn->c_laddr.len = sin_size; in rib_srv_cm_handler()
3070 conn->c_laddr.buf = kmem_zalloc(sin_size, KM_SLEEP); in rib_srv_cm_handler()
3072 s = (struct sockaddr_in *)conn->c_laddr.buf; in rib_srv_cm_handler()
3077 conn->c_addrmask.maxlen = conn->c_addrmask.len = in rib_srv_cm_handler()
3079 conn->c_addrmask.buf = in rib_srv_cm_handler()
3080 kmem_zalloc(conn->c_addrmask.len, KM_SLEEP); in rib_srv_cm_handler()
3082 conn->c_addrmask.buf)->sin_addr.s_addr = in rib_srv_cm_handler()
3085 conn->c_addrmask.buf)->sin_family = in rib_srv_cm_handler()
3091 conn->c_netid = kmem_zalloc(strlen(RIBNETID_TCP6) + 1, in rib_srv_cm_handler()
3093 (void) strcpy(conn->c_netid, RIBNETID_TCP6); in rib_srv_cm_handler()
3095 conn->c_raddr.maxlen = in rib_srv_cm_handler()
3096 conn->c_raddr.len = sin6_size; in rib_srv_cm_handler()
3097 conn->c_raddr.buf = kmem_zalloc(sin6_size, KM_SLEEP); in rib_srv_cm_handler()
3099 s6 = (struct sockaddr_in6 *)conn->c_raddr.buf; in rib_srv_cm_handler()
3105 conn->c_laddr.maxlen = in rib_srv_cm_handler()
3106 conn->c_laddr.len = sin6_size; in rib_srv_cm_handler()
3107 conn->c_laddr.buf = kmem_zalloc(sin6_size, KM_SLEEP); in rib_srv_cm_handler()
3109 s6 = (struct sockaddr_in6 *)conn->c_laddr.buf; in rib_srv_cm_handler()
3115 conn->c_addrmask.maxlen = conn->c_addrmask.len = in rib_srv_cm_handler()
3117 conn->c_addrmask.buf = in rib_srv_cm_handler()
3118 kmem_zalloc(conn->c_addrmask.len, KM_SLEEP); in rib_srv_cm_handler()
3120 conn->c_addrmask.buf)->sin6_addr, (uchar_t)~0, in rib_srv_cm_handler()
3123 conn->c_addrmask.buf)->sin6_family = in rib_srv_cm_handler()
3135 CONN *conn; in rib_srv_cm_handler() local
3159 conn = qptoc(qp); in rib_srv_cm_handler()
3160 mutex_enter(&conn->c_lock); in rib_srv_cm_handler()
3161 if (conn->c_state == C_DISCONN_PEND) { in rib_srv_cm_handler()
3162 mutex_exit(&conn->c_lock); in rib_srv_cm_handler()
3165 conn->c_state = C_ERROR_CONN; in rib_srv_cm_handler()
3170 if (conn->c_ref == 0) { in rib_srv_cm_handler()
3174 conn->c_state = C_DISCONN_PEND; in rib_srv_cm_handler()
3175 mutex_exit(&conn->c_lock); in rib_srv_cm_handler()
3176 (void) rib_disconnect_channel(conn, in rib_srv_cm_handler()
3184 conn->c_flags |= C_CLOSE_NOTNEEDED; in rib_srv_cm_handler()
3185 mutex_exit(&conn->c_lock); in rib_srv_cm_handler()
3658 rib_registermem(CONN *conn, caddr_t adsp, caddr_t buf, uint_t buflen, in rib_registermem() argument
3664 rib_hca_t *hca = (ctoqp(conn))->hca; in rib_registermem()
3713 rib_registermemsync(CONN *conn, caddr_t adsp, caddr_t buf, uint_t buflen, in rib_registermemsync() argument
3720 rib_hca_t *hca = (ctoqp(conn))->hca; in rib_registermemsync()
3766 rib_deregistermem(CONN *conn, caddr_t buf, struct mrc buf_handle) in rib_deregistermem() argument
3768 rib_hca_t *hca = (ctoqp(conn))->hca; in rib_deregistermem()
3782 rib_deregistermemsync(CONN *conn, caddr_t buf, struct mrc buf_handle, in rib_deregistermemsync() argument
3791 (void) rib_deregistermem(conn, buf, buf_handle); in rib_deregistermemsync()
3798 rib_syncmem(CONN *conn, RIB_SYNCMEM_HANDLE shandle, caddr_t buf, in rib_syncmem() argument
3802 rib_hca_t *hca = (ctoqp(conn))->hca; in rib_syncmem()
4025 rib_reg_buf_alloc(CONN *conn, rdma_buf_t *rdbuf) in rib_reg_buf_alloc() argument
4030 rlep = rib_get_cache_buf(conn, rdbuf->len); in rib_reg_buf_alloc()
4037 rdbuf->addr = rib_rbuf_alloc(conn, rdbuf); in rib_reg_buf_alloc()
4059 rib_rbuf_alloc(CONN *conn, rdma_buf_t *rdbuf) in rib_rbuf_alloc() argument
4061 rib_qp_t *qp = ctoqp(conn); in rib_rbuf_alloc()
4119 rib_reg_buf_free(CONN *conn, rdma_buf_t *rdbuf) in rib_reg_buf_free() argument
4123 rib_free_cache_buf(conn, (rib_lrc_entry_t *)rdbuf->rb_private); in rib_reg_buf_free()
4127 rib_rbuf_free(conn, rdbuf->type, rdbuf->addr); in rib_reg_buf_free()
4131 rib_rbuf_free(CONN *conn, int ptype, void *buf) in rib_rbuf_free() argument
4133 rib_qp_t *qp = ctoqp(conn); in rib_rbuf_free()
4202 int addr_type, void *handle, CONN **conn) in rib_conn_get() argument
4207 status = rib_connect(s_svcaddr, d_svcaddr, addr_type, &rpt, conn); in rib_conn_get()
4220 struct netbuf *d_svcaddr, CONN **conn) in rib_find_hca_connection() argument
4225 *conn = NULL; in rib_find_hca_connection()
4274 *conn = cn; in rib_find_hca_connection()
4298 *conn = cn; in rib_find_hca_connection()
4311 *conn = NULL; in rib_find_hca_connection()
4335 int addr_type, rpcib_ping_t *rpt, CONN **conn) in rib_connect() argument
4349 d_svcaddr, conn); in rib_connect()
4461 *conn = cn; in rib_connect()
4474 CONN *conn = (CONN *)rarg; in rib_conn_close() local
4475 rib_qp_t *qp = ctoqp(conn); in rib_conn_close()
4477 mutex_enter(&conn->c_lock); in rib_conn_close()
4478 if (!(conn->c_flags & C_CLOSE_NOTNEEDED)) { in rib_conn_close()
4480 conn->c_flags |= (C_CLOSE_NOTNEEDED | C_CLOSE_PENDING); in rib_conn_close()
4485 if (conn->c_state == C_CONNECTED) { in rib_conn_close()
4486 conn->c_state = C_ERROR_CONN; in rib_conn_close()
4488 mutex_exit(&conn->c_lock); in rib_conn_close()
4490 rib_close_a_channel(conn); in rib_conn_close()
4492 mutex_enter(&conn->c_lock); in rib_conn_close()
4493 conn->c_flags &= ~C_CLOSE_PENDING; in rib_conn_close()
4496 mutex_exit(&conn->c_lock); in rib_conn_close()
4499 (void) rib_disconnect_channel(conn, in rib_conn_close()
4502 (void) rib_disconnect_channel(conn, in rib_conn_close()
4510 CONN *conn = (CONN *)carg; in rib_conn_timeout_call() local
4511 rib_hca_t *hca = ctoqp(conn)->hca; in rib_conn_timeout_call()
4514 mutex_enter(&conn->c_lock); in rib_conn_timeout_call()
4515 if ((conn->c_ref > 0) || in rib_conn_timeout_call()
4516 (conn->c_state == C_DISCONN_PEND)) { in rib_conn_timeout_call()
4517 conn->c_timeout = NULL; in rib_conn_timeout_call()
4518 mutex_exit(&conn->c_lock); in rib_conn_timeout_call()
4522 idle_time = (gethrestime_sec() - conn->c_last_used); in rib_conn_timeout_call()
4525 (conn->c_state != C_ERROR_CONN)) { in rib_conn_timeout_call()
4531 conn->c_timeout = timeout(rib_conn_timeout_call, conn, in rib_conn_timeout_call()
4533 mutex_exit(&conn->c_lock); in rib_conn_timeout_call()
4538 (void *)conn, DDI_NOSLEEP); in rib_conn_timeout_call()
4546 conn->c_timeout = timeout(rib_conn_timeout_call, conn, in rib_conn_timeout_call()
4548 mutex_exit(&conn->c_lock); in rib_conn_timeout_call()
4552 conn->c_state = C_DISCONN_PEND; in rib_conn_timeout_call()
4553 mutex_exit(&conn->c_lock); in rib_conn_timeout_call()
4557 rib_conn_release(CONN *conn) in rib_conn_release() argument
4559 mutex_enter(&conn->c_lock); in rib_conn_release()
4560 return (rib_conn_release_locked(conn)); in rib_conn_release()
4568 rib_conn_release_locked(CONN *conn) in rib_conn_release_locked() argument
4570 conn->c_ref--; in rib_conn_release_locked()
4572 conn->c_last_used = gethrestime_sec(); in rib_conn_release_locked()
4573 if (conn->c_ref > 0) { in rib_conn_release_locked()
4574 mutex_exit(&conn->c_lock); in rib_conn_release_locked()
4581 if (conn->c_ref == 0 && conn->c_state == C_ERROR_CONN) { in rib_conn_release_locked()
4582 conn->c_state = C_DISCONN_PEND; in rib_conn_release_locked()
4583 mutex_exit(&conn->c_lock); in rib_conn_release_locked()
4584 rib_conn_close((void *)conn); in rib_conn_release_locked()
4592 if (conn->c_timeout == NULL) { in rib_conn_release_locked()
4593 conn->c_timeout = timeout(rib_conn_timeout_call, conn, in rib_conn_release_locked()
4597 mutex_exit(&conn->c_lock); in rib_conn_release_locked()
4684 rib_close_a_channel(CONN *conn) in rib_close_a_channel() argument
4687 qp = ctoqp(conn); in rib_close_a_channel()
4710 CONN *conn, *tmp; in rib_close_channels() local
4713 conn = connlist->conn_hd; in rib_close_channels()
4714 while (conn != NULL) { in rib_close_channels()
4715 mutex_enter(&conn->c_lock); in rib_close_channels()
4716 tmp = conn->c_next; in rib_close_channels()
4717 if (!(conn->c_flags & C_CLOSE_NOTNEEDED)) { in rib_close_channels()
4719 if (conn->c_state == C_CONN_PEND) { in rib_close_channels()
4720 conn->c_flags |= C_CLOSE_PENDING; in rib_close_channels()
4724 conn->c_flags |= (C_CLOSE_NOTNEEDED | C_CLOSE_PENDING); in rib_close_channels()
4729 if (conn->c_state == C_CONNECTED) in rib_close_channels()
4730 conn->c_state = C_ERROR_CONN; in rib_close_channels()
4731 mutex_exit(&conn->c_lock); in rib_close_channels()
4733 rib_close_a_channel(conn); in rib_close_channels()
4735 mutex_enter(&conn->c_lock); in rib_close_channels()
4736 conn->c_flags &= ~C_CLOSE_PENDING; in rib_close_channels()
4738 cv_signal(&conn->c_cv); in rib_close_channels()
4741 mutex_exit(&conn->c_lock); in rib_close_channels()
4742 conn = tmp; in rib_close_channels()
4753 CONN *conn; in rib_purge_connlist() local
4757 conn = connlist->conn_hd; in rib_purge_connlist()
4758 while (conn != NULL) { in rib_purge_connlist()
4759 mutex_enter(&conn->c_lock); in rib_purge_connlist()
4767 if (conn->c_ref == 0 && in rib_purge_connlist()
4768 conn->c_state != C_DISCONN_PEND) { in rib_purge_connlist()
4772 conn->c_state = C_DISCONN_PEND; in rib_purge_connlist()
4773 mutex_exit(&conn->c_lock); in rib_purge_connlist()
4775 (void) rib_disconnect_channel(conn, connlist); in rib_purge_connlist()
4782 mutex_exit(&conn->c_lock); in rib_purge_connlist()
4784 conn = conn->c_next; in rib_purge_connlist()
5039 rib_get_cache_buf(CONN *conn, uint32_t len) in rib_get_cache_buf() argument
5042 rib_hca_t *hca = (ctoqp(conn))->hca; in rib_get_cache_buf()
5152 rib_free_cache_buf(CONN *conn, rib_lrc_entry_t *reg_buf) in rib_free_cache_buf() argument
5156 rib_hca_t *hca = (ctoqp(conn))->hca; in rib_free_cache_buf()