• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/rds/

Lines Matching defs:conn

66 static inline int rds_conn_is_sending(struct rds_connection *conn)
70 if (!mutex_trylock(&conn->c_send_lock))
73 mutex_unlock(&conn->c_send_lock);
82 struct rds_connection *conn, *ret = NULL;
85 hlist_for_each_entry(conn, pos, head, c_hash_node) {
86 if (conn->c_faddr == faddr && conn->c_laddr == laddr &&
87 conn->c_trans == trans) {
88 ret = conn;
92 rdsdebug("returning conn %p for %pI4 -> %pI4\n", ret,
103 void rds_conn_reset(struct rds_connection *conn)
106 &conn->c_laddr, &conn->c_faddr);
109 rds_send_reset(conn);
110 conn->c_flags = 0;
119 * There is only every one 'conn' for a given pair of addresses in the
130 struct rds_connection *conn, *parent = NULL;
136 conn = rds_conn_lookup(head, laddr, faddr, trans);
137 if (conn && conn->c_loopback && conn->c_trans != &rds_loop_transport &&
143 parent = conn;
144 conn = parent->c_passive;
147 if (conn)
150 conn = kmem_cache_zalloc(rds_conn_slab, gfp);
151 if (conn == NULL) {
152 conn = ERR_PTR(-ENOMEM);
156 INIT_HLIST_NODE(&conn->c_hash_node);
157 conn->c_laddr = laddr;
158 conn->c_faddr = faddr;
159 spin_lock_init(&conn->c_lock);
160 conn->c_next_tx_seq = 1;
162 mutex_init(&conn->c_send_lock);
163 INIT_LIST_HEAD(&conn->c_send_queue);
164 INIT_LIST_HEAD(&conn->c_retrans);
166 ret = rds_cong_get_maps(conn);
168 kmem_cache_free(rds_conn_slab, conn);
169 conn = ERR_PTR(ret);
179 conn->c_loopback = 1;
189 conn->c_trans = trans;
191 ret = trans->conn_alloc(conn, gfp);
193 kmem_cache_free(rds_conn_slab, conn);
194 conn = ERR_PTR(ret);
198 atomic_set(&conn->c_state, RDS_CONN_DOWN);
199 conn->c_reconnect_jiffies = 0;
200 INIT_DELAYED_WORK(&conn->c_send_w, rds_send_worker);
201 INIT_DELAYED_WORK(&conn->c_recv_w, rds_recv_worker);
202 INIT_DELAYED_WORK(&conn->c_conn_w, rds_connect_worker);
203 INIT_WORK(&conn->c_down_w, rds_shutdown_worker);
204 mutex_init(&conn->c_cm_lock);
205 conn->c_flags = 0;
207 rdsdebug("allocated conn %p for %pI4 -> %pI4 over %s %s\n",
208 conn, &laddr, &faddr,
213 * Since we ran without holding the conn lock, someone could
214 * have created the same conn (either normal or passive) in the
216 * init and return our conn. If we lost, we rollback and return the
221 /* Creating passive conn */
223 trans->conn_free(conn->c_transport_data);
224 kmem_cache_free(rds_conn_slab, conn);
225 conn = parent->c_passive;
227 parent->c_passive = conn;
228 rds_cong_add_conn(conn);
232 /* Creating normal conn */
237 trans->conn_free(conn->c_transport_data);
238 kmem_cache_free(rds_conn_slab, conn);
239 conn = found;
241 hlist_add_head(&conn->c_hash_node, head);
242 rds_cong_add_conn(conn);
249 return conn;
266 void rds_conn_destroy(struct rds_connection *conn)
270 rdsdebug("freeing conn %p for %pI4 -> "
271 "%pI4\n", conn, &conn->c_laddr,
272 &conn->c_faddr);
274 hlist_del_init(&conn->c_hash_node);
277 atomic_set(&conn->c_state, RDS_CONN_ERROR);
278 cancel_delayed_work(&conn->c_conn_w);
279 queue_work(rds_wq, &conn->c_down_w);
284 &conn->c_send_queue,
290 if (conn->c_xmit_rm)
291 rds_message_put(conn->c_xmit_rm);
293 conn->c_trans->conn_free(conn->c_transport_data);
300 rds_cong_remove_conn(conn);
302 BUG_ON(!list_empty(&conn->c_retrans));
303 kmem_cache_free(rds_conn_slab, conn);
317 struct rds_connection *conn;
329 hlist_for_each_entry(conn, pos, head, c_hash_node) {
331 list = &conn->c_send_queue;
333 list = &conn->c_retrans;
335 spin_lock(&conn->c_lock);
341 conn->c_laddr,
342 conn->c_faddr, 0);
345 spin_unlock(&conn->c_lock);
380 struct rds_connection *conn;
391 hlist_for_each_entry_safe(conn, pos, tmp, head, c_hash_node) {
393 if (!visitor(conn, buffer))
411 static int rds_conn_info_visitor(struct rds_connection *conn,
416 cinfo->next_tx_seq = conn->c_next_tx_seq;
417 cinfo->next_rx_seq = conn->c_next_rx_seq;
418 cinfo->laddr = conn->c_laddr;
419 cinfo->faddr = conn->c_faddr;
420 strncpy(cinfo->transport, conn->c_trans->t_name,
425 rds_conn_is_sending(conn), SENDING);
427 atomic_read(&conn->c_state) == RDS_CONN_CONNECTING,
430 atomic_read(&conn->c_state) == RDS_CONN_UP,
479 void rds_conn_drop(struct rds_connection *conn)
481 atomic_set(&conn->c_state, RDS_CONN_ERROR);
482 queue_work(rds_wq, &conn->c_down_w);
490 __rds_conn_error(struct rds_connection *conn, const char *fmt, ...)
498 rds_conn_drop(conn);