Lines Matching refs:hba

34 static int bnx2i_adapter_ready(struct bnx2i_hba *hba)  in bnx2i_adapter_ready()  argument
38 if (!hba || !test_bit(ADAPTER_STATE_UP, &hba->adapter_state) || in bnx2i_adapter_ready()
39 test_bit(ADAPTER_STATE_GOING_DOWN, &hba->adapter_state) || in bnx2i_adapter_ready()
40 test_bit(ADAPTER_STATE_LINK_DOWN, &hba->adapter_state)) in bnx2i_adapter_ready()
143 static int bnx2i_map_scsi_sg(struct bnx2i_hba *hba, struct bnx2i_cmd *cmd) in bnx2i_map_scsi_sg() argument
190 bd_count = bnx2i_map_scsi_sg(cmd->conn->hba, cmd); in bnx2i_iscsi_map_sg_list()
238 static int bnx2i_bind_conn_to_iscsi_cid(struct bnx2i_hba *hba, in bnx2i_bind_conn_to_iscsi_cid() argument
242 if (hba && hba->cid_que.conn_cid_tbl[iscsi_cid]) { in bnx2i_bind_conn_to_iscsi_cid()
248 hba->cid_que.conn_cid_tbl[iscsi_cid] = bnx2i_conn; in bnx2i_bind_conn_to_iscsi_cid()
258 struct bnx2i_conn *bnx2i_get_conn_from_id(struct bnx2i_hba *hba, in bnx2i_get_conn_from_id() argument
261 if (!hba->cid_que.conn_cid_tbl) { in bnx2i_get_conn_from_id()
265 } else if (iscsi_cid >= hba->max_active_conns) { in bnx2i_get_conn_from_id()
269 return hba->cid_que.conn_cid_tbl[iscsi_cid]; in bnx2i_get_conn_from_id()
277 static u32 bnx2i_alloc_iscsi_cid(struct bnx2i_hba *hba) in bnx2i_alloc_iscsi_cid() argument
281 if (!hba->cid_que.cid_free_cnt) in bnx2i_alloc_iscsi_cid()
284 idx = hba->cid_que.cid_q_cons_idx; in bnx2i_alloc_iscsi_cid()
285 hba->cid_que.cid_q_cons_idx++; in bnx2i_alloc_iscsi_cid()
286 if (hba->cid_que.cid_q_cons_idx == hba->cid_que.cid_q_max_idx) in bnx2i_alloc_iscsi_cid()
287 hba->cid_que.cid_q_cons_idx = 0; in bnx2i_alloc_iscsi_cid()
289 hba->cid_que.cid_free_cnt--; in bnx2i_alloc_iscsi_cid()
290 return hba->cid_que.cid_que[idx]; in bnx2i_alloc_iscsi_cid()
299 static void bnx2i_free_iscsi_cid(struct bnx2i_hba *hba, u16 iscsi_cid) in bnx2i_free_iscsi_cid() argument
306 hba->cid_que.cid_free_cnt++; in bnx2i_free_iscsi_cid()
308 idx = hba->cid_que.cid_q_prod_idx; in bnx2i_free_iscsi_cid()
309 hba->cid_que.cid_que[idx] = iscsi_cid; in bnx2i_free_iscsi_cid()
310 hba->cid_que.conn_cid_tbl[iscsi_cid] = NULL; in bnx2i_free_iscsi_cid()
311 hba->cid_que.cid_q_prod_idx++; in bnx2i_free_iscsi_cid()
312 if (hba->cid_que.cid_q_prod_idx == hba->cid_que.cid_q_max_idx) in bnx2i_free_iscsi_cid()
313 hba->cid_que.cid_q_prod_idx = 0; in bnx2i_free_iscsi_cid()
324 static int bnx2i_setup_free_cid_que(struct bnx2i_hba *hba) in bnx2i_setup_free_cid_que() argument
329 mem_size = hba->max_active_conns * sizeof(u32); in bnx2i_setup_free_cid_que()
332 hba->cid_que.cid_que_base = kmalloc(mem_size, GFP_KERNEL); in bnx2i_setup_free_cid_que()
333 if (!hba->cid_que.cid_que_base) in bnx2i_setup_free_cid_que()
336 mem_size = hba->max_active_conns * sizeof(struct bnx2i_conn *); in bnx2i_setup_free_cid_que()
338 hba->cid_que.conn_cid_tbl = kmalloc(mem_size, GFP_KERNEL); in bnx2i_setup_free_cid_que()
339 if (!hba->cid_que.conn_cid_tbl) { in bnx2i_setup_free_cid_que()
340 kfree(hba->cid_que.cid_que_base); in bnx2i_setup_free_cid_que()
341 hba->cid_que.cid_que_base = NULL; in bnx2i_setup_free_cid_que()
345 hba->cid_que.cid_que = (u32 *)hba->cid_que.cid_que_base; in bnx2i_setup_free_cid_que()
346 hba->cid_que.cid_q_prod_idx = 0; in bnx2i_setup_free_cid_que()
347 hba->cid_que.cid_q_cons_idx = 0; in bnx2i_setup_free_cid_que()
348 hba->cid_que.cid_q_max_idx = hba->max_active_conns; in bnx2i_setup_free_cid_que()
349 hba->cid_que.cid_free_cnt = hba->max_active_conns; in bnx2i_setup_free_cid_que()
351 for (i = 0; i < hba->max_active_conns; i++) { in bnx2i_setup_free_cid_que()
352 hba->cid_que.cid_que[i] = i; in bnx2i_setup_free_cid_que()
353 hba->cid_que.conn_cid_tbl[i] = NULL; in bnx2i_setup_free_cid_que()
363 static void bnx2i_release_free_cid_que(struct bnx2i_hba *hba) in bnx2i_release_free_cid_que() argument
365 kfree(hba->cid_que.cid_que_base); in bnx2i_release_free_cid_que()
366 hba->cid_que.cid_que_base = NULL; in bnx2i_release_free_cid_que()
368 kfree(hba->cid_que.conn_cid_tbl); in bnx2i_release_free_cid_que()
369 hba->cid_que.conn_cid_tbl = NULL; in bnx2i_release_free_cid_que()
381 static struct iscsi_endpoint *bnx2i_alloc_ep(struct bnx2i_hba *hba) in bnx2i_alloc_ep() argument
398 bnx2i_ep->hba = hba; in bnx2i_alloc_ep()
399 bnx2i_ep->hba_age = hba->age; in bnx2i_alloc_ep()
405 hba->ofld_conns_active++; in bnx2i_alloc_ep()
422 bnx2i_ep->hba->ofld_conns_active--; in bnx2i_free_ep()
425 bnx2i_free_iscsi_cid(bnx2i_ep->hba, bnx2i_ep->ep_iscsi_cid); in bnx2i_free_ep()
432 bnx2i_ep->hba = NULL; in bnx2i_free_ep()
444 static int bnx2i_alloc_bdt(struct bnx2i_hba *hba, struct iscsi_session *session, in bnx2i_alloc_bdt() argument
450 io->bd_tbl = dma_alloc_coherent(&hba->pcidev->dev, in bnx2i_alloc_bdt()
467 static void bnx2i_destroy_cmd_pool(struct bnx2i_hba *hba, in bnx2i_destroy_cmd_pool() argument
477 dma_free_coherent(&hba->pcidev->dev, in bnx2i_destroy_cmd_pool()
492 static int bnx2i_setup_cmd_pool(struct bnx2i_hba *hba, in bnx2i_setup_cmd_pool() argument
504 if (bnx2i_alloc_bdt(hba, session, cmd)) in bnx2i_setup_cmd_pool()
511 bnx2i_destroy_cmd_pool(hba, session); in bnx2i_setup_cmd_pool()
523 static int bnx2i_setup_mp_bdt(struct bnx2i_hba *hba) in bnx2i_setup_mp_bdt() argument
529 hba->mp_bd_tbl = dma_alloc_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_setup_mp_bdt()
530 &hba->mp_bd_dma, GFP_KERNEL); in bnx2i_setup_mp_bdt()
531 if (!hba->mp_bd_tbl) { in bnx2i_setup_mp_bdt()
537 hba->dummy_buffer = dma_alloc_coherent(&hba->pcidev->dev, in bnx2i_setup_mp_bdt()
539 &hba->dummy_buf_dma, GFP_KERNEL); in bnx2i_setup_mp_bdt()
540 if (!hba->dummy_buffer) { in bnx2i_setup_mp_bdt()
542 dma_free_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_setup_mp_bdt()
543 hba->mp_bd_tbl, hba->mp_bd_dma); in bnx2i_setup_mp_bdt()
544 hba->mp_bd_tbl = NULL; in bnx2i_setup_mp_bdt()
549 mp_bdt = (struct iscsi_bd *) hba->mp_bd_tbl; in bnx2i_setup_mp_bdt()
550 addr = (unsigned long) hba->dummy_buf_dma; in bnx2i_setup_mp_bdt()
567 static void bnx2i_free_mp_bdt(struct bnx2i_hba *hba) in bnx2i_free_mp_bdt() argument
569 if (hba->mp_bd_tbl) { in bnx2i_free_mp_bdt()
570 dma_free_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_free_mp_bdt()
571 hba->mp_bd_tbl, hba->mp_bd_dma); in bnx2i_free_mp_bdt()
572 hba->mp_bd_tbl = NULL; in bnx2i_free_mp_bdt()
574 if (hba->dummy_buffer) { in bnx2i_free_mp_bdt()
575 dma_free_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_free_mp_bdt()
576 hba->dummy_buffer, hba->dummy_buf_dma); in bnx2i_free_mp_bdt()
577 hba->dummy_buffer = NULL; in bnx2i_free_mp_bdt()
604 static int bnx2i_ep_destroy_list_add(struct bnx2i_hba *hba, in bnx2i_ep_destroy_list_add() argument
607 write_lock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_destroy_list_add()
608 list_add_tail(&ep->link, &hba->ep_destroy_list); in bnx2i_ep_destroy_list_add()
609 write_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_destroy_list_add()
621 static int bnx2i_ep_destroy_list_del(struct bnx2i_hba *hba, in bnx2i_ep_destroy_list_del() argument
624 write_lock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_destroy_list_del()
626 write_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_destroy_list_del()
638 static int bnx2i_ep_ofld_list_add(struct bnx2i_hba *hba, in bnx2i_ep_ofld_list_add() argument
641 write_lock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_ofld_list_add()
642 list_add_tail(&ep->link, &hba->ep_ofld_list); in bnx2i_ep_ofld_list_add()
643 write_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_ofld_list_add()
654 static int bnx2i_ep_ofld_list_del(struct bnx2i_hba *hba, in bnx2i_ep_ofld_list_del() argument
657 write_lock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_ofld_list_del()
659 write_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_ofld_list_del()
672 bnx2i_find_ep_in_ofld_list(struct bnx2i_hba *hba, u32 iscsi_cid) in bnx2i_find_ep_in_ofld_list() argument
678 read_lock_bh(&hba->ep_rdwr_lock); in bnx2i_find_ep_in_ofld_list()
679 list_for_each_safe(list, tmp, &hba->ep_ofld_list) { in bnx2i_find_ep_in_ofld_list()
686 read_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_find_ep_in_ofld_list()
700 bnx2i_find_ep_in_destroy_list(struct bnx2i_hba *hba, u32 iscsi_cid) in bnx2i_find_ep_in_destroy_list() argument
706 read_lock_bh(&hba->ep_rdwr_lock); in bnx2i_find_ep_in_destroy_list()
707 list_for_each_safe(list, tmp, &hba->ep_destroy_list) { in bnx2i_find_ep_in_destroy_list()
714 read_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_find_ep_in_destroy_list()
729 static void bnx2i_ep_active_list_add(struct bnx2i_hba *hba, in bnx2i_ep_active_list_add() argument
732 write_lock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_active_list_add()
733 list_add_tail(&ep->link, &hba->ep_active_list); in bnx2i_ep_active_list_add()
734 write_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_active_list_add()
745 static void bnx2i_ep_active_list_del(struct bnx2i_hba *hba, in bnx2i_ep_active_list_del() argument
748 write_lock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_active_list_del()
750 write_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_ep_active_list_del()
763 static void bnx2i_setup_host_queue_size(struct bnx2i_hba *hba, in bnx2i_setup_host_queue_size() argument
766 if (test_bit(BNX2I_NX2_DEV_5708, &hba->cnic_dev_type)) in bnx2i_setup_host_queue_size()
768 else if (test_bit(BNX2I_NX2_DEV_5709, &hba->cnic_dev_type)) in bnx2i_setup_host_queue_size()
770 else if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) in bnx2i_setup_host_queue_size()
787 struct bnx2i_hba *hba; in bnx2i_alloc_hba() local
789 shost = iscsi_host_alloc(&bnx2i_host_template, sizeof(*hba), 0); in bnx2i_alloc_hba()
799 hba = iscsi_host_priv(shost); in bnx2i_alloc_hba()
800 hba->shost = shost; in bnx2i_alloc_hba()
801 hba->netdev = cnic->netdev; in bnx2i_alloc_hba()
803 hba->pcidev = cnic->pcidev; in bnx2i_alloc_hba()
804 pci_dev_get(hba->pcidev); in bnx2i_alloc_hba()
805 hba->pci_did = hba->pcidev->device; in bnx2i_alloc_hba()
806 hba->pci_vid = hba->pcidev->vendor; in bnx2i_alloc_hba()
807 hba->pci_sdid = hba->pcidev->subsystem_device; in bnx2i_alloc_hba()
808 hba->pci_svid = hba->pcidev->subsystem_vendor; in bnx2i_alloc_hba()
809 hba->pci_func = PCI_FUNC(hba->pcidev->devfn); in bnx2i_alloc_hba()
810 hba->pci_devno = PCI_SLOT(hba->pcidev->devfn); in bnx2i_alloc_hba()
812 bnx2i_identify_device(hba, cnic); in bnx2i_alloc_hba()
813 bnx2i_setup_host_queue_size(hba, shost); in bnx2i_alloc_hba()
815 hba->reg_base = pci_resource_start(hba->pcidev, 0); in bnx2i_alloc_hba()
816 if (test_bit(BNX2I_NX2_DEV_5709, &hba->cnic_dev_type)) { in bnx2i_alloc_hba()
817 hba->regview = pci_iomap(hba->pcidev, 0, BNX2_MQ_CONFIG2); in bnx2i_alloc_hba()
818 if (!hba->regview) in bnx2i_alloc_hba()
820 } else if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) { in bnx2i_alloc_hba()
821 hba->regview = pci_iomap(hba->pcidev, 0, 4096); in bnx2i_alloc_hba()
822 if (!hba->regview) in bnx2i_alloc_hba()
826 if (bnx2i_setup_mp_bdt(hba)) in bnx2i_alloc_hba()
829 INIT_LIST_HEAD(&hba->ep_ofld_list); in bnx2i_alloc_hba()
830 INIT_LIST_HEAD(&hba->ep_active_list); in bnx2i_alloc_hba()
831 INIT_LIST_HEAD(&hba->ep_destroy_list); in bnx2i_alloc_hba()
832 rwlock_init(&hba->ep_rdwr_lock); in bnx2i_alloc_hba()
834 hba->mtu_supported = BNX2I_MAX_MTU_SUPPORTED; in bnx2i_alloc_hba()
837 hba->max_active_conns = ISCSI_MAX_CONNS_PER_HBA; in bnx2i_alloc_hba()
839 if (bnx2i_setup_free_cid_que(hba)) in bnx2i_alloc_hba()
843 if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) { in bnx2i_alloc_hba()
845 hba->max_sqes = sq_size; in bnx2i_alloc_hba()
847 hba->max_sqes = BNX2I_5770X_SQ_WQES_DEFAULT; in bnx2i_alloc_hba()
850 hba->max_sqes = sq_size; in bnx2i_alloc_hba()
852 hba->max_sqes = BNX2I_570X_SQ_WQES_DEFAULT; in bnx2i_alloc_hba()
855 hba->max_rqes = rq_size; in bnx2i_alloc_hba()
856 hba->max_cqes = hba->max_sqes + rq_size; in bnx2i_alloc_hba()
857 if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) { in bnx2i_alloc_hba()
858 if (hba->max_cqes > BNX2I_5770X_CQ_WQES_MAX) in bnx2i_alloc_hba()
859 hba->max_cqes = BNX2I_5770X_CQ_WQES_MAX; in bnx2i_alloc_hba()
860 } else if (hba->max_cqes > BNX2I_570X_CQ_WQES_MAX) in bnx2i_alloc_hba()
861 hba->max_cqes = BNX2I_570X_CQ_WQES_MAX; in bnx2i_alloc_hba()
863 hba->num_ccell = hba->max_sqes / 2; in bnx2i_alloc_hba()
865 spin_lock_init(&hba->lock); in bnx2i_alloc_hba()
866 mutex_init(&hba->net_dev_lock); in bnx2i_alloc_hba()
867 init_waitqueue_head(&hba->eh_wait); in bnx2i_alloc_hba()
868 if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) { in bnx2i_alloc_hba()
869 hba->hba_shutdown_tmo = 30 * HZ; in bnx2i_alloc_hba()
870 hba->conn_teardown_tmo = 20 * HZ; in bnx2i_alloc_hba()
871 hba->conn_ctx_destroy_tmo = 6 * HZ; in bnx2i_alloc_hba()
873 hba->hba_shutdown_tmo = 20 * HZ; in bnx2i_alloc_hba()
874 hba->conn_teardown_tmo = 10 * HZ; in bnx2i_alloc_hba()
875 hba->conn_ctx_destroy_tmo = 2 * HZ; in bnx2i_alloc_hba()
879 spin_lock_init(&hba->stat_lock); in bnx2i_alloc_hba()
881 memset(&hba->stats, 0, sizeof(struct iscsi_stats_info)); in bnx2i_alloc_hba()
883 if (iscsi_host_add(shost, &hba->pcidev->dev)) in bnx2i_alloc_hba()
885 return hba; in bnx2i_alloc_hba()
888 bnx2i_release_free_cid_que(hba); in bnx2i_alloc_hba()
890 bnx2i_free_mp_bdt(hba); in bnx2i_alloc_hba()
892 if (hba->regview) { in bnx2i_alloc_hba()
893 pci_iounmap(hba->pcidev, hba->regview); in bnx2i_alloc_hba()
894 hba->regview = NULL; in bnx2i_alloc_hba()
897 pci_dev_put(hba->pcidev); in bnx2i_alloc_hba()
908 void bnx2i_free_hba(struct bnx2i_hba *hba) in bnx2i_free_hba() argument
910 struct Scsi_Host *shost = hba->shost; in bnx2i_free_hba()
913 INIT_LIST_HEAD(&hba->ep_ofld_list); in bnx2i_free_hba()
914 INIT_LIST_HEAD(&hba->ep_active_list); in bnx2i_free_hba()
915 INIT_LIST_HEAD(&hba->ep_destroy_list); in bnx2i_free_hba()
917 if (hba->regview) { in bnx2i_free_hba()
918 pci_iounmap(hba->pcidev, hba->regview); in bnx2i_free_hba()
919 hba->regview = NULL; in bnx2i_free_hba()
921 pci_dev_put(hba->pcidev); in bnx2i_free_hba()
922 bnx2i_free_mp_bdt(hba); in bnx2i_free_hba()
923 bnx2i_release_free_cid_que(hba); in bnx2i_free_hba()
934 static void bnx2i_conn_free_login_resources(struct bnx2i_hba *hba, in bnx2i_conn_free_login_resources() argument
938 dma_free_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_conn_free_login_resources()
945 dma_free_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_conn_free_login_resources()
952 dma_free_coherent(&hba->pcidev->dev, in bnx2i_conn_free_login_resources()
960 dma_free_coherent(&hba->pcidev->dev, in bnx2i_conn_free_login_resources()
975 static int bnx2i_conn_alloc_login_resources(struct bnx2i_hba *hba, in bnx2i_conn_alloc_login_resources() argument
980 dma_alloc_coherent(&hba->pcidev->dev, in bnx2i_conn_alloc_login_resources()
991 dma_alloc_coherent(&hba->pcidev->dev, in bnx2i_conn_alloc_login_resources()
1002 dma_alloc_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_conn_alloc_login_resources()
1008 dma_alloc_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_conn_alloc_login_resources()
1017 dma_free_coherent(&hba->pcidev->dev, CNIC_PAGE_SIZE, in bnx2i_conn_alloc_login_resources()
1023 dma_free_coherent(&hba->pcidev->dev, ISCSI_DEF_MAX_RECV_SEG_LEN, in bnx2i_conn_alloc_login_resources()
1028 dma_free_coherent(&hba->pcidev->dev, ISCSI_DEF_MAX_RECV_SEG_LEN, in bnx2i_conn_alloc_login_resources()
1160 struct bnx2i_hba *hba = bnx2i_conn->hba; in bnx2i_cleanup_task() local
1171 bnx2i_send_cmd_cleanup_req(hba, task->dd_data); in bnx2i_cleanup_task()
1190 struct bnx2i_hba *hba = bnx2i_conn->hba; in bnx2i_mtask_xmit() local
1199 ADD_STATS_64(hba, tx_pdus, 1); in bnx2i_mtask_xmit()
1200 ADD_STATS_64(hba, tx_bytes, task->data_count); in bnx2i_mtask_xmit()
1224 struct bnx2i_hba *hba = iscsi_host_priv(shost); in bnx2i_task_xmit() local
1231 hba->max_sqes) in bnx2i_task_xmit()
1265 cmd->req.bd_list_addr_lo = (u32) hba->mp_bd_dma; in bnx2i_task_xmit()
1266 cmd->req.bd_list_addr_hi = (u32) ((u64) hba->mp_bd_dma >> 32); in bnx2i_task_xmit()
1290 struct bnx2i_hba *hba; in bnx2i_session_create() local
1299 shost = bnx2i_ep->hba->shost; in bnx2i_session_create()
1300 hba = iscsi_host_priv(shost); in bnx2i_session_create()
1301 if (bnx2i_adapter_ready(hba)) in bnx2i_session_create()
1308 if (cmds_max > hba->max_sqes) in bnx2i_session_create()
1309 cmds_max = hba->max_sqes; in bnx2i_session_create()
1319 if (bnx2i_setup_cmd_pool(hba, cls_session->dd_data)) in bnx2i_session_create()
1340 struct bnx2i_hba *hba = iscsi_host_priv(shost); in bnx2i_session_destroy() local
1342 bnx2i_destroy_cmd_pool(hba, session); in bnx2i_session_destroy()
1358 struct bnx2i_hba *hba = iscsi_host_priv(shost); in bnx2i_conn_create() local
1371 bnx2i_conn->hba = hba; in bnx2i_conn_create()
1379 if (bnx2i_conn_alloc_login_resources(hba, bnx2i_conn)) { in bnx2i_conn_create()
1411 struct bnx2i_hba *hba = iscsi_host_priv(shost); in bnx2i_conn_bind() local
1423 if (bnx2i_adapter_ready(hba)) { in bnx2i_conn_bind()
1441 if (bnx2i_ep->hba != hba) { in bnx2i_conn_bind()
1446 bnx2i_ep, bnx2i_ep->hba->netdev->name); in bnx2i_conn_bind()
1449 hba->netdev->name); in bnx2i_conn_bind()
1458 ret_code = bnx2i_bind_conn_to_iscsi_cid(hba, bnx2i_conn, in bnx2i_conn_bind()
1464 if (test_bit(BNX2I_NX2_DEV_57710, &bnx2i_ep->hba->cnic_dev_type)) in bnx2i_conn_bind()
1486 struct bnx2i_hba *hba; in bnx2i_conn_destroy() local
1492 hba = iscsi_host_priv(shost); in bnx2i_conn_destroy()
1494 bnx2i_conn_free_login_resources(hba, bnx2i_conn); in bnx2i_conn_destroy()
1531 struct bnx2i_hba *hba = bnx2i_ep->hba; in bnx2i_ep_get_param() local
1534 if (!hba) in bnx2i_ep_get_param()
1539 mutex_lock(&hba->net_dev_lock); in bnx2i_ep_get_param()
1542 mutex_unlock(&hba->net_dev_lock); in bnx2i_ep_get_param()
1545 mutex_lock(&hba->net_dev_lock); in bnx2i_ep_get_param()
1548 mutex_unlock(&hba->net_dev_lock); in bnx2i_ep_get_param()
1566 struct bnx2i_hba *hba = iscsi_host_priv(shost); in bnx2i_host_get_param() local
1571 len = sysfs_format_mac(buf, hba->cnic->mac_addr, 6); in bnx2i_host_get_param()
1574 len = sprintf(buf, "%s\n", hba->netdev->name); in bnx2i_host_get_param()
1577 struct list_head *active_list = &hba->ep_active_list; in bnx2i_host_get_param()
1579 read_lock_bh(&hba->ep_rdwr_lock); in bnx2i_host_get_param()
1580 if (!list_empty(&hba->ep_active_list)) { in bnx2i_host_get_param()
1593 read_unlock_bh(&hba->ep_rdwr_lock); in bnx2i_host_get_param()
1672 struct bnx2i_hba *hba; in bnx2i_check_route() local
1675 hba = get_adapter_list_head(); in bnx2i_check_route()
1676 if (hba && hba->cnic) in bnx2i_check_route()
1677 cnic = hba->cnic->cm_select_dev(desti, CNIC_ULP_ISCSI); in bnx2i_check_route()
1683 hba = bnx2i_find_hba_for_cnic(cnic); in bnx2i_check_route()
1684 if (!hba) in bnx2i_check_route()
1687 if (bnx2i_adapter_ready(hba)) { in bnx2i_check_route()
1691 if (hba->netdev->mtu > hba->mtu_supported) { in bnx2i_check_route()
1693 hba->netdev->name, hba->netdev->mtu); in bnx2i_check_route()
1695 hba->mtu_supported); in bnx2i_check_route()
1698 return hba; in bnx2i_check_route()
1711 static int bnx2i_tear_down_conn(struct bnx2i_hba *hba, in bnx2i_tear_down_conn() argument
1714 if (test_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic) && ep->cm_sk) in bnx2i_tear_down_conn()
1715 hba->cnic->cm_destroy(ep->cm_sk); in bnx2i_tear_down_conn()
1717 if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type) && in bnx2i_tear_down_conn()
1733 hba->netdev->name); in bnx2i_tear_down_conn()
1738 ep->ofld_timer.expires = hba->conn_ctx_destroy_tmo + jiffies; in bnx2i_tear_down_conn()
1741 bnx2i_ep_destroy_list_add(hba, ep); in bnx2i_tear_down_conn()
1744 if (bnx2i_send_conn_destroy(hba, ep)) in bnx2i_tear_down_conn()
1754 bnx2i_ep_destroy_list_del(hba, ep); in bnx2i_tear_down_conn()
1784 struct bnx2i_hba *hba; in bnx2i_ep_connect() local
1792 hba = iscsi_host_priv(shost); in bnx2i_ep_connect()
1798 hba = bnx2i_check_route(dst_addr); in bnx2i_ep_connect()
1800 if (!hba) { in bnx2i_ep_connect()
1804 mutex_lock(&hba->net_dev_lock); in bnx2i_ep_connect()
1806 if (bnx2i_adapter_ready(hba) || !hba->cid_que.cid_free_cnt) { in bnx2i_ep_connect()
1810 cnic = hba->cnic; in bnx2i_ep_connect()
1811 ep = bnx2i_alloc_ep(hba); in bnx2i_ep_connect()
1819 iscsi_cid = bnx2i_alloc_iscsi_cid(hba); in bnx2i_ep_connect()
1822 "iscsi cid\n", hba->netdev->name); in bnx2i_ep_connect()
1827 bnx2i_ep->hba_age = hba->age; in bnx2i_ep_connect()
1829 rc = bnx2i_alloc_qp_resc(hba, bnx2i_ep); in bnx2i_ep_connect()
1832 "\n", hba->netdev->name); in bnx2i_ep_connect()
1839 bnx2i_ep_ofld_list_add(hba, bnx2i_ep); in bnx2i_ep_connect()
1845 if (bnx2i_send_conn_ofld_req(hba, bnx2i_ep)) { in bnx2i_ep_connect()
1848 hba->netdev->name, bnx2i_ep->ep_iscsi_cid); in bnx2i_ep_connect()
1853 "\n", hba->netdev->name); in bnx2i_ep_connect()
1854 bnx2i_ep_ofld_list_del(hba, bnx2i_ep); in bnx2i_ep_connect()
1866 bnx2i_ep_ofld_list_del(hba, bnx2i_ep); in bnx2i_ep_connect()
1871 hba->netdev->name, bnx2i_ep->ep_iscsi_cid); in bnx2i_ep_connect()
1903 if (!test_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic)) { in bnx2i_ep_connect()
1911 bnx2i_ep_active_list_add(hba, bnx2i_ep); in bnx2i_ep_connect()
1917 mutex_unlock(&hba->net_dev_lock); in bnx2i_ep_connect()
1921 bnx2i_ep_active_list_del(hba, bnx2i_ep); in bnx2i_ep_connect()
1923 if (bnx2i_tear_down_conn(hba, bnx2i_ep)) { in bnx2i_ep_connect()
1924 mutex_unlock(&hba->net_dev_lock); in bnx2i_ep_connect()
1928 bnx2i_free_qp_resc(hba, bnx2i_ep); in bnx2i_ep_connect()
1932 mutex_unlock(&hba->net_dev_lock); in bnx2i_ep_connect()
1989 if (test_bit(BNX2I_NX2_DEV_57710, &bnx2i_ep->hba->cnic_dev_type)) in bnx2i_ep_tcp_conn_active()
2031 struct bnx2i_hba *hba = bnx2i_ep->hba; in bnx2i_hw_ep_disconnect() local
2039 if (!hba) in bnx2i_hw_ep_disconnect()
2042 cnic = hba->cnic; in bnx2i_hw_ep_disconnect()
2059 bnx2i_ep->ofld_timer.expires = hba->conn_teardown_tmo + jiffies; in bnx2i_hw_ep_disconnect()
2062 if (!test_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic)) in bnx2i_hw_ep_disconnect()
2074 bnx2i_ep->hba->netdev->name); in bnx2i_hw_ep_disconnect()
2094 bnx2i_ep->hba->netdev->name, close, close_ret); in bnx2i_hw_ep_disconnect()
2106 bnx2i_ep_active_list_del(hba, bnx2i_ep); in bnx2i_hw_ep_disconnect()
2107 if (bnx2i_tear_down_conn(hba, bnx2i_ep)) in bnx2i_hw_ep_disconnect()
2125 struct bnx2i_hba *hba; in bnx2i_ep_disconnect() local
2139 hba = bnx2i_ep->hba; in bnx2i_ep_disconnect()
2141 mutex_lock(&hba->net_dev_lock); in bnx2i_ep_disconnect()
2149 if (!test_bit(ADAPTER_STATE_UP, &hba->adapter_state) || in bnx2i_ep_disconnect()
2150 (bnx2i_ep->hba_age != hba->age)) { in bnx2i_ep_disconnect()
2151 bnx2i_ep_active_list_del(hba, bnx2i_ep); in bnx2i_ep_disconnect()
2157 mutex_unlock(&hba->net_dev_lock); in bnx2i_ep_disconnect()
2161 bnx2i_free_qp_resc(hba, bnx2i_ep); in bnx2i_ep_disconnect()
2168 mutex_unlock(&hba->net_dev_lock); in bnx2i_ep_disconnect()
2170 wake_up_interruptible(&hba->eh_wait); in bnx2i_ep_disconnect()
2181 struct bnx2i_hba *hba = iscsi_host_priv(shost); in bnx2i_nl_set_path() local
2186 hba->cnic->iscsi_nl_msg_recv(hba->cnic, ISCSI_UEVENT_PATH_UPDATE, buf, in bnx2i_nl_set_path()