Lines Matching refs:cp
74 void rds_connect_path_complete(struct rds_conn_path *cp, int curr) in rds_connect_path_complete() argument
76 if (!rds_conn_path_transition(cp, curr, RDS_CONN_UP)) { in rds_connect_path_complete()
80 atomic_read(&cp->cp_state)); in rds_connect_path_complete()
81 rds_conn_path_drop(cp, false); in rds_connect_path_complete()
86 cp->cp_conn, &cp->cp_conn->c_laddr, &cp->cp_conn->c_faddr); in rds_connect_path_complete()
88 cp->cp_reconnect_jiffies = 0; in rds_connect_path_complete()
89 set_bit(0, &cp->cp_conn->c_map_queued); in rds_connect_path_complete()
91 if (!rds_destroy_pending(cp->cp_conn)) { in rds_connect_path_complete()
92 queue_delayed_work(rds_wq, &cp->cp_send_w, 0); in rds_connect_path_complete()
93 queue_delayed_work(rds_wq, &cp->cp_recv_w, 0); in rds_connect_path_complete()
123 void rds_queue_reconnect(struct rds_conn_path *cp) in rds_queue_reconnect() argument
126 struct rds_connection *conn = cp->cp_conn; in rds_queue_reconnect()
130 cp->cp_reconnect_jiffies); in rds_queue_reconnect()
137 set_bit(RDS_RECONNECT_PENDING, &cp->cp_flags); in rds_queue_reconnect()
138 if (cp->cp_reconnect_jiffies == 0) { in rds_queue_reconnect()
139 cp->cp_reconnect_jiffies = rds_sysctl_reconnect_min_jiffies; in rds_queue_reconnect()
141 if (!rds_destroy_pending(cp->cp_conn)) in rds_queue_reconnect()
142 queue_delayed_work(rds_wq, &cp->cp_conn_w, 0); in rds_queue_reconnect()
149 rand % cp->cp_reconnect_jiffies, cp->cp_reconnect_jiffies, in rds_queue_reconnect()
152 if (!rds_destroy_pending(cp->cp_conn)) in rds_queue_reconnect()
153 queue_delayed_work(rds_wq, &cp->cp_conn_w, in rds_queue_reconnect()
154 rand % cp->cp_reconnect_jiffies); in rds_queue_reconnect()
157 cp->cp_reconnect_jiffies = min(cp->cp_reconnect_jiffies * 2, in rds_queue_reconnect()
163 struct rds_conn_path *cp = container_of(work, in rds_connect_worker() local
166 struct rds_connection *conn = cp->cp_conn; in rds_connect_worker()
169 if (cp->cp_index > 0 && in rds_connect_worker()
170 rds_addr_cmp(&cp->cp_conn->c_laddr, &cp->cp_conn->c_faddr) >= 0) in rds_connect_worker()
172 clear_bit(RDS_RECONNECT_PENDING, &cp->cp_flags); in rds_connect_worker()
173 ret = rds_conn_path_transition(cp, RDS_CONN_DOWN, RDS_CONN_CONNECTING); in rds_connect_worker()
175 ret = conn->c_trans->conn_path_connect(cp); in rds_connect_worker()
180 if (rds_conn_path_transition(cp, in rds_connect_worker()
183 rds_queue_reconnect(cp); in rds_connect_worker()
185 rds_conn_path_error(cp, "connect failed\n"); in rds_connect_worker()
192 struct rds_conn_path *cp = container_of(work, in rds_send_worker() local
197 if (rds_conn_path_state(cp) == RDS_CONN_UP) { in rds_send_worker()
198 clear_bit(RDS_LL_SEND_FULL, &cp->cp_flags); in rds_send_worker()
199 ret = rds_send_xmit(cp); in rds_send_worker()
201 rdsdebug("conn %p ret %d\n", cp->cp_conn, ret); in rds_send_worker()
205 queue_delayed_work(rds_wq, &cp->cp_send_w, 0); in rds_send_worker()
209 queue_delayed_work(rds_wq, &cp->cp_send_w, 2); in rds_send_worker()
218 struct rds_conn_path *cp = container_of(work, in rds_recv_worker() local
223 if (rds_conn_path_state(cp) == RDS_CONN_UP) { in rds_recv_worker()
224 ret = cp->cp_conn->c_trans->recv_path(cp); in rds_recv_worker()
225 rdsdebug("conn %p ret %d\n", cp->cp_conn, ret); in rds_recv_worker()
229 queue_delayed_work(rds_wq, &cp->cp_recv_w, 0); in rds_recv_worker()
233 queue_delayed_work(rds_wq, &cp->cp_recv_w, 2); in rds_recv_worker()
242 struct rds_conn_path *cp = container_of(work, in rds_shutdown_worker() local
246 rds_conn_shutdown(cp); in rds_shutdown_worker()