Lines Matching refs:rs
61 struct rds_sock *rs; in rds_release() local
66 rs = rds_sk_to_rs(sk); in rds_release()
72 rds_clear_recv_queue(rs); in rds_release()
73 rds_cong_remove_socket(rs); in rds_release()
75 rds_remove_bound(rs); in rds_release()
77 rds_send_drop_to(rs, NULL); in rds_release()
78 rds_rdma_drop_keys(rs); in rds_release()
79 rds_notify_queue_get(rs, NULL); in rds_release()
82 list_del_init(&rs->rs_item); in rds_release()
86 rds_trans_put(rs->rs_transport); in rds_release()
103 void rds_wake_sk_sleep(struct rds_sock *rs) in rds_wake_sk_sleep() argument
107 read_lock_irqsave(&rs->rs_recv_lock, flags); in rds_wake_sk_sleep()
108 __rds_wake_sk_sleep(rds_rs_to_sk(rs)); in rds_wake_sk_sleep()
109 read_unlock_irqrestore(&rs->rs_recv_lock, flags); in rds_wake_sk_sleep()
116 struct rds_sock *rs = rds_sk_to_rs(sock->sk); in rds_getname() local
122 if (!rs->rs_conn_addr) in rds_getname()
125 sin->sin_port = rs->rs_conn_port; in rds_getname()
126 sin->sin_addr.s_addr = rs->rs_conn_addr; in rds_getname()
128 sin->sin_port = rs->rs_bound_port; in rds_getname()
129 sin->sin_addr.s_addr = rs->rs_bound_addr; in rds_getname()
159 struct rds_sock *rs = rds_sk_to_rs(sk); in rds_poll() local
165 if (rs->rs_seen_congestion) in rds_poll()
168 read_lock_irqsave(&rs->rs_recv_lock, flags); in rds_poll()
169 if (!rs->rs_cong_monitor) { in rds_poll()
173 if (rds_cong_updated_since(&rs->rs_cong_track)) in rds_poll()
176 spin_lock(&rs->rs_lock); in rds_poll()
177 if (rs->rs_cong_notify) in rds_poll()
179 spin_unlock(&rs->rs_lock); in rds_poll()
181 if (!list_empty(&rs->rs_recv_queue) || in rds_poll()
182 !list_empty(&rs->rs_notify_queue)) in rds_poll()
184 if (rs->rs_snd_bytes < rds_sk_sndbuf(rs)) in rds_poll()
186 read_unlock_irqrestore(&rs->rs_recv_lock, flags); in rds_poll()
190 rs->rs_seen_congestion = 0; in rds_poll()
200 static int rds_cancel_sent_to(struct rds_sock *rs, char __user *optval, in rds_cancel_sent_to() argument
207 if (rs->rs_bound_addr == 0) { in rds_cancel_sent_to()
222 rds_send_drop_to(rs, &sin); in rds_cancel_sent_to()
240 static int rds_cong_monitor(struct rds_sock *rs, char __user *optval, in rds_cong_monitor() argument
245 ret = rds_set_bool_option(&rs->rs_cong_monitor, optval, optlen); in rds_cong_monitor()
247 if (rs->rs_cong_monitor) { in rds_cong_monitor()
248 rds_cong_add_socket(rs); in rds_cong_monitor()
250 rds_cong_remove_socket(rs); in rds_cong_monitor()
251 rs->rs_cong_mask = 0; in rds_cong_monitor()
252 rs->rs_cong_notify = 0; in rds_cong_monitor()
258 static int rds_set_transport(struct rds_sock *rs, char __user *optval, in rds_set_transport() argument
263 if (rs->rs_transport) in rds_set_transport()
275 rs->rs_transport = rds_trans_get(t_type); in rds_set_transport()
277 return rs->rs_transport ? 0 : -ENOPROTOOPT; in rds_set_transport()
283 struct rds_sock *rs = rds_sk_to_rs(sock->sk); in rds_setsockopt() local
293 ret = rds_cancel_sent_to(rs, optval, optlen); in rds_setsockopt()
296 ret = rds_get_mr(rs, optval, optlen); in rds_setsockopt()
299 ret = rds_get_mr_for_dest(rs, optval, optlen); in rds_setsockopt()
302 ret = rds_free_mr(rs, optval, optlen); in rds_setsockopt()
305 ret = rds_set_bool_option(&rs->rs_recverr, optval, optlen); in rds_setsockopt()
308 ret = rds_cong_monitor(rs, optval, optlen); in rds_setsockopt()
312 ret = rds_set_transport(rs, optval, optlen); in rds_setsockopt()
325 struct rds_sock *rs = rds_sk_to_rs(sock->sk); in rds_getsockopt() local
347 if (put_user(rs->rs_recverr, (int __user *) optval) || in rds_getsockopt()
358 trans = (rs->rs_transport ? rs->rs_transport->t_type : in rds_getsockopt()
380 struct rds_sock *rs = rds_sk_to_rs(sk); in rds_connect() local
400 rs->rs_conn_addr = sin->sin_addr.s_addr; in rds_connect()
401 rs->rs_conn_port = sin->sin_port; in rds_connect()
437 struct rds_sock *rs = rds_sk_to_rs(sk); in rds_sock_destruct() local
439 WARN_ON((&rs->rs_item != rs->rs_item.next || in rds_sock_destruct()
440 &rs->rs_item != rs->rs_item.prev)); in rds_sock_destruct()
445 struct rds_sock *rs; in __rds_create() local
452 rs = rds_sk_to_rs(sk); in __rds_create()
453 spin_lock_init(&rs->rs_lock); in __rds_create()
454 rwlock_init(&rs->rs_recv_lock); in __rds_create()
455 INIT_LIST_HEAD(&rs->rs_send_queue); in __rds_create()
456 INIT_LIST_HEAD(&rs->rs_recv_queue); in __rds_create()
457 INIT_LIST_HEAD(&rs->rs_notify_queue); in __rds_create()
458 INIT_LIST_HEAD(&rs->rs_cong_list); in __rds_create()
459 spin_lock_init(&rs->rs_rdma_lock); in __rds_create()
460 rs->rs_rdma_keys = RB_ROOT; in __rds_create()
463 list_add_tail(&rs->rs_item, &rds_sock_list); in __rds_create()
485 void rds_sock_addref(struct rds_sock *rs) in rds_sock_addref() argument
487 sock_hold(rds_rs_to_sk(rs)); in rds_sock_addref()
490 void rds_sock_put(struct rds_sock *rs) in rds_sock_put() argument
492 sock_put(rds_rs_to_sk(rs)); in rds_sock_put()
505 struct rds_sock *rs; in rds_sock_inc_info() local
513 list_for_each_entry(rs, &rds_sock_list, rs_item) { in rds_sock_inc_info()
514 read_lock(&rs->rs_recv_lock); in rds_sock_inc_info()
517 list_for_each_entry(inc, &rs->rs_recv_queue, i_item) { in rds_sock_inc_info()
521 rs->rs_bound_addr, 1); in rds_sock_inc_info()
524 read_unlock(&rs->rs_recv_lock); in rds_sock_inc_info()
538 struct rds_sock *rs; in rds_sock_info() local
547 list_for_each_entry(rs, &rds_sock_list, rs_item) { in rds_sock_info()
548 sinfo.sndbuf = rds_sk_sndbuf(rs); in rds_sock_info()
549 sinfo.rcvbuf = rds_sk_rcvbuf(rs); in rds_sock_info()
550 sinfo.bound_addr = rs->rs_bound_addr; in rds_sock_info()
551 sinfo.connected_addr = rs->rs_conn_addr; in rds_sock_info()
552 sinfo.bound_port = rs->rs_bound_port; in rds_sock_info()
553 sinfo.connected_port = rs->rs_conn_port; in rds_sock_info()
554 sinfo.inum = sock_i_ino(rds_rs_to_sk(rs)); in rds_sock_info()