• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/infiniband/ulp/iser/

Lines Matching defs:ib_conn

132 static int iser_create_ib_conn_res(struct iser_conn *ib_conn)
139 BUG_ON(ib_conn->device == NULL);
141 device = ib_conn->device;
143 ib_conn->page_vec = kmalloc(sizeof(struct iser_page_vec) +
146 if (!ib_conn->page_vec) {
150 ib_conn->page_vec->pages = (u64 *) (ib_conn->page_vec + 1);
166 ib_conn->fmr_pool = ib_create_fmr_pool(device->pd, &params);
167 if (IS_ERR(ib_conn->fmr_pool)) {
168 ret = PTR_ERR(ib_conn->fmr_pool);
175 init_attr.qp_context = (void *)ib_conn;
185 ret = rdma_create_qp(ib_conn->cma_id, device->pd, &init_attr);
189 ib_conn->qp = ib_conn->cma_id->qp;
191 ib_conn, ib_conn->cma_id,
192 ib_conn->fmr_pool, ib_conn->cma_id->qp);
196 (void)ib_destroy_fmr_pool(ib_conn->fmr_pool);
198 kfree(ib_conn->page_vec);
208 static int iser_free_ib_conn_res(struct iser_conn *ib_conn)
210 BUG_ON(ib_conn == NULL);
213 ib_conn, ib_conn->cma_id,
214 ib_conn->fmr_pool, ib_conn->qp);
217 if (ib_conn->fmr_pool != NULL)
218 ib_destroy_fmr_pool(ib_conn->fmr_pool);
220 if (ib_conn->qp != NULL)
221 rdma_destroy_qp(ib_conn->cma_id);
223 if (ib_conn->cma_id != NULL)
224 rdma_destroy_id(ib_conn->cma_id);
226 ib_conn->fmr_pool = NULL;
227 ib_conn->qp = NULL;
228 ib_conn->cma_id = NULL;
229 kfree(ib_conn->page_vec);
289 int iser_conn_state_comp(struct iser_conn *ib_conn,
294 spin_lock_bh(&ib_conn->lock);
295 ret = (ib_conn->state == comp);
296 spin_unlock_bh(&ib_conn->lock);
300 static int iser_conn_state_comp_exch(struct iser_conn *ib_conn,
306 spin_lock_bh(&ib_conn->lock);
307 if ((ret = (ib_conn->state == comp)))
308 ib_conn->state = exch;
309 spin_unlock_bh(&ib_conn->lock);
316 void iser_conn_terminate(struct iser_conn *ib_conn)
325 iser_conn_state_comp_exch(ib_conn, ISER_CONN_UP, ISER_CONN_TERMINATING);
326 err = rdma_disconnect(ib_conn->cma_id);
329 ib_conn,err);
331 wait_event_interruptible(ib_conn->wait,
332 ib_conn->state == ISER_CONN_DOWN);
334 iser_conn_release(ib_conn);
339 struct iser_conn *ib_conn;
340 ib_conn = (struct iser_conn *)cma_id->context;
342 ib_conn->state = ISER_CONN_DOWN;
343 wake_up_interruptible(&ib_conn->wait);
349 struct iser_conn *ib_conn;
353 ib_conn = (struct iser_conn *)cma_id->context;
354 ib_conn->device = device;
399 struct iser_conn *ib_conn;
401 ib_conn = (struct iser_conn *)cma_id->context;
402 ib_conn->state = ISER_CONN_UP;
403 wake_up_interruptible(&ib_conn->wait);
408 struct iser_conn *ib_conn;
410 ib_conn = (struct iser_conn *)cma_id->context;
411 ib_conn->disc_evt_flag = 1;
415 if (iser_conn_state_comp_exch(ib_conn, ISER_CONN_UP,
417 iscsi_conn_failure(ib_conn->iser_conn->iscsi_conn,
421 if ((atomic_read(&ib_conn->post_recv_buf_count) == 0) &&
422 (atomic_read(&ib_conn->post_send_buf_count) == 0)) {
423 ib_conn->state = ISER_CONN_DOWN;
424 wake_up_interruptible(&ib_conn->wait);
470 struct iser_conn *ib_conn;
472 ib_conn = kzalloc(sizeof *ib_conn, GFP_KERNEL);
473 if (!ib_conn) {
477 ib_conn->state = ISER_CONN_INIT;
478 init_waitqueue_head(&ib_conn->wait);
479 atomic_set(&ib_conn->post_recv_buf_count, 0);
480 atomic_set(&ib_conn->post_send_buf_count, 0);
481 INIT_LIST_HEAD(&ib_conn->conn_list);
482 spin_lock_init(&ib_conn->lock);
484 *ibconn = ib_conn;
492 int iser_connect(struct iser_conn *ib_conn,
500 sprintf(ib_conn->name,"%d.%d.%d.%d:%d",
504 ib_conn->device = NULL;
509 ib_conn->state = ISER_CONN_PENDING;
511 ib_conn->cma_id = rdma_create_id(iser_cma_handler,
512 (void *)ib_conn,
514 if (IS_ERR(ib_conn->cma_id)) {
515 err = PTR_ERR(ib_conn->cma_id);
522 err = rdma_resolve_addr(ib_conn->cma_id, src, dst, 1000);
529 wait_event_interruptible(ib_conn->wait,
530 (ib_conn->state != ISER_CONN_PENDING));
532 if (ib_conn->state != ISER_CONN_UP) {
539 list_add(&ib_conn->conn_list, &ig.connlist);
544 ib_conn->cma_id = NULL;
546 ib_conn->state = ISER_CONN_DOWN;
548 iser_conn_release(ib_conn);
555 void iser_conn_release(struct iser_conn *ib_conn)
557 struct iser_device *device = ib_conn->device;
559 BUG_ON(ib_conn->state != ISER_CONN_DOWN);
562 list_del(&ib_conn->conn_list);
565 iser_free_ib_conn_res(ib_conn);
566 ib_conn->device = NULL;
570 if (ib_conn->iser_conn)
571 ib_conn->iser_conn->ib_conn = NULL;
572 kfree(ib_conn);
581 int iser_reg_page_vec(struct iser_conn *ib_conn,
593 mem = ib_fmr_pool_map_phys(ib_conn->fmr_pool,
691 struct iser_conn *ib_conn;
695 ib_conn = recv_dto->ib_conn;
704 atomic_inc(&ib_conn->post_recv_buf_count);
705 ib_ret = ib_post_recv(ib_conn->qp, &recv_wr, &recv_wr_failed);
708 atomic_dec(&ib_conn->post_recv_buf_count);
725 struct iser_conn *ib_conn;
728 ib_conn = dto->ib_conn;
739 atomic_inc(&ib_conn->post_send_buf_count);
741 ib_ret = ib_post_send(ib_conn->qp, &send_wr, &send_wr_failed);
746 atomic_dec(&ib_conn->post_send_buf_count);
756 struct iser_conn *ib_conn = dto->ib_conn;
763 atomic_dec(&ib_conn->post_recv_buf_count);
767 atomic_dec(&ib_conn->post_send_buf_count);
770 if (atomic_read(&ib_conn->post_recv_buf_count) == 0 &&
771 atomic_read(&ib_conn->post_send_buf_count) == 0) {
775 if (iser_conn_state_comp_exch(ib_conn, ISER_CONN_UP,
777 iscsi_conn_failure(ib_conn->iser_conn->iscsi_conn,
782 if (ib_conn->disc_evt_flag) {
783 ib_conn->state = ISER_CONN_DOWN;
784 wake_up_interruptible(&ib_conn->wait);