Searched refs:tgt (Results 1 - 93 of 93) sorted by relevance

/linux-4.1.27/drivers/scsi/bnx2fc/
H A Dbnx2fc_tgt.c18 static int bnx2fc_init_tgt(struct bnx2fc_rport *tgt,
22 struct bnx2fc_rport *tgt);
24 struct bnx2fc_rport *tgt);
26 struct bnx2fc_rport *tgt);
32 struct bnx2fc_rport *tgt = (struct bnx2fc_rport *)data; bnx2fc_upld_timer() local
34 BNX2FC_TGT_DBG(tgt, "upld_timer - Upload compl not received!!\n"); bnx2fc_upld_timer()
36 clear_bit(BNX2FC_FLAG_OFFLOADED, &tgt->flags); bnx2fc_upld_timer()
37 clear_bit(BNX2FC_FLAG_ENABLED, &tgt->flags); bnx2fc_upld_timer()
38 set_bit(BNX2FC_FLAG_UPLD_REQ_COMPL, &tgt->flags); bnx2fc_upld_timer()
39 wake_up_interruptible(&tgt->upld_wait); bnx2fc_upld_timer()
45 struct bnx2fc_rport *tgt = (struct bnx2fc_rport *)data; bnx2fc_ofld_timer() local
47 BNX2FC_TGT_DBG(tgt, "entered bnx2fc_ofld_timer\n"); bnx2fc_ofld_timer()
59 clear_bit(BNX2FC_FLAG_OFFLOADED, &tgt->flags); bnx2fc_ofld_timer()
60 clear_bit(BNX2FC_FLAG_ENABLED, &tgt->flags); bnx2fc_ofld_timer()
61 set_bit(BNX2FC_FLAG_OFLD_REQ_CMPL, &tgt->flags); bnx2fc_ofld_timer()
62 wake_up_interruptible(&tgt->ofld_wait); bnx2fc_ofld_timer()
65 static void bnx2fc_ofld_wait(struct bnx2fc_rport *tgt) bnx2fc_ofld_wait() argument
67 setup_timer(&tgt->ofld_timer, bnx2fc_ofld_timer, (unsigned long)tgt); bnx2fc_ofld_wait()
68 mod_timer(&tgt->ofld_timer, jiffies + BNX2FC_FW_TIMEOUT); bnx2fc_ofld_wait()
70 wait_event_interruptible(tgt->ofld_wait, bnx2fc_ofld_wait()
73 &tgt->flags))); bnx2fc_ofld_wait()
76 del_timer_sync(&tgt->ofld_timer); bnx2fc_ofld_wait()
80 struct bnx2fc_rport *tgt, bnx2fc_offload_session()
91 /* NOTE: tgt is already bzero'd */ bnx2fc_offload_session()
92 rval = bnx2fc_init_tgt(tgt, port, rdata); bnx2fc_offload_session()
100 rval = bnx2fc_alloc_session_resc(hba, tgt); bnx2fc_offload_session()
112 clear_bit(BNX2FC_FLAG_OFLD_REQ_CMPL, &tgt->flags); bnx2fc_offload_session()
113 rval = bnx2fc_send_session_ofld_req(port, tgt); bnx2fc_offload_session()
123 bnx2fc_ofld_wait(tgt); bnx2fc_offload_session()
125 if (!(test_bit(BNX2FC_FLAG_OFFLOADED, &tgt->flags))) { bnx2fc_offload_session()
127 &tgt->flags)) { bnx2fc_offload_session()
128 BNX2FC_TGT_DBG(tgt, "ctx_alloc_failure, " bnx2fc_offload_session()
139 if (bnx2fc_map_doorbell(tgt)) { bnx2fc_offload_session()
143 clear_bit(BNX2FC_FLAG_OFLD_REQ_CMPL, &tgt->flags); bnx2fc_offload_session()
144 rval = bnx2fc_send_session_enable_req(port, tgt); bnx2fc_offload_session()
149 bnx2fc_ofld_wait(tgt); bnx2fc_offload_session()
150 if (!(test_bit(BNX2FC_FLAG_ENABLED, &tgt->flags))) bnx2fc_offload_session()
156 BNX2FC_TGT_DBG(tgt, "bnx2fc_offload_session - offload error\n"); bnx2fc_offload_session()
157 clear_bit(BNX2FC_FLAG_OFFLOADED, &tgt->flags); bnx2fc_offload_session()
159 bnx2fc_free_session_resc(hba, tgt); bnx2fc_offload_session()
161 if (tgt->fcoe_conn_id != -1) bnx2fc_offload_session()
162 bnx2fc_free_conn_id(hba, tgt->fcoe_conn_id); bnx2fc_offload_session()
166 void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) bnx2fc_flush_active_ios() argument
172 BNX2FC_TGT_DBG(tgt, "Entered flush_active_ios - %d\n", bnx2fc_flush_active_ios()
173 tgt->num_active_ios.counter); bnx2fc_flush_active_ios()
175 spin_lock_bh(&tgt->tgt_lock); bnx2fc_flush_active_ios()
176 tgt->flush_in_prog = 1; bnx2fc_flush_active_ios()
178 list_for_each_entry_safe(io_req, tmp, &tgt->active_cmd_queue, link) { bnx2fc_flush_active_ios()
200 if (test_bit(BNX2FC_FLAG_DISABLE_FAILED, &tgt->flags)) bnx2fc_flush_active_ios()
208 list_for_each_entry_safe(io_req, tmp, &tgt->active_tm_queue, link) { bnx2fc_flush_active_ios()
217 list_for_each_entry_safe(io_req, tmp, &tgt->els_queue, link) { bnx2fc_flush_active_ios()
234 if (test_bit(BNX2FC_FLAG_DISABLE_FAILED, &tgt->flags)) bnx2fc_flush_active_ios()
242 list_for_each_entry_safe(io_req, tmp, &tgt->io_retire_queue, link) { bnx2fc_flush_active_ios()
263 BNX2FC_TGT_DBG(tgt, "IOs flushed = %d\n", i); bnx2fc_flush_active_ios()
265 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_flush_active_ios()
267 while ((tgt->num_active_ios.counter != 0) && (i++ < BNX2FC_WAIT_CNT)) bnx2fc_flush_active_ios()
269 if (tgt->num_active_ios.counter != 0) bnx2fc_flush_active_ios()
272 tgt->rdata->ids.port_id, tgt->num_active_ios.counter); bnx2fc_flush_active_ios()
273 spin_lock_bh(&tgt->tgt_lock); bnx2fc_flush_active_ios()
274 tgt->flush_in_prog = 0; bnx2fc_flush_active_ios()
275 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_flush_active_ios()
278 static void bnx2fc_upld_wait(struct bnx2fc_rport *tgt) bnx2fc_upld_wait() argument
280 setup_timer(&tgt->upld_timer, bnx2fc_upld_timer, (unsigned long)tgt); bnx2fc_upld_wait()
281 mod_timer(&tgt->upld_timer, jiffies + BNX2FC_FW_TIMEOUT); bnx2fc_upld_wait()
282 wait_event_interruptible(tgt->upld_wait, bnx2fc_upld_wait()
285 &tgt->flags))); bnx2fc_upld_wait()
288 del_timer_sync(&tgt->upld_timer); bnx2fc_upld_wait()
292 struct bnx2fc_rport *tgt) bnx2fc_upload_session()
297 BNX2FC_TGT_DBG(tgt, "upload_session: active_ios = %d\n", bnx2fc_upload_session()
298 tgt->num_active_ios.counter); bnx2fc_upload_session()
304 clear_bit(BNX2FC_FLAG_UPLD_REQ_COMPL, &tgt->flags); bnx2fc_upload_session()
305 bnx2fc_send_session_disable_req(port, tgt); bnx2fc_upload_session()
311 BNX2FC_TGT_DBG(tgt, "waiting for disable compl\n"); bnx2fc_upload_session()
312 bnx2fc_upld_wait(tgt); bnx2fc_upload_session()
318 BNX2FC_TGT_DBG(tgt, "flush/upload - disable wait flags = 0x%lx\n", bnx2fc_upload_session()
319 tgt->flags); bnx2fc_upload_session()
320 bnx2fc_flush_active_ios(tgt); bnx2fc_upload_session()
323 if (test_bit(BNX2FC_FLAG_DISABLED, &tgt->flags)) { bnx2fc_upload_session()
324 BNX2FC_TGT_DBG(tgt, "send destroy req\n"); bnx2fc_upload_session()
325 clear_bit(BNX2FC_FLAG_UPLD_REQ_COMPL, &tgt->flags); bnx2fc_upload_session()
326 bnx2fc_send_session_destroy_req(hba, tgt); bnx2fc_upload_session()
329 bnx2fc_upld_wait(tgt); bnx2fc_upload_session()
331 if (!(test_bit(BNX2FC_FLAG_DESTROYED, &tgt->flags))) bnx2fc_upload_session()
334 BNX2FC_TGT_DBG(tgt, "destroy wait complete flags = 0x%lx\n", bnx2fc_upload_session()
335 tgt->flags); bnx2fc_upload_session()
337 } else if (test_bit(BNX2FC_FLAG_DISABLE_FAILED, &tgt->flags)) { bnx2fc_upload_session()
346 bnx2fc_free_session_resc(hba, tgt); bnx2fc_upload_session()
347 bnx2fc_free_conn_id(hba, tgt->fcoe_conn_id); bnx2fc_upload_session()
350 static int bnx2fc_init_tgt(struct bnx2fc_rport *tgt, bnx2fc_init_tgt() argument
358 struct b577xx_doorbell_set_prod *sq_db = &tgt->sq_db; bnx2fc_init_tgt()
359 struct b577xx_fcoe_rx_doorbell *rx_db = &tgt->rx_db; bnx2fc_init_tgt()
361 tgt->rport = rport; bnx2fc_init_tgt()
362 tgt->rdata = rdata; bnx2fc_init_tgt()
363 tgt->port = port; bnx2fc_init_tgt()
366 BNX2FC_TGT_DBG(tgt, "exceeded max sessions. logoff this tgt\n"); bnx2fc_init_tgt()
367 tgt->fcoe_conn_id = -1; bnx2fc_init_tgt()
371 tgt->fcoe_conn_id = bnx2fc_alloc_conn_id(hba, tgt); bnx2fc_init_tgt()
372 if (tgt->fcoe_conn_id == -1) bnx2fc_init_tgt()
375 BNX2FC_TGT_DBG(tgt, "init_tgt - conn_id = 0x%x\n", tgt->fcoe_conn_id); bnx2fc_init_tgt()
377 tgt->max_sqes = BNX2FC_SQ_WQES_MAX; bnx2fc_init_tgt()
378 tgt->max_rqes = BNX2FC_RQ_WQES_MAX; bnx2fc_init_tgt()
379 tgt->max_cqes = BNX2FC_CQ_WQES_MAX; bnx2fc_init_tgt()
380 atomic_set(&tgt->free_sqes, BNX2FC_SQ_WQES_MAX); bnx2fc_init_tgt()
383 tgt->sq_curr_toggle_bit = 1; bnx2fc_init_tgt()
384 tgt->cq_curr_toggle_bit = 1; bnx2fc_init_tgt()
385 tgt->sq_prod_idx = 0; bnx2fc_init_tgt()
386 tgt->cq_cons_idx = 0; bnx2fc_init_tgt()
387 tgt->rq_prod_idx = 0x8000; bnx2fc_init_tgt()
388 tgt->rq_cons_idx = 0; bnx2fc_init_tgt()
389 atomic_set(&tgt->num_active_ios, 0); bnx2fc_init_tgt()
390 tgt->retry_delay_timestamp = 0; bnx2fc_init_tgt()
395 tgt->dev_type = TYPE_TAPE; bnx2fc_init_tgt()
396 tgt->io_timeout = 0; /* use default ULP timeout */ bnx2fc_init_tgt()
398 tgt->dev_type = TYPE_DISK; bnx2fc_init_tgt()
399 tgt->io_timeout = BNX2FC_IO_TIMEOUT; bnx2fc_init_tgt()
414 spin_lock_init(&tgt->tgt_lock); bnx2fc_init_tgt()
415 spin_lock_init(&tgt->cq_lock); bnx2fc_init_tgt()
418 INIT_LIST_HEAD(&tgt->active_cmd_queue); bnx2fc_init_tgt()
421 INIT_LIST_HEAD(&tgt->io_retire_queue); bnx2fc_init_tgt()
423 INIT_LIST_HEAD(&tgt->els_queue); bnx2fc_init_tgt()
426 INIT_LIST_HEAD(&tgt->active_tm_queue); bnx2fc_init_tgt()
428 init_waitqueue_head(&tgt->ofld_wait); bnx2fc_init_tgt()
429 init_waitqueue_head(&tgt->upld_wait); bnx2fc_init_tgt()
448 struct bnx2fc_rport *tgt; bnx2fc_rport_event_handler() local
489 tgt = (struct bnx2fc_rport *)&rp[1]; bnx2fc_rport_event_handler()
492 if (test_bit(BNX2FC_FLAG_ENABLED, &tgt->flags)) { bnx2fc_rport_event_handler()
493 BNX2FC_TGT_DBG(tgt, "already offloaded\n"); bnx2fc_rport_event_handler()
502 bnx2fc_offload_session(port, tgt, rdata); bnx2fc_rport_event_handler()
504 BNX2FC_TGT_DBG(tgt, "OFFLOAD num_ofld_sess = %d\n", bnx2fc_rport_event_handler()
507 if (test_bit(BNX2FC_FLAG_ENABLED, &tgt->flags)) { bnx2fc_rport_event_handler()
509 BNX2FC_TGT_DBG(tgt, "sess offloaded\n"); bnx2fc_rport_event_handler()
513 set_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags); bnx2fc_rport_event_handler()
520 BNX2FC_TGT_DBG(tgt, "Port is being logged off as " bnx2fc_rport_event_handler()
543 tgt = (struct bnx2fc_rport *)&rp[1]; bnx2fc_rport_event_handler()
545 if (!(test_bit(BNX2FC_FLAG_ENABLED, &tgt->flags))) { bnx2fc_rport_event_handler()
549 clear_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags); bnx2fc_rport_event_handler()
551 bnx2fc_upload_session(port, tgt); bnx2fc_rport_event_handler()
553 BNX2FC_TGT_DBG(tgt, "UPLOAD num_ofld_sess = %d\n", bnx2fc_rport_event_handler()
563 if (test_bit(BNX2FC_FLAG_EXPL_LOGO, &tgt->flags)) { bnx2fc_rport_event_handler()
564 printk(KERN_ERR PFX "Relogin to the tgt\n"); bnx2fc_rport_event_handler()
589 struct bnx2fc_rport *tgt; bnx2fc_tgt_lookup() local
594 tgt = hba->tgt_ofld_list[i]; bnx2fc_tgt_lookup()
595 if ((tgt) && (tgt->port == port)) { bnx2fc_tgt_lookup()
596 rdata = tgt->rdata; bnx2fc_tgt_lookup()
599 BNX2FC_TGT_DBG(tgt, "rport " bnx2fc_tgt_lookup()
601 return tgt; bnx2fc_tgt_lookup()
603 BNX2FC_TGT_DBG(tgt, "rport 0x%x " bnx2fc_tgt_lookup()
619 * @tgt: pointer to bnx2fc_rport structure
622 struct bnx2fc_rport *tgt) bnx2fc_alloc_conn_id()
651 hba->tgt_ofld_list[conn_id] = tgt; bnx2fc_alloc_conn_id()
652 tgt->fcoe_conn_id = conn_id; bnx2fc_alloc_conn_id()
670 struct bnx2fc_rport *tgt) bnx2fc_alloc_session_resc()
677 tgt->sq_mem_size = tgt->max_sqes * BNX2FC_SQ_WQE_SIZE; bnx2fc_alloc_session_resc()
678 tgt->sq_mem_size = (tgt->sq_mem_size + (CNIC_PAGE_SIZE - 1)) & bnx2fc_alloc_session_resc()
681 tgt->sq = dma_alloc_coherent(&hba->pcidev->dev, tgt->sq_mem_size, bnx2fc_alloc_session_resc()
682 &tgt->sq_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
683 if (!tgt->sq) { bnx2fc_alloc_session_resc()
685 tgt->sq_mem_size); bnx2fc_alloc_session_resc()
688 memset(tgt->sq, 0, tgt->sq_mem_size); bnx2fc_alloc_session_resc()
691 tgt->cq_mem_size = tgt->max_cqes * BNX2FC_CQ_WQE_SIZE; bnx2fc_alloc_session_resc()
692 tgt->cq_mem_size = (tgt->cq_mem_size + (CNIC_PAGE_SIZE - 1)) & bnx2fc_alloc_session_resc()
695 tgt->cq = dma_alloc_coherent(&hba->pcidev->dev, tgt->cq_mem_size, bnx2fc_alloc_session_resc()
696 &tgt->cq_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
697 if (!tgt->cq) { bnx2fc_alloc_session_resc()
699 tgt->cq_mem_size); bnx2fc_alloc_session_resc()
702 memset(tgt->cq, 0, tgt->cq_mem_size); bnx2fc_alloc_session_resc()
705 tgt->rq_mem_size = tgt->max_rqes * BNX2FC_RQ_WQE_SIZE; bnx2fc_alloc_session_resc()
706 tgt->rq_mem_size = (tgt->rq_mem_size + (CNIC_PAGE_SIZE - 1)) & bnx2fc_alloc_session_resc()
709 tgt->rq = dma_alloc_coherent(&hba->pcidev->dev, tgt->rq_mem_size, bnx2fc_alloc_session_resc()
710 &tgt->rq_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
711 if (!tgt->rq) { bnx2fc_alloc_session_resc()
713 tgt->rq_mem_size); bnx2fc_alloc_session_resc()
716 memset(tgt->rq, 0, tgt->rq_mem_size); bnx2fc_alloc_session_resc()
718 tgt->rq_pbl_size = (tgt->rq_mem_size / CNIC_PAGE_SIZE) * sizeof(void *); bnx2fc_alloc_session_resc()
719 tgt->rq_pbl_size = (tgt->rq_pbl_size + (CNIC_PAGE_SIZE - 1)) & bnx2fc_alloc_session_resc()
722 tgt->rq_pbl = dma_alloc_coherent(&hba->pcidev->dev, tgt->rq_pbl_size, bnx2fc_alloc_session_resc()
723 &tgt->rq_pbl_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
724 if (!tgt->rq_pbl) { bnx2fc_alloc_session_resc()
726 tgt->rq_pbl_size); bnx2fc_alloc_session_resc()
730 memset(tgt->rq_pbl, 0, tgt->rq_pbl_size); bnx2fc_alloc_session_resc()
731 num_pages = tgt->rq_mem_size / CNIC_PAGE_SIZE; bnx2fc_alloc_session_resc()
732 page = tgt->rq_dma; bnx2fc_alloc_session_resc()
733 pbl = (u32 *)tgt->rq_pbl; bnx2fc_alloc_session_resc()
744 tgt->xferq_mem_size = tgt->max_sqes * BNX2FC_XFERQ_WQE_SIZE; bnx2fc_alloc_session_resc()
745 tgt->xferq_mem_size = (tgt->xferq_mem_size + (CNIC_PAGE_SIZE - 1)) & bnx2fc_alloc_session_resc()
748 tgt->xferq = dma_alloc_coherent(&hba->pcidev->dev, tgt->xferq_mem_size, bnx2fc_alloc_session_resc()
749 &tgt->xferq_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
750 if (!tgt->xferq) { bnx2fc_alloc_session_resc()
752 tgt->xferq_mem_size); bnx2fc_alloc_session_resc()
755 memset(tgt->xferq, 0, tgt->xferq_mem_size); bnx2fc_alloc_session_resc()
758 tgt->confq_mem_size = tgt->max_sqes * BNX2FC_CONFQ_WQE_SIZE; bnx2fc_alloc_session_resc()
759 tgt->confq_mem_size = (tgt->confq_mem_size + (CNIC_PAGE_SIZE - 1)) & bnx2fc_alloc_session_resc()
762 tgt->confq = dma_alloc_coherent(&hba->pcidev->dev, tgt->confq_mem_size, bnx2fc_alloc_session_resc()
763 &tgt->confq_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
764 if (!tgt->confq) { bnx2fc_alloc_session_resc()
766 tgt->confq_mem_size); bnx2fc_alloc_session_resc()
769 memset(tgt->confq, 0, tgt->confq_mem_size); bnx2fc_alloc_session_resc()
771 tgt->confq_pbl_size = bnx2fc_alloc_session_resc()
772 (tgt->confq_mem_size / CNIC_PAGE_SIZE) * sizeof(void *); bnx2fc_alloc_session_resc()
773 tgt->confq_pbl_size = bnx2fc_alloc_session_resc()
774 (tgt->confq_pbl_size + (CNIC_PAGE_SIZE - 1)) & CNIC_PAGE_MASK; bnx2fc_alloc_session_resc()
776 tgt->confq_pbl = dma_alloc_coherent(&hba->pcidev->dev, bnx2fc_alloc_session_resc()
777 tgt->confq_pbl_size, bnx2fc_alloc_session_resc()
778 &tgt->confq_pbl_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
779 if (!tgt->confq_pbl) { bnx2fc_alloc_session_resc()
781 tgt->confq_pbl_size); bnx2fc_alloc_session_resc()
785 memset(tgt->confq_pbl, 0, tgt->confq_pbl_size); bnx2fc_alloc_session_resc()
786 num_pages = tgt->confq_mem_size / CNIC_PAGE_SIZE; bnx2fc_alloc_session_resc()
787 page = tgt->confq_dma; bnx2fc_alloc_session_resc()
788 pbl = (u32 *)tgt->confq_pbl; bnx2fc_alloc_session_resc()
799 tgt->conn_db_mem_size = sizeof(struct fcoe_conn_db); bnx2fc_alloc_session_resc()
801 tgt->conn_db = dma_alloc_coherent(&hba->pcidev->dev, bnx2fc_alloc_session_resc()
802 tgt->conn_db_mem_size, bnx2fc_alloc_session_resc()
803 &tgt->conn_db_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
804 if (!tgt->conn_db) { bnx2fc_alloc_session_resc()
806 tgt->conn_db_mem_size); bnx2fc_alloc_session_resc()
809 memset(tgt->conn_db, 0, tgt->conn_db_mem_size); bnx2fc_alloc_session_resc()
813 tgt->lcq_mem_size = (tgt->max_sqes + 8) * BNX2FC_SQ_WQE_SIZE; bnx2fc_alloc_session_resc()
814 tgt->lcq_mem_size = (tgt->lcq_mem_size + (CNIC_PAGE_SIZE - 1)) & bnx2fc_alloc_session_resc()
817 tgt->lcq = dma_alloc_coherent(&hba->pcidev->dev, tgt->lcq_mem_size, bnx2fc_alloc_session_resc()
818 &tgt->lcq_dma, GFP_KERNEL); bnx2fc_alloc_session_resc()
820 if (!tgt->lcq) { bnx2fc_alloc_session_resc()
822 tgt->lcq_mem_size); bnx2fc_alloc_session_resc()
825 memset(tgt->lcq, 0, tgt->lcq_mem_size); bnx2fc_alloc_session_resc()
827 tgt->conn_db->rq_prod = 0x8000; bnx2fc_alloc_session_resc()
839 * @tgt: bnx2fc_rport structure pointer
844 struct bnx2fc_rport *tgt) bnx2fc_free_session_resc()
848 BNX2FC_TGT_DBG(tgt, "Freeing up session resources\n"); bnx2fc_free_session_resc()
850 spin_lock_bh(&tgt->cq_lock); bnx2fc_free_session_resc()
851 ctx_base_ptr = tgt->ctx_base; bnx2fc_free_session_resc()
852 tgt->ctx_base = NULL; bnx2fc_free_session_resc()
855 if (tgt->lcq) { bnx2fc_free_session_resc()
856 dma_free_coherent(&hba->pcidev->dev, tgt->lcq_mem_size, bnx2fc_free_session_resc()
857 tgt->lcq, tgt->lcq_dma); bnx2fc_free_session_resc()
858 tgt->lcq = NULL; bnx2fc_free_session_resc()
861 if (tgt->conn_db) { bnx2fc_free_session_resc()
862 dma_free_coherent(&hba->pcidev->dev, tgt->conn_db_mem_size, bnx2fc_free_session_resc()
863 tgt->conn_db, tgt->conn_db_dma); bnx2fc_free_session_resc()
864 tgt->conn_db = NULL; bnx2fc_free_session_resc()
867 if (tgt->confq_pbl) { bnx2fc_free_session_resc()
868 dma_free_coherent(&hba->pcidev->dev, tgt->confq_pbl_size, bnx2fc_free_session_resc()
869 tgt->confq_pbl, tgt->confq_pbl_dma); bnx2fc_free_session_resc()
870 tgt->confq_pbl = NULL; bnx2fc_free_session_resc()
872 if (tgt->confq) { bnx2fc_free_session_resc()
873 dma_free_coherent(&hba->pcidev->dev, tgt->confq_mem_size, bnx2fc_free_session_resc()
874 tgt->confq, tgt->confq_dma); bnx2fc_free_session_resc()
875 tgt->confq = NULL; bnx2fc_free_session_resc()
878 if (tgt->xferq) { bnx2fc_free_session_resc()
879 dma_free_coherent(&hba->pcidev->dev, tgt->xferq_mem_size, bnx2fc_free_session_resc()
880 tgt->xferq, tgt->xferq_dma); bnx2fc_free_session_resc()
881 tgt->xferq = NULL; bnx2fc_free_session_resc()
884 if (tgt->rq_pbl) { bnx2fc_free_session_resc()
885 dma_free_coherent(&hba->pcidev->dev, tgt->rq_pbl_size, bnx2fc_free_session_resc()
886 tgt->rq_pbl, tgt->rq_pbl_dma); bnx2fc_free_session_resc()
887 tgt->rq_pbl = NULL; bnx2fc_free_session_resc()
889 if (tgt->rq) { bnx2fc_free_session_resc()
890 dma_free_coherent(&hba->pcidev->dev, tgt->rq_mem_size, bnx2fc_free_session_resc()
891 tgt->rq, tgt->rq_dma); bnx2fc_free_session_resc()
892 tgt->rq = NULL; bnx2fc_free_session_resc()
895 if (tgt->cq) { bnx2fc_free_session_resc()
896 dma_free_coherent(&hba->pcidev->dev, tgt->cq_mem_size, bnx2fc_free_session_resc()
897 tgt->cq, tgt->cq_dma); bnx2fc_free_session_resc()
898 tgt->cq = NULL; bnx2fc_free_session_resc()
901 if (tgt->sq) { bnx2fc_free_session_resc()
902 dma_free_coherent(&hba->pcidev->dev, tgt->sq_mem_size, bnx2fc_free_session_resc()
903 tgt->sq, tgt->sq_dma); bnx2fc_free_session_resc()
904 tgt->sq = NULL; bnx2fc_free_session_resc()
906 spin_unlock_bh(&tgt->cq_lock); bnx2fc_free_session_resc()
79 bnx2fc_offload_session(struct fcoe_port *port, struct bnx2fc_rport *tgt, struct fc_rport_priv *rdata) bnx2fc_offload_session() argument
291 bnx2fc_upload_session(struct fcoe_port *port, struct bnx2fc_rport *tgt) bnx2fc_upload_session() argument
621 bnx2fc_alloc_conn_id(struct bnx2fc_hba *hba, struct bnx2fc_rport *tgt) bnx2fc_alloc_conn_id() argument
669 bnx2fc_alloc_session_resc(struct bnx2fc_hba *hba, struct bnx2fc_rport *tgt) bnx2fc_alloc_session_resc() argument
843 bnx2fc_free_session_resc(struct bnx2fc_hba *hba, struct bnx2fc_rport *tgt) bnx2fc_free_session_resc() argument
H A Dbnx2fc_debug.c40 void BNX2FC_TGT_DBG(const struct bnx2fc_rport *tgt, const char *fmt, ...) BNX2FC_TGT_DBG() argument
53 if (tgt && tgt->port && tgt->port->lport && tgt->port->lport->host && BNX2FC_TGT_DBG()
54 tgt->rport) BNX2FC_TGT_DBG()
55 shost_printk(KERN_INFO, tgt->port->lport->host, BNX2FC_TGT_DBG()
57 tgt->rport->port_id, &vaf); BNX2FC_TGT_DBG()
H A Dbnx2fc_hwi.c168 * @tgt: bnx2fc_rport structure pointer
171 struct bnx2fc_rport *tgt) bnx2fc_send_session_ofld_req()
182 struct fc_rport_priv *rdata = tgt->rdata; bnx2fc_send_session_ofld_req()
183 struct fc_rport *rport = tgt->rport; bnx2fc_send_session_ofld_req()
197 conn_id = (u16)tgt->fcoe_conn_id; bnx2fc_send_session_ofld_req()
201 ofld_req1.sq_addr_lo = (u32) tgt->sq_dma; bnx2fc_send_session_ofld_req()
202 ofld_req1.sq_addr_hi = (u32)((u64) tgt->sq_dma >> 32); bnx2fc_send_session_ofld_req()
204 ofld_req1.rq_pbl_addr_lo = (u32) tgt->rq_pbl_dma; bnx2fc_send_session_ofld_req()
205 ofld_req1.rq_pbl_addr_hi = (u32)((u64) tgt->rq_pbl_dma >> 32); bnx2fc_send_session_ofld_req()
207 ofld_req1.rq_first_pbe_addr_lo = (u32) tgt->rq_dma; bnx2fc_send_session_ofld_req()
209 (u32)((u64) tgt->rq_dma >> 32); bnx2fc_send_session_ofld_req()
222 ofld_req2.cq_addr_lo = (u32) tgt->cq_dma; bnx2fc_send_session_ofld_req()
223 ofld_req2.cq_addr_hi = (u32)((u64)tgt->cq_dma >> 32); bnx2fc_send_session_ofld_req()
225 ofld_req2.xferq_addr_lo = (u32) tgt->xferq_dma; bnx2fc_send_session_ofld_req()
226 ofld_req2.xferq_addr_hi = (u32)((u64)tgt->xferq_dma >> 32); bnx2fc_send_session_ofld_req()
228 ofld_req2.conn_db_addr_lo = (u32)tgt->conn_db_dma; bnx2fc_send_session_ofld_req()
229 ofld_req2.conn_db_addr_hi = (u32)((u64)tgt->conn_db_dma >> 32); bnx2fc_send_session_ofld_req()
253 tgt->sid = port_id; bnx2fc_send_session_ofld_req()
272 ofld_req3.confq_first_pbe_addr_lo = tgt->confq_dma; bnx2fc_send_session_ofld_req()
273 ofld_req3.confq_first_pbe_addr_hi = (u32)((u64) tgt->confq_dma >> 32); bnx2fc_send_session_ofld_req()
292 if (tgt->dev_type == TYPE_TAPE) { bnx2fc_send_session_ofld_req()
331 ofld_req4.lcq_addr_lo = (u32) tgt->lcq_dma; bnx2fc_send_session_ofld_req()
332 ofld_req4.lcq_addr_hi = (u32)((u64) tgt->lcq_dma >> 32); bnx2fc_send_session_ofld_req()
334 ofld_req4.confq_pbl_base_addr_lo = (u32) tgt->confq_pbl_dma; bnx2fc_send_session_ofld_req()
336 (u32)((u64) tgt->confq_pbl_dma >> 32); bnx2fc_send_session_ofld_req()
353 * @tgt: bnx2fc_rport structure pointer
356 struct bnx2fc_rport *tgt) bnx2fc_send_session_enable_req()
364 struct fc_rport *rport = tgt->rport; bnx2fc_send_session_enable_req()
382 memcpy(tgt->src_addr, port->data_src_addr, ETH_ALEN); bnx2fc_send_session_enable_req()
392 if (port_id != tgt->sid) { bnx2fc_send_session_enable_req()
394 "sid = 0x%x\n", port_id, tgt->sid); bnx2fc_send_session_enable_req()
395 port_id = tgt->sid; bnx2fc_send_session_enable_req()
409 enbl_req.context_id = tgt->context_id; bnx2fc_send_session_enable_req()
410 enbl_req.conn_id = tgt->fcoe_conn_id; bnx2fc_send_session_enable_req()
423 * @tgt: bnx2fc_rport structure pointer
426 struct bnx2fc_rport *tgt) bnx2fc_send_session_disable_req()
433 struct fc_rport *rport = tgt->rport; bnx2fc_send_session_disable_req()
444 disable_req.src_mac_addr_lo[0] = tgt->src_addr[5]; bnx2fc_send_session_disable_req()
445 disable_req.src_mac_addr_lo[1] = tgt->src_addr[4]; bnx2fc_send_session_disable_req()
446 disable_req.src_mac_addr_mid[0] = tgt->src_addr[3]; bnx2fc_send_session_disable_req()
447 disable_req.src_mac_addr_mid[1] = tgt->src_addr[2]; bnx2fc_send_session_disable_req()
448 disable_req.src_mac_addr_hi[0] = tgt->src_addr[1]; bnx2fc_send_session_disable_req()
449 disable_req.src_mac_addr_hi[1] = tgt->src_addr[0]; bnx2fc_send_session_disable_req()
458 port_id = tgt->sid; bnx2fc_send_session_disable_req()
468 disable_req.context_id = tgt->context_id; bnx2fc_send_session_disable_req()
469 disable_req.conn_id = tgt->fcoe_conn_id; bnx2fc_send_session_disable_req()
488 * @tgt: bnx2fc_rport structure pointer
491 struct bnx2fc_rport *tgt) bnx2fc_send_session_destroy_req()
503 destroy_req.context_id = tgt->context_id; bnx2fc_send_session_destroy_req()
504 destroy_req.conn_id = tgt->fcoe_conn_id; bnx2fc_send_session_destroy_req()
547 void bnx2fc_process_l2_frame_compl(struct bnx2fc_rport *tgt, bnx2fc_process_l2_frame_compl() argument
551 struct fcoe_port *port = tgt->port; bnx2fc_process_l2_frame_compl()
565 BNX2FC_TGT_DBG(tgt, "Unable to allocate unsol_work\n"); bnx2fc_process_l2_frame_compl()
569 BNX2FC_TGT_DBG(tgt, "l2_frame_compl l2_oxid = 0x%x, frame_len = %d\n", bnx2fc_process_l2_frame_compl()
625 static void bnx2fc_process_unsol_compl(struct bnx2fc_rport *tgt, u16 wqe) bnx2fc_process_unsol_compl() argument
636 struct bnx2fc_interface *interface = tgt->port->priv; bnx2fc_process_unsol_compl()
644 BNX2FC_TGT_DBG(tgt, "Entered UNSOL COMPLETION wqe = 0x%x\n", wqe); bnx2fc_process_unsol_compl()
652 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
653 rq_data = (unsigned char *)bnx2fc_get_next_rqe(tgt, num_rq); bnx2fc_process_unsol_compl()
654 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
663 BNX2FC_TGT_DBG(tgt, "Memory alloc failure\n"); bnx2fc_process_unsol_compl()
668 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
670 bnx2fc_get_next_rqe(tgt, 1); bnx2fc_process_unsol_compl()
671 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
677 bnx2fc_process_l2_frame_compl(tgt, buf, frame_len, bnx2fc_process_unsol_compl()
682 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
683 bnx2fc_return_rqe(tgt, num_rq); bnx2fc_process_unsol_compl()
684 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
692 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
695 bnx2fc_get_next_rqe(tgt, 1); bnx2fc_process_unsol_compl()
697 BNX2FC_TGT_DBG(tgt, "Unsol Error Frame OX_ID = 0x%x\n", xid); bnx2fc_process_unsol_compl()
698 BNX2FC_TGT_DBG(tgt, "err_warn_bitmap = %08x:%08x\n", bnx2fc_process_unsol_compl()
701 BNX2FC_TGT_DBG(tgt, "buf_offsets - tx = 0x%x, rx = 0x%x\n", bnx2fc_process_unsol_compl()
706 BNX2FC_TGT_DBG(tgt, "xid(0x%x) out of FW range\n", bnx2fc_process_unsol_compl()
755 BNX2FC_TGT_DBG(tgt, "err = 0x%x\n", err_warn); bnx2fc_process_unsol_compl()
756 if (tgt->dev_type != TYPE_TAPE) bnx2fc_process_unsol_compl()
765 BNX2FC_TGT_DBG(tgt, "REC TOV popped for xid - 0x%x\n", bnx2fc_process_unsol_compl()
771 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
773 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
802 bnx2fc_return_rqe(tgt, 1); bnx2fc_process_unsol_compl()
803 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
811 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
814 bnx2fc_get_next_rqe(tgt, 1); bnx2fc_process_unsol_compl()
816 BNX2FC_TGT_DBG(tgt, "Unsol Warning Frame OX_ID = 0x%x\n", xid); bnx2fc_process_unsol_compl()
817 BNX2FC_TGT_DBG(tgt, "err_warn_bitmap = %08x:%08x", bnx2fc_process_unsol_compl()
820 BNX2FC_TGT_DBG(tgt, "buf_offsets - tx = 0x%x, rx = 0x%x", bnx2fc_process_unsol_compl()
824 BNX2FC_TGT_DBG(tgt, "xid(0x%x) out of FW range\n", xid); bnx2fc_process_unsol_compl()
837 BNX2FC_TGT_DBG(tgt, "warn = 0x%x\n", err_warn); bnx2fc_process_unsol_compl()
860 BNX2FC_TGT_DBG(tgt, "Unsolicited warning\n"); bnx2fc_process_unsol_compl()
862 bnx2fc_return_rqe(tgt, 1); bnx2fc_process_unsol_compl()
863 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_unsol_compl()
872 void bnx2fc_process_cq_compl(struct bnx2fc_rport *tgt, u16 wqe) bnx2fc_process_cq_compl() argument
876 struct fcoe_port *port = tgt->port; bnx2fc_process_cq_compl()
886 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_cq_compl()
890 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_cq_compl()
906 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_cq_compl()
922 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_cq_compl()
980 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_cq_compl()
983 void bnx2fc_arm_cq(struct bnx2fc_rport *tgt) bnx2fc_arm_cq() argument
985 struct b577xx_fcoe_rx_doorbell *rx_db = &tgt->rx_db; bnx2fc_arm_cq()
989 rx_db->doorbell_cq_cons = tgt->cq_cons_idx | (tgt->cq_curr_toggle_bit << bnx2fc_arm_cq()
992 writel(cpu_to_le32(msg), tgt->ctx_base); bnx2fc_arm_cq()
997 struct bnx2fc_work *bnx2fc_alloc_work(struct bnx2fc_rport *tgt, u16 wqe) bnx2fc_alloc_work() argument
1005 work->tgt = tgt; bnx2fc_alloc_work()
1010 int bnx2fc_process_new_cqes(struct bnx2fc_rport *tgt) bnx2fc_process_new_cqes() argument
1024 spin_lock_bh(&tgt->cq_lock); bnx2fc_process_new_cqes()
1026 if (!tgt->cq) { bnx2fc_process_new_cqes()
1028 spin_unlock_bh(&tgt->cq_lock); bnx2fc_process_new_cqes()
1031 cq = tgt->cq; bnx2fc_process_new_cqes()
1032 cq_cons = tgt->cq_cons_idx; bnx2fc_process_new_cqes()
1036 (tgt->cq_curr_toggle_bit << bnx2fc_process_new_cqes()
1042 bnx2fc_process_unsol_compl(tgt, wqe); bnx2fc_process_new_cqes()
1054 work = bnx2fc_alloc_work(tgt, wqe); bnx2fc_process_new_cqes()
1065 bnx2fc_process_cq_compl(tgt, wqe); bnx2fc_process_new_cqes()
1069 tgt->cq_cons_idx++; bnx2fc_process_new_cqes()
1072 if (tgt->cq_cons_idx == BNX2FC_CQ_WQES_MAX) { bnx2fc_process_new_cqes()
1073 tgt->cq_cons_idx = 0; bnx2fc_process_new_cqes()
1075 tgt->cq_curr_toggle_bit = bnx2fc_process_new_cqes()
1076 1 - tgt->cq_curr_toggle_bit; bnx2fc_process_new_cqes()
1081 if (tgt->ctx_base) bnx2fc_process_new_cqes()
1082 bnx2fc_arm_cq(tgt); bnx2fc_process_new_cqes()
1083 atomic_add(num_free_sqes, &tgt->free_sqes); bnx2fc_process_new_cqes()
1085 spin_unlock_bh(&tgt->cq_lock); bnx2fc_process_new_cqes()
1101 struct bnx2fc_rport *tgt = hba->tgt_ofld_list[conn_id]; bnx2fc_fastpath_notification() local
1103 if (!tgt) { bnx2fc_fastpath_notification()
1108 bnx2fc_process_new_cqes(tgt); bnx2fc_fastpath_notification()
1123 struct bnx2fc_rport *tgt; bnx2fc_process_ofld_cmpl() local
1131 tgt = hba->tgt_ofld_list[conn_id]; bnx2fc_process_ofld_cmpl()
1132 if (!tgt) { bnx2fc_process_ofld_cmpl()
1136 BNX2FC_TGT_DBG(tgt, "Entered ofld compl - context_id = 0x%x\n", bnx2fc_process_ofld_cmpl()
1138 port = tgt->port; bnx2fc_process_ofld_cmpl()
1139 interface = tgt->port->priv; bnx2fc_process_ofld_cmpl()
1148 tgt->context_id = context_id; bnx2fc_process_ofld_cmpl()
1154 set_bit(BNX2FC_FLAG_CTX_ALLOC_FAILURE, &tgt->flags); bnx2fc_process_ofld_cmpl()
1158 set_bit(BNX2FC_FLAG_OFFLOADED, &tgt->flags); bnx2fc_process_ofld_cmpl()
1161 set_bit(BNX2FC_FLAG_OFLD_REQ_CMPL, &tgt->flags); bnx2fc_process_ofld_cmpl()
1162 wake_up_interruptible(&tgt->ofld_wait); bnx2fc_process_ofld_cmpl()
1177 struct bnx2fc_rport *tgt; bnx2fc_process_enable_conn_cmpl() local
1184 tgt = hba->tgt_ofld_list[conn_id]; bnx2fc_process_enable_conn_cmpl()
1185 if (!tgt) { bnx2fc_process_enable_conn_cmpl()
1190 BNX2FC_TGT_DBG(tgt, "Enable compl - context_id = 0x%x\n", bnx2fc_process_enable_conn_cmpl()
1197 if (tgt->context_id != context_id) { bnx2fc_process_enable_conn_cmpl()
1201 interface = tgt->port->priv; bnx2fc_process_enable_conn_cmpl()
1208 set_bit(BNX2FC_FLAG_ENABLED, &tgt->flags); bnx2fc_process_enable_conn_cmpl()
1211 set_bit(BNX2FC_FLAG_OFLD_REQ_CMPL, &tgt->flags); bnx2fc_process_enable_conn_cmpl()
1212 wake_up_interruptible(&tgt->ofld_wait); bnx2fc_process_enable_conn_cmpl()
1219 struct bnx2fc_rport *tgt; bnx2fc_process_conn_disable_cmpl() local
1223 tgt = hba->tgt_ofld_list[conn_id]; bnx2fc_process_conn_disable_cmpl()
1224 if (!tgt) { bnx2fc_process_conn_disable_cmpl()
1229 BNX2FC_TGT_DBG(tgt, PFX "disable_cmpl: conn_id %d\n", conn_id); bnx2fc_process_conn_disable_cmpl()
1234 set_bit(BNX2FC_FLAG_DISABLE_FAILED, &tgt->flags); bnx2fc_process_conn_disable_cmpl()
1235 set_bit(BNX2FC_FLAG_UPLD_REQ_COMPL, &tgt->flags); bnx2fc_process_conn_disable_cmpl()
1236 wake_up_interruptible(&tgt->upld_wait); bnx2fc_process_conn_disable_cmpl()
1239 BNX2FC_TGT_DBG(tgt, "disable successful\n"); bnx2fc_process_conn_disable_cmpl()
1240 clear_bit(BNX2FC_FLAG_OFFLOADED, &tgt->flags); bnx2fc_process_conn_disable_cmpl()
1241 clear_bit(BNX2FC_FLAG_ENABLED, &tgt->flags); bnx2fc_process_conn_disable_cmpl()
1242 set_bit(BNX2FC_FLAG_DISABLED, &tgt->flags); bnx2fc_process_conn_disable_cmpl()
1243 set_bit(BNX2FC_FLAG_UPLD_REQ_COMPL, &tgt->flags); bnx2fc_process_conn_disable_cmpl()
1244 wake_up_interruptible(&tgt->upld_wait); bnx2fc_process_conn_disable_cmpl()
1251 struct bnx2fc_rport *tgt; bnx2fc_process_conn_destroy_cmpl() local
1255 tgt = hba->tgt_ofld_list[conn_id]; bnx2fc_process_conn_destroy_cmpl()
1256 if (!tgt) { bnx2fc_process_conn_destroy_cmpl()
1261 BNX2FC_TGT_DBG(tgt, "destroy_cmpl: conn_id %d\n", conn_id); bnx2fc_process_conn_destroy_cmpl()
1269 BNX2FC_TGT_DBG(tgt, "upload successful\n"); bnx2fc_process_conn_destroy_cmpl()
1270 clear_bit(BNX2FC_FLAG_DISABLED, &tgt->flags); bnx2fc_process_conn_destroy_cmpl()
1271 set_bit(BNX2FC_FLAG_DESTROYED, &tgt->flags); bnx2fc_process_conn_destroy_cmpl()
1272 set_bit(BNX2FC_FLAG_UPLD_REQ_COMPL, &tgt->flags); bnx2fc_process_conn_destroy_cmpl()
1273 wake_up_interruptible(&tgt->upld_wait); bnx2fc_process_conn_destroy_cmpl()
1383 void bnx2fc_add_2_sq(struct bnx2fc_rport *tgt, u16 xid) bnx2fc_add_2_sq() argument
1387 sqe = &tgt->sq[tgt->sq_prod_idx]; bnx2fc_add_2_sq()
1391 sqe->wqe |= tgt->sq_curr_toggle_bit << FCOE_SQE_TOGGLE_BIT_SHIFT; bnx2fc_add_2_sq()
1394 if (++tgt->sq_prod_idx == BNX2FC_SQ_WQES_MAX) { bnx2fc_add_2_sq()
1395 tgt->sq_prod_idx = 0; bnx2fc_add_2_sq()
1396 tgt->sq_curr_toggle_bit = 1 - tgt->sq_curr_toggle_bit; bnx2fc_add_2_sq()
1400 void bnx2fc_ring_doorbell(struct bnx2fc_rport *tgt) bnx2fc_ring_doorbell() argument
1402 struct b577xx_doorbell_set_prod *sq_db = &tgt->sq_db; bnx2fc_ring_doorbell()
1406 sq_db->prod = tgt->sq_prod_idx | bnx2fc_ring_doorbell()
1407 (tgt->sq_curr_toggle_bit << 15); bnx2fc_ring_doorbell()
1409 writel(cpu_to_le32(msg), tgt->ctx_base); bnx2fc_ring_doorbell()
1414 int bnx2fc_map_doorbell(struct bnx2fc_rport *tgt) bnx2fc_map_doorbell() argument
1416 u32 context_id = tgt->context_id; bnx2fc_map_doorbell()
1417 struct fcoe_port *port = tgt->port; bnx2fc_map_doorbell()
1426 tgt->ctx_base = ioremap_nocache(reg_base + reg_off, 4); bnx2fc_map_doorbell()
1427 if (!tgt->ctx_base) bnx2fc_map_doorbell()
1432 char *bnx2fc_get_next_rqe(struct bnx2fc_rport *tgt, u8 num_items) bnx2fc_get_next_rqe() argument
1434 char *buf = (char *)tgt->rq + (tgt->rq_cons_idx * BNX2FC_RQ_BUF_SZ); bnx2fc_get_next_rqe()
1436 if (tgt->rq_cons_idx + num_items > BNX2FC_RQ_WQES_MAX) bnx2fc_get_next_rqe()
1439 tgt->rq_cons_idx += num_items; bnx2fc_get_next_rqe()
1441 if (tgt->rq_cons_idx >= BNX2FC_RQ_WQES_MAX) bnx2fc_get_next_rqe()
1442 tgt->rq_cons_idx -= BNX2FC_RQ_WQES_MAX; bnx2fc_get_next_rqe()
1447 void bnx2fc_return_rqe(struct bnx2fc_rport *tgt, u8 num_items) bnx2fc_return_rqe() argument
1450 u32 next_prod_idx = tgt->rq_prod_idx + num_items; bnx2fc_return_rqe()
1455 tgt->rq_prod_idx = next_prod_idx; bnx2fc_return_rqe()
1456 tgt->conn_db->rq_prod = tgt->rq_prod_idx; bnx2fc_return_rqe()
1465 struct bnx2fc_rport *tgt = seq_clnp_req->tgt; bnx2fc_init_seq_cleanup_task() local
1466 struct bnx2fc_interface *interface = tgt->port->priv; bnx2fc_init_seq_cleanup_task()
1474 u32 context_id = tgt->context_id; bnx2fc_init_seq_cleanup_task()
1554 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_init_cleanup_task() local
1555 u32 context_id = tgt->context_id; bnx2fc_init_cleanup_task()
1565 if (tgt->dev_type == TYPE_TAPE) bnx2fc_init_cleanup_task()
1591 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_init_mp_task() local
1630 if (tgt->dev_type == TYPE_TAPE) bnx2fc_init_mp_task()
1652 context_id = tgt->context_id; bnx2fc_init_mp_task()
1689 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_init_task() local
1692 int dev_type = tgt->dev_type; bnx2fc_init_task()
1777 context_id = tgt->context_id; bnx2fc_init_task()
170 bnx2fc_send_session_ofld_req(struct fcoe_port *port, struct bnx2fc_rport *tgt) bnx2fc_send_session_ofld_req() argument
355 bnx2fc_send_session_enable_req(struct fcoe_port *port, struct bnx2fc_rport *tgt) bnx2fc_send_session_enable_req() argument
425 bnx2fc_send_session_disable_req(struct fcoe_port *port, struct bnx2fc_rport *tgt) bnx2fc_send_session_disable_req() argument
490 bnx2fc_send_session_destroy_req(struct bnx2fc_hba *hba, struct bnx2fc_rport *tgt) bnx2fc_send_session_destroy_req() argument
H A Dbnx2fc_els.c22 static int bnx2fc_initiate_els(struct bnx2fc_rport *tgt, unsigned int op,
63 struct bnx2fc_rport *tgt = aborted_io_req->tgt; bnx2fc_send_rrq() local
64 struct fc_lport *lport = tgt->rdata->local_port; bnx2fc_send_rrq()
66 u32 sid = tgt->sid; bnx2fc_send_rrq()
90 rc = bnx2fc_initiate_els(tgt, ELS_RRQ, &rrq, sizeof(rrq), bnx2fc_send_rrq()
107 spin_lock_bh(&tgt->tgt_lock); bnx2fc_send_rrq()
109 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_send_rrq()
117 struct bnx2fc_rport *tgt; bnx2fc_l2_els_compl() local
145 tgt = els_req->tgt; bnx2fc_l2_els_compl()
166 bnx2fc_process_l2_frame_compl(tgt, buf, frame_len, l2_oxid); bnx2fc_l2_els_compl()
174 int bnx2fc_send_adisc(struct bnx2fc_rport *tgt, struct fc_frame *fp) bnx2fc_send_adisc() argument
179 struct fc_lport *lport = tgt->rdata->local_port; bnx2fc_send_adisc()
195 rc = bnx2fc_initiate_els(tgt, ELS_ADISC, adisc, sizeof(*adisc), bnx2fc_send_adisc()
202 int bnx2fc_send_logo(struct bnx2fc_rport *tgt, struct fc_frame *fp) bnx2fc_send_logo() argument
207 struct fc_lport *lport = tgt->rdata->local_port; bnx2fc_send_logo()
223 rc = bnx2fc_initiate_els(tgt, ELS_LOGO, logo, sizeof(*logo), bnx2fc_send_logo()
230 int bnx2fc_send_rls(struct bnx2fc_rport *tgt, struct fc_frame *fp) bnx2fc_send_rls() argument
235 struct fc_lport *lport = tgt->rdata->local_port; bnx2fc_send_rls()
250 rc = bnx2fc_initiate_els(tgt, ELS_RLS, rls, sizeof(*rls), bnx2fc_send_rls()
291 struct bnx2fc_rport *tgt = orig_io_req->tgt; bnx2fc_srr_compl() local
292 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_srr_compl()
296 spin_lock_bh(&tgt->tgt_lock); bnx2fc_srr_compl()
375 struct bnx2fc_rport *tgt; bnx2fc_rec_compl() local
394 tgt = orig_io_req->tgt; bnx2fc_rec_compl()
411 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_rec_compl()
413 spin_lock_bh(&tgt->tgt_lock); bnx2fc_rec_compl()
473 new_io_req = bnx2fc_cmd_alloc(tgt); bnx2fc_rec_compl()
483 rc = bnx2fc_post_io_req(tgt, new_io_req); bnx2fc_rec_compl()
555 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_rec_compl()
557 spin_lock_bh(&tgt->tgt_lock); bnx2fc_rec_compl()
577 struct bnx2fc_rport *tgt = orig_io_req->tgt; bnx2fc_send_rec() local
578 struct fc_lport *lport = tgt->rdata->local_port; bnx2fc_send_rec()
580 u32 sid = tgt->sid; bnx2fc_send_rec()
602 rc = bnx2fc_initiate_els(tgt, ELS_REC, &rec, sizeof(rec), bnx2fc_send_rec()
608 spin_lock_bh(&tgt->tgt_lock); bnx2fc_send_rec()
610 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_send_rec()
619 struct bnx2fc_rport *tgt = orig_io_req->tgt; bnx2fc_send_srr() local
620 struct fc_lport *lport = tgt->rdata->local_port; bnx2fc_send_srr()
646 rc = bnx2fc_initiate_els(tgt, ELS_SRR, &srr, sizeof(srr), bnx2fc_send_srr()
652 spin_lock_bh(&tgt->tgt_lock); bnx2fc_send_srr()
654 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_send_srr()
662 static int bnx2fc_initiate_els(struct bnx2fc_rport *tgt, unsigned int op, bnx2fc_initiate_els() argument
667 struct fcoe_port *port = tgt->port; bnx2fc_initiate_els()
669 struct fc_rport *rport = tgt->rport; bnx2fc_initiate_els()
692 if (!(test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)) || bnx2fc_initiate_els()
693 (test_bit(BNX2FC_FLAG_EXPL_LOGO, &tgt->flags))) { bnx2fc_initiate_els()
694 printk(KERN_ERR PFX "els 0x%x: tgt not ready\n", op); bnx2fc_initiate_els()
698 els_req = bnx2fc_elstm_alloc(tgt, BNX2FC_ELS); bnx2fc_initiate_els()
706 els_req->tgt = tgt; bnx2fc_initiate_els()
715 spin_lock_bh(&tgt->tgt_lock); bnx2fc_initiate_els()
717 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_els()
736 spin_lock_bh(&tgt->tgt_lock); bnx2fc_initiate_els()
738 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_els()
748 did = tgt->rport->port_id; bnx2fc_initiate_els()
749 sid = tgt->sid; bnx2fc_initiate_els()
771 spin_lock_bh(&tgt->tgt_lock); bnx2fc_initiate_els()
773 if (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)) { bnx2fc_initiate_els()
778 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_els()
784 bnx2fc_add_2_sq(tgt, xid); bnx2fc_initiate_els()
787 list_add_tail(&els_req->link, &tgt->els_queue); bnx2fc_initiate_els()
790 bnx2fc_ring_doorbell(tgt); bnx2fc_initiate_els()
791 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_els()
H A Dbnx2fc_io.c46 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_cmd_timeout() local
53 spin_lock_bh(&tgt->tgt_lock); bnx2fc_cmd_timeout()
60 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_cmd_timeout()
85 rdata = io_req->tgt->rdata; bnx2fc_cmd_timeout()
88 &tgt->flags); bnx2fc_cmd_timeout()
90 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_cmd_timeout()
95 "logo - tgt flags = 0x%lx\n", bnx2fc_cmd_timeout()
96 tgt->flags); bnx2fc_cmd_timeout()
124 rdata = io_req->tgt->rdata; bnx2fc_cmd_timeout()
127 &tgt->flags); bnx2fc_cmd_timeout()
129 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_cmd_timeout()
133 "logo - tgt flags = 0x%lx\n", bnx2fc_cmd_timeout()
134 tgt->flags); bnx2fc_cmd_timeout()
156 rdata = io_req->tgt->rdata; bnx2fc_cmd_timeout()
159 &tgt->flags); bnx2fc_cmd_timeout()
161 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_cmd_timeout()
203 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_cmd_timeout()
426 struct bnx2fc_cmd *bnx2fc_elstm_alloc(struct bnx2fc_rport *tgt, int type) bnx2fc_elstm_alloc() argument
428 struct fcoe_port *port = tgt->port; bnx2fc_elstm_alloc()
439 max_sqes = tgt->max_sqes; bnx2fc_elstm_alloc()
456 free_sqes = atomic_read(&tgt->free_sqes); bnx2fc_elstm_alloc()
458 (tgt->num_active_ios.counter >= max_sqes) || bnx2fc_elstm_alloc()
460 BNX2FC_TGT_DBG(tgt, "No free els_tm cmds available " bnx2fc_elstm_alloc()
462 tgt->num_active_ios.counter, tgt->max_sqes); bnx2fc_elstm_alloc()
475 atomic_inc(&tgt->num_active_ios); bnx2fc_elstm_alloc()
476 atomic_dec(&tgt->free_sqes); bnx2fc_elstm_alloc()
496 struct bnx2fc_cmd *bnx2fc_cmd_alloc(struct bnx2fc_rport *tgt) bnx2fc_cmd_alloc() argument
498 struct fcoe_port *port = tgt->port; bnx2fc_cmd_alloc()
515 free_sqes = atomic_read(&tgt->free_sqes); bnx2fc_cmd_alloc()
517 (tgt->num_active_ios.counter >= max_sqes) || bnx2fc_cmd_alloc()
530 atomic_inc(&tgt->num_active_ios); bnx2fc_cmd_alloc()
531 atomic_dec(&tgt->free_sqes); bnx2fc_cmd_alloc()
573 atomic_dec(&io_req->tgt->num_active_ios); bnx2fc_cmd_release()
696 struct bnx2fc_rport *tgt; bnx2fc_initiate_tmf() local
731 /* rport and tgt are allocated together, so tgt should be non-NULL */ bnx2fc_initiate_tmf()
732 tgt = (struct bnx2fc_rport *)&rp[1]; bnx2fc_initiate_tmf()
734 if (!(test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags))) { bnx2fc_initiate_tmf()
735 printk(KERN_ERR PFX "device_reset: tgt not offloaded\n"); bnx2fc_initiate_tmf()
740 io_req = bnx2fc_elstm_alloc(tgt, BNX2FC_TASK_MGMT_CMD); bnx2fc_initiate_tmf()
753 io_req->tgt = tgt; bnx2fc_initiate_tmf()
760 spin_lock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
762 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
778 sid = tgt->sid; bnx2fc_initiate_tmf()
786 BNX2FC_TGT_DBG(tgt, "Initiate TMF - xid = 0x%x\n", xid); bnx2fc_initiate_tmf()
799 spin_lock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
800 bnx2fc_add_2_sq(tgt, xid); bnx2fc_initiate_tmf()
804 list_add_tail(&io_req->link, &tgt->active_tm_queue); bnx2fc_initiate_tmf()
810 bnx2fc_ring_doorbell(tgt); bnx2fc_initiate_tmf()
811 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
815 spin_lock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
826 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
829 spin_lock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
835 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_initiate_tmf()
838 BNX2FC_TGT_DBG(tgt, "task mgmt command failed...\n"); bnx2fc_initiate_tmf()
841 BNX2FC_TGT_DBG(tgt, "task mgmt command success...\n"); bnx2fc_initiate_tmf()
851 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_initiate_abts() local
852 struct fc_rport *rport = tgt->rport; bnx2fc_initiate_abts()
853 struct fc_rport_priv *rdata = tgt->rdata; bnx2fc_initiate_abts()
874 if (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)) { bnx2fc_initiate_abts()
875 printk(KERN_ERR PFX "initiate_abts: tgt not offloaded\n"); bnx2fc_initiate_abts()
892 abts_io_req = bnx2fc_elstm_alloc(tgt, BNX2FC_ABTS); bnx2fc_initiate_abts()
902 abts_io_req->tgt = tgt; bnx2fc_initiate_abts()
915 sid = tgt->sid; bnx2fc_initiate_abts()
948 bnx2fc_add_2_sq(tgt, xid); bnx2fc_initiate_abts()
951 bnx2fc_ring_doorbell(tgt); bnx2fc_initiate_abts()
961 struct bnx2fc_rport *tgt = orig_io_req->tgt; bnx2fc_initiate_seq_cleanup() local
987 seq_clnp_req = bnx2fc_elstm_alloc(tgt, BNX2FC_SEQ_CLEANUP); bnx2fc_initiate_seq_cleanup()
997 seq_clnp_req->tgt = tgt; bnx2fc_initiate_seq_cleanup()
1019 bnx2fc_add_2_sq(tgt, xid); bnx2fc_initiate_seq_cleanup()
1022 bnx2fc_ring_doorbell(tgt); bnx2fc_initiate_seq_cleanup()
1030 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_initiate_cleanup() local
1047 cleanup_io_req = bnx2fc_elstm_alloc(tgt, BNX2FC_CLEANUP); bnx2fc_initiate_cleanup()
1057 cleanup_io_req->tgt = tgt; bnx2fc_initiate_cleanup()
1076 bnx2fc_add_2_sq(tgt, xid); bnx2fc_initiate_cleanup()
1079 bnx2fc_ring_doorbell(tgt); bnx2fc_initiate_cleanup()
1113 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_expl_logo() local
1114 struct fc_rport_priv *rdata = tgt->rdata; bnx2fc_expl_logo()
1119 BNX2FC_IO_DBG(io_req, "Expl logo - tgt flags = 0x%lx\n", bnx2fc_expl_logo()
1120 tgt->flags); bnx2fc_expl_logo()
1122 &tgt->flags); bnx2fc_expl_logo()
1126 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_expl_logo()
1138 clear_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags); bnx2fc_expl_logo()
1148 } while (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)); bnx2fc_expl_logo()
1150 spin_lock_bh(&tgt->tgt_lock); bnx2fc_expl_logo()
1167 struct bnx2fc_rport *tgt; bnx2fc_eh_abort() local
1181 tgt = (struct bnx2fc_rport *)&rp[1]; bnx2fc_eh_abort()
1183 BNX2FC_TGT_DBG(tgt, "Entered bnx2fc_eh_abort\n"); bnx2fc_eh_abort()
1185 spin_lock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1190 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1199 BUG_ON(tgt != io_req->tgt); bnx2fc_eh_abort()
1207 if (tgt->flush_in_prog) { bnx2fc_eh_abort()
1211 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1227 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1241 list_add_tail(&io_req->link, &tgt->io_retire_queue); bnx2fc_eh_abort()
1270 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1272 spin_lock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1276 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1280 spin_lock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1307 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_eh_abort()
1320 struct bnx2fc_rport *tgt = orig_io_req->tgt; bnx2fc_process_seq_cleanup_compl() local
1332 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_process_seq_cleanup_compl()
1334 spin_lock_bh(&tgt->tgt_lock); bnx2fc_process_seq_cleanup_compl()
1366 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_process_abts_compl() local
1442 list_add_tail(&io_req->link, &tgt->io_retire_queue); bnx2fc_process_abts_compl()
1452 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_lun_reset_cmpl() local
1464 list_for_each_entry_safe(cmd, tmp, &tgt->active_cmd_queue, link) { bnx2fc_lun_reset_cmpl()
1465 BNX2FC_TGT_DBG(tgt, "LUN RST cmpl: scan for pending IOs\n"); bnx2fc_lun_reset_cmpl()
1489 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_tgt_reset_cmpl() local
1499 list_for_each_entry_safe(cmd, tmp, &tgt->active_cmd_queue, link) { bnx2fc_tgt_reset_cmpl()
1500 BNX2FC_TGT_DBG(tgt, "TGT RST cmpl: scan for pending IOs\n"); bnx2fc_tgt_reset_cmpl()
1596 /* check if the io_req exists in tgt's tmf_q */ bnx2fc_process_tm_compl()
1748 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_parse_fcp_rsp() local
1796 rq_data = bnx2fc_get_next_rqe(tgt, 1); bnx2fc_parse_fcp_rsp()
1801 dummy = bnx2fc_get_next_rqe(tgt, 1); bnx2fc_parse_fcp_rsp()
1826 bnx2fc_return_rqe(tgt, 1); bnx2fc_parse_fcp_rsp()
1844 struct bnx2fc_rport *tgt; bnx2fc_queuecommand() local
1861 /* rport and tgt are allocated together, so tgt should be non-NULL */ bnx2fc_queuecommand()
1862 tgt = (struct bnx2fc_rport *)&rp[1]; bnx2fc_queuecommand()
1864 if (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)) { bnx2fc_queuecommand()
1872 if (tgt->retry_delay_timestamp) { bnx2fc_queuecommand()
1873 if (time_after(jiffies, tgt->retry_delay_timestamp)) { bnx2fc_queuecommand()
1874 tgt->retry_delay_timestamp = 0; bnx2fc_queuecommand()
1882 spin_lock_bh(&tgt->tgt_lock); bnx2fc_queuecommand()
1884 io_req = bnx2fc_cmd_alloc(tgt); bnx2fc_queuecommand()
1891 if (bnx2fc_post_io_req(tgt, io_req)) { bnx2fc_queuecommand()
1898 spin_unlock_bh(&tgt->tgt_lock); bnx2fc_queuecommand()
1908 struct bnx2fc_rport *tgt = io_req->tgt; bnx2fc_process_scsi_cmd_compl() local
1913 /* scsi_cmd_cmpl is called with tgt lock held */ bnx2fc_process_scsi_cmd_compl()
1949 list_add_tail(&io_req->link, &tgt->io_retire_queue); bnx2fc_process_scsi_cmd_compl()
1980 for the rport/tgt */ bnx2fc_process_scsi_cmd_compl()
1981 tgt->retry_delay_timestamp = jiffies + bnx2fc_process_scsi_cmd_compl()
1999 int bnx2fc_post_io_req(struct bnx2fc_rport *tgt, bnx2fc_post_io_req() argument
2005 struct fcoe_port *port = tgt->port; bnx2fc_post_io_req()
2018 io_req->tgt = tgt; bnx2fc_post_io_req()
2054 if (tgt->flush_in_prog) { bnx2fc_post_io_req()
2060 if (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)) { bnx2fc_post_io_req()
2067 if (tgt->io_timeout) bnx2fc_post_io_req()
2070 bnx2fc_add_2_sq(tgt, xid); bnx2fc_post_io_req()
2076 list_add_tail(&io_req->link, &tgt->active_cmd_queue); bnx2fc_post_io_req()
2079 bnx2fc_ring_doorbell(tgt); bnx2fc_post_io_req()
H A Dbnx2fc.h427 struct bnx2fc_rport *tgt; member in struct:bnx2fc_cmd
478 struct bnx2fc_rport *tgt; member in struct:bnx2fc_work
490 struct bnx2fc_cmd *bnx2fc_cmd_alloc(struct bnx2fc_rport *tgt);
491 struct bnx2fc_cmd *bnx2fc_elstm_alloc(struct bnx2fc_rport *tgt, int type);
497 struct bnx2fc_rport *tgt);
499 struct bnx2fc_rport *tgt);
501 struct bnx2fc_rport *tgt);
503 struct bnx2fc_rport *tgt);
504 int bnx2fc_map_doorbell(struct bnx2fc_rport *tgt);
514 char *bnx2fc_get_next_rqe(struct bnx2fc_rport *tgt, u8 num_items);
515 void bnx2fc_return_rqe(struct bnx2fc_rport *tgt, u8 num_items);
518 int bnx2fc_send_adisc(struct bnx2fc_rport *tgt, struct fc_frame *fp);
519 int bnx2fc_send_logo(struct bnx2fc_rport *tgt, struct fc_frame *fp);
520 int bnx2fc_send_rls(struct bnx2fc_rport *tgt, struct fc_frame *fp);
537 void bnx2fc_add_2_sq(struct bnx2fc_rport *tgt, u16 xid);
538 void bnx2fc_ring_doorbell(struct bnx2fc_rport *tgt);
566 void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt);
573 void bnx2fc_arm_cq(struct bnx2fc_rport *tgt);
574 int bnx2fc_process_new_cqes(struct bnx2fc_rport *tgt);
575 void bnx2fc_process_cq_compl(struct bnx2fc_rport *tgt, u16 wqe);
578 void bnx2fc_process_l2_frame_compl(struct bnx2fc_rport *tgt,
582 int bnx2fc_post_io_req(struct bnx2fc_rport *tgt, struct bnx2fc_cmd *io_req);
H A Dbnx2fc_debug.h42 void BNX2FC_TGT_DBG(const struct bnx2fc_rport *tgt, const char *fmt, ...);
H A Dbnx2fc_fcoe.c173 struct bnx2fc_rport *tgt; bnx2fc_cleanup() local
180 tgt = hba->tgt_ofld_list[i]; bnx2fc_cleanup()
181 if (tgt) { bnx2fc_cleanup()
183 if (tgt->port == port) { bnx2fc_cleanup()
185 BNX2FC_TGT_DBG(tgt, "flush/cleanup\n"); bnx2fc_cleanup()
186 bnx2fc_flush_active_ios(tgt); bnx2fc_cleanup()
195 static int bnx2fc_xmit_l2_frame(struct bnx2fc_rport *tgt, bnx2fc_xmit_l2_frame() argument
198 struct fc_rport_priv *rdata = tgt->rdata; bnx2fc_xmit_l2_frame()
203 BNX2FC_TGT_DBG(tgt, "Xmit L2 frame rport = 0x%x, oxid = 0x%x, " bnx2fc_xmit_l2_frame()
211 rc = bnx2fc_send_adisc(tgt, fp); bnx2fc_xmit_l2_frame()
214 rc = bnx2fc_send_logo(tgt, fp); bnx2fc_xmit_l2_frame()
217 rc = bnx2fc_send_rls(tgt, fp); bnx2fc_xmit_l2_frame()
224 BNX2FC_TGT_DBG(tgt, "ABTS frame\n"); bnx2fc_xmit_l2_frame()
226 BNX2FC_TGT_DBG(tgt, "Send L2 frame type 0x%x " bnx2fc_xmit_l2_frame()
254 struct bnx2fc_rport *tgt; bnx2fc_xmit() local
299 tgt = bnx2fc_tgt_lookup(port, ntoh24(fh->fh_d_id)); bnx2fc_xmit()
300 if (tgt && (test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags))) { bnx2fc_xmit()
305 rc = bnx2fc_xmit_l2_frame(tgt, fp); bnx2fc_xmit()
616 bnx2fc_process_cq_compl(work->tgt, work->wqe); bnx2fc_percpu_io_thread()
1326 printk(KERN_ERR PFX "Unable to allocate tgt offload list\n"); bnx2fc_hba_create()
2493 bnx2fc_process_cq_compl(work->tgt, work->wqe); bnx2fc_percpu_thread_destroy()
2791 .eh_target_reset_handler = bnx2fc_eh_target_reset, /* tgt reset */
/linux-4.1.27/drivers/staging/lustre/lustre/lmv/
H A Dlmv_obd.c59 struct lmv_tgt_desc *tgt, lmv_activate_target()
62 if (tgt->ltd_active == activate) lmv_activate_target()
65 tgt->ltd_active = activate; lmv_activate_target()
79 struct lmv_tgt_desc *uninitialized_var(tgt); lmv_set_mdc_active()
89 tgt = lmv->tgts[i]; lmv_set_mdc_active()
90 if (tgt == NULL || tgt->ltd_exp == NULL) lmv_set_mdc_active()
94 tgt->ltd_uuid.uuid, tgt->ltd_exp->exp_handle.h_cookie); lmv_set_mdc_active()
96 if (obd_uuid_equals(uuid, &tgt->ltd_uuid)) lmv_set_mdc_active()
105 obd = class_exp2obd(tgt->ltd_exp); lmv_set_mdc_active()
116 if (tgt->ltd_active == activate) { lmv_set_mdc_active()
124 lmv_activate_target(lmv, tgt, activate); lmv_set_mdc_active()
265 struct lmv_tgt_desc *tgt; lmv_set_timeouts() local
277 tgt = lmv->tgts[i]; lmv_set_timeouts()
278 if (tgt == NULL || tgt->ltd_exp == NULL || tgt->ltd_active == 0) lmv_set_timeouts()
281 obd_set_info_async(NULL, tgt->ltd_exp, sizeof(KEY_INTERMDS), lmv_set_timeouts()
338 static int lmv_connect_mdc(struct obd_device *obd, struct lmv_tgt_desc *tgt) lmv_connect_mdc() argument
349 mdc_obd = class_find_client_obd(&tgt->ltd_uuid, LUSTRE_MDC_NAME, lmv_connect_mdc()
352 CERROR("target %s not attached\n", tgt->ltd_uuid.uuid); lmv_connect_mdc()
358 tgt->ltd_uuid.uuid, obd->obd_uuid.uuid, lmv_connect_mdc()
362 CERROR("target %s is not set up\n", tgt->ltd_uuid.uuid); lmv_connect_mdc()
369 CERROR("target %s connect error %d\n", tgt->ltd_uuid.uuid, rc); lmv_connect_mdc()
382 target.ft_idx = tgt->ltd_idx; lmv_connect_mdc()
390 tgt->ltd_uuid.uuid, rc); lmv_connect_mdc()
400 (void *)(tgt - lmv->tgts[0])); lmv_connect_mdc()
407 tgt->ltd_active = 1; lmv_connect_mdc()
408 tgt->ltd_exp = mdc_exp; lmv_connect_mdc()
411 md_init_ea_size(tgt->ltd_exp, lmv->max_easize, lmv->max_def_easize, lmv_connect_mdc()
454 struct lmv_tgt_desc *tgt; lmv_add_target() local
475 tgt = lmv->tgts[index]; lmv_add_target()
478 obd_uuid2str(&tgt->ltd_uuid), index, -EEXIST); lmv_add_target()
514 OBD_ALLOC_PTR(tgt); lmv_add_target()
515 if (!tgt) { lmv_add_target()
520 mutex_init(&tgt->ltd_fid_mutex); lmv_add_target()
521 tgt->ltd_idx = index; lmv_add_target()
522 tgt->ltd_uuid = *uuidp; lmv_add_target()
523 tgt->ltd_active = 0; lmv_add_target()
524 lmv->tgts[index] = tgt; lmv_add_target()
529 rc = lmv_connect_mdc(obd, tgt); lmv_add_target()
533 memset(tgt, 0, sizeof(*tgt)); lmv_add_target()
549 struct lmv_tgt_desc *tgt; lmv_check_connect() local
575 tgt = lmv->tgts[i]; lmv_check_connect()
576 if (tgt == NULL) lmv_check_connect()
578 rc = lmv_connect_mdc(obd, tgt); lmv_check_connect()
594 tgt = lmv->tgts[i]; lmv_check_connect()
595 if (tgt == NULL) lmv_check_connect()
597 tgt->ltd_active = 0; lmv_check_connect()
598 if (tgt->ltd_exp) { lmv_check_connect()
600 rc2 = obd_disconnect(tgt->ltd_exp); lmv_check_connect()
603 tgt->ltd_uuid.uuid, i, rc2); lmv_check_connect()
612 static int lmv_disconnect_mdc(struct obd_device *obd, struct lmv_tgt_desc *tgt) lmv_disconnect_mdc() argument
619 LASSERT(tgt != NULL); lmv_disconnect_mdc()
622 mdc_obd = class_exp2obd(tgt->ltd_exp); lmv_disconnect_mdc()
634 rc = obd_fid_fini(tgt->ltd_exp->exp_obd); lmv_disconnect_mdc()
639 tgt->ltd_exp->exp_obd->obd_name, lmv_disconnect_mdc()
640 tgt->ltd_exp->exp_obd->obd_uuid.uuid); lmv_disconnect_mdc()
642 obd_register_observer(tgt->ltd_exp->exp_obd, NULL); lmv_disconnect_mdc()
643 rc = obd_disconnect(tgt->ltd_exp); lmv_disconnect_mdc()
645 if (tgt->ltd_active) { lmv_disconnect_mdc()
647 tgt->ltd_uuid.uuid, rc); lmv_disconnect_mdc()
651 lmv_activate_target(lmv, tgt, 0); lmv_disconnect_mdc()
652 tgt->ltd_exp = NULL; lmv_disconnect_mdc()
704 struct lmv_tgt_desc *tgt; lmv_fid2path() local
710 tgt = lmv_find_target(lmv, &gf->gf_fid); lmv_fid2path()
711 if (IS_ERR(tgt)) lmv_fid2path()
712 return PTR_ERR(tgt); lmv_fid2path()
715 rc = obd_iocontrol(OBD_IOC_FID2PATH, tgt->ltd_exp, len, gf, uarg); lmv_fid2path()
743 tgt->ltd_exp->exp_obd->obd_name, lmv_fid2path()
763 tgt->ltd_exp->exp_obd->obd_name, lmv_fid2path()
769 tgt = lmv_find_target(lmv, &gf->gf_fid); lmv_fid2path()
770 if (IS_ERR(tgt)) { lmv_fid2path()
955 struct lmv_tgt_desc *tgt = NULL; lmv_iocontrol() local
962 tgt = lmv->tgts[qctl->qc_idx]; lmv_iocontrol()
963 if (tgt == NULL || tgt->ltd_exp == NULL) lmv_iocontrol()
967 tgt = lmv->tgts[i]; lmv_iocontrol()
968 if (tgt == NULL) lmv_iocontrol()
970 if (!obd_uuid_equals(&tgt->ltd_uuid, lmv_iocontrol()
974 if (tgt->ltd_exp == NULL) lmv_iocontrol()
986 LASSERT(tgt && tgt->ltd_exp); lmv_iocontrol()
992 rc = obd_quotactl(tgt->ltd_exp, oqctl); lmv_iocontrol()
996 qctl->obd_uuid = tgt->ltd_uuid; lmv_iocontrol()
1030 struct lmv_tgt_desc *tgt; lmv_iocontrol() local
1032 tgt = lmv_find_target(lmv, &op_data->op_fid1); lmv_iocontrol()
1033 if (IS_ERR(tgt)) lmv_iocontrol()
1034 return PTR_ERR(tgt); lmv_iocontrol()
1036 if (tgt->ltd_exp == NULL) lmv_iocontrol()
1039 rc = obd_iocontrol(cmd, tgt->ltd_exp, len, karg, uarg); lmv_iocontrol()
1044 struct lmv_tgt_desc *tgt; lmv_iocontrol() local
1046 tgt = lmv_find_target(lmv, &hpk->hpk_fid); lmv_iocontrol()
1047 if (IS_ERR(tgt)) lmv_iocontrol()
1048 return PTR_ERR(tgt); lmv_iocontrol()
1049 rc = obd_iocontrol(cmd, tgt->ltd_exp, len, karg, uarg); lmv_iocontrol()
1054 struct lmv_tgt_desc *tgt; lmv_iocontrol() local
1064 tgt = lmv_find_target(lmv, lmv_iocontrol()
1066 if (IS_ERR(tgt)) lmv_iocontrol()
1067 return PTR_ERR(tgt); lmv_iocontrol()
1068 rc = obd_iocontrol(cmd, tgt->ltd_exp, len, karg, uarg); lmv_iocontrol()
1252 struct lmv_tgt_desc *tgt; __lmv_fid_alloc() local
1255 tgt = lmv_get_target(lmv, mds); __lmv_fid_alloc()
1256 if (IS_ERR(tgt)) __lmv_fid_alloc()
1257 return PTR_ERR(tgt); __lmv_fid_alloc()
1263 mutex_lock(&tgt->ltd_fid_mutex); __lmv_fid_alloc()
1265 if (tgt->ltd_active == 0 || tgt->ltd_exp == NULL) { __lmv_fid_alloc()
1271 * Asking underlaying tgt layer to allocate new fid. __lmv_fid_alloc()
1273 rc = obd_fid_alloc(tgt->ltd_exp, fid, NULL); __lmv_fid_alloc()
1280 mutex_unlock(&tgt->ltd_fid_mutex); __lmv_fid_alloc()
1503 struct lmv_tgt_desc *tgt; lmv_getxattr() local
1510 tgt = lmv_find_target(lmv, fid); lmv_getxattr()
1511 if (IS_ERR(tgt)) lmv_getxattr()
1512 return PTR_ERR(tgt); lmv_getxattr()
1514 rc = md_getxattr(tgt->ltd_exp, fid, oc, valid, name, input, lmv_getxattr()
1528 struct lmv_tgt_desc *tgt; lmv_setxattr() local
1535 tgt = lmv_find_target(lmv, fid); lmv_setxattr()
1536 if (IS_ERR(tgt)) lmv_setxattr()
1537 return PTR_ERR(tgt); lmv_setxattr()
1539 rc = md_setxattr(tgt->ltd_exp, fid, oc, valid, name, input, lmv_setxattr()
1551 struct lmv_tgt_desc *tgt; lmv_getattr() local
1558 tgt = lmv_find_target(lmv, &op_data->op_fid1); lmv_getattr()
1559 if (IS_ERR(tgt)) lmv_getattr()
1560 return PTR_ERR(tgt); lmv_getattr()
1563 op_data->op_mds = tgt->ltd_idx; lmv_getattr()
1567 rc = md_getattr(tgt->ltd_exp, op_data, request); lmv_getattr()
1635 struct lmv_tgt_desc *tgt; lmv_close() local
1642 tgt = lmv_find_target(lmv, &op_data->op_fid1); lmv_close()
1643 if (IS_ERR(tgt)) lmv_close()
1644 return PTR_ERR(tgt); lmv_close()
1647 rc = md_close(tgt->ltd_exp, op_data, mod, request); lmv_close()
1655 struct lmv_tgt_desc *tgt; lmv_locate_mds() local
1657 tgt = lmv_find_target(lmv, fid); lmv_locate_mds()
1658 if (IS_ERR(tgt)) lmv_locate_mds()
1659 return tgt; lmv_locate_mds()
1661 op_data->op_mds = tgt->ltd_idx; lmv_locate_mds()
1663 return tgt; lmv_locate_mds()
1673 struct lmv_tgt_desc *tgt; lmv_create() local
1683 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1); lmv_create()
1684 if (IS_ERR(tgt)) lmv_create()
1685 return PTR_ERR(tgt); lmv_create()
1696 rc = md_create(tgt->ltd_exp, op_data, data, datalen, mode, uid, gid, lmv_create()
1713 struct lmv_tgt_desc *tgt; lmv_done_writing() local
1720 tgt = lmv_find_target(lmv, &op_data->op_fid1); lmv_done_writing()
1721 if (IS_ERR(tgt)) lmv_done_writing()
1722 return PTR_ERR(tgt); lmv_done_writing()
1724 rc = md_done_writing(tgt->ltd_exp, op_data, mod); lmv_done_writing()
1738 struct lmv_tgt_desc *tgt; lmv_enqueue_remote() local
1766 tgt = lmv_find_target(lmv, &fid1); lmv_enqueue_remote()
1767 if (IS_ERR(tgt)) { lmv_enqueue_remote()
1768 rc = PTR_ERR(tgt); lmv_enqueue_remote()
1781 rc = md_enqueue(tgt->ltd_exp, einfo, it, rdata, lockh, lmv_enqueue_remote()
1797 struct lmv_tgt_desc *tgt; lmv_enqueue() local
1807 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1); lmv_enqueue()
1808 if (IS_ERR(tgt)) lmv_enqueue()
1809 return PTR_ERR(tgt); lmv_enqueue()
1812 LL_IT2STR(it), PFID(&op_data->op_fid1), tgt->ltd_idx); lmv_enqueue()
1814 rc = md_enqueue(tgt->ltd_exp, einfo, it, op_data, lockh, lmv_enqueue()
1831 struct lmv_tgt_desc *tgt; lmv_getattr_name() local
1839 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1); lmv_getattr_name()
1840 if (IS_ERR(tgt)) lmv_getattr_name()
1841 return PTR_ERR(tgt); lmv_getattr_name()
1845 tgt->ltd_idx); lmv_getattr_name()
1847 rc = md_getattr_name(tgt->ltd_exp, op_data, request); lmv_getattr_name()
1860 tgt = lmv_find_target(lmv, &rid); lmv_getattr_name()
1861 if (IS_ERR(tgt)) { lmv_getattr_name()
1863 return PTR_ERR(tgt); lmv_getattr_name()
1870 rc = md_getattr_name(tgt->ltd_exp, op_data, &req); lmv_getattr_name()
1891 struct lmv_tgt_desc *tgt; lmv_early_cancel() local
1898 tgt = lmv_find_target(lmv, fid); lmv_early_cancel()
1899 if (IS_ERR(tgt)) lmv_early_cancel()
1900 return PTR_ERR(tgt); lmv_early_cancel()
1902 if (tgt->ltd_idx != op_tgt) { lmv_early_cancel()
1905 rc = md_cancel_unused(tgt->ltd_exp, fid, &policy, lmv_early_cancel()
1927 struct lmv_tgt_desc *tgt; lmv_link() local
1943 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid2); lmv_link()
1944 if (IS_ERR(tgt)) lmv_link()
1945 return PTR_ERR(tgt); lmv_link()
1951 rc = lmv_early_cancel(exp, op_data, tgt->ltd_idx, LCK_EX, lmv_link()
1956 rc = md_link(tgt->ltd_exp, op_data, request); lmv_link()
1998 * Cancel UPDATE locks on tgt parent (fid2), tgt_tgt is its lmv_rename()
2006 * Cancel LOOKUP locks on tgt child (fid4) for parent tgt_tgt. lmv_rename()
2015 * Cancel all the locks on tgt child (fid4). lmv_rename()
2035 struct lmv_tgt_desc *tgt; lmv_setattr() local
2046 tgt = lmv_find_target(lmv, &op_data->op_fid1); lmv_setattr()
2047 if (IS_ERR(tgt)) lmv_setattr()
2048 return PTR_ERR(tgt); lmv_setattr()
2050 rc = md_setattr(tgt->ltd_exp, op_data, ea, ealen, ea2, lmv_setattr()
2061 struct lmv_tgt_desc *tgt; lmv_sync() local
2068 tgt = lmv_find_target(lmv, fid); lmv_sync()
2069 if (IS_ERR(tgt)) lmv_sync()
2070 return PTR_ERR(tgt); lmv_sync()
2072 rc = md_sync(tgt->ltd_exp, fid, oc, request); lmv_sync()
2188 struct lmv_tgt_desc *tgt; lmv_readpage() local
2197 tgt = lmv_find_target(lmv, &op_data->op_fid1); lmv_readpage()
2198 if (IS_ERR(tgt)) lmv_readpage()
2199 return PTR_ERR(tgt); lmv_readpage()
2201 rc = md_readpage(tgt->ltd_exp, op_data, pages, request); lmv_readpage()
2224 struct lmv_tgt_desc *tgt = NULL; lmv_unlink() local
2234 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid2); lmv_unlink()
2236 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1); lmv_unlink()
2237 if (IS_ERR(tgt)) lmv_unlink()
2238 return PTR_ERR(tgt); lmv_unlink()
2256 rc = lmv_early_cancel(exp, op_data, tgt->ltd_idx, LCK_EX, lmv_unlink()
2263 PFID(&op_data->op_fid1), PFID(&op_data->op_fid2), tgt->ltd_idx); lmv_unlink()
2265 rc = md_unlink(tgt->ltd_exp, op_data, request); lmv_unlink()
2342 struct lmv_tgt_desc *tgt; lmv_get_info() local
2351 tgt = lmv->tgts[i]; lmv_get_info()
2355 if (tgt == NULL || tgt->ltd_exp == NULL) lmv_get_info()
2358 if (!obd_get_info(env, tgt->ltd_exp, keylen, key, lmv_get_info()
2394 struct lmv_tgt_desc *tgt; lmv_set_info_async() local
2411 tgt = lmv->tgts[i]; lmv_set_info_async()
2413 if (tgt == NULL || tgt->ltd_exp == NULL) lmv_set_info_async()
2416 err = obd_set_info_async(env, tgt->ltd_exp, lmv_set_info_async()
2624 struct lmv_tgt_desc *tgt; lmv_set_open_replay_data() local
2626 tgt = lmv_find_target(lmv, &och->och_fid); lmv_set_open_replay_data()
2627 if (IS_ERR(tgt)) lmv_set_open_replay_data()
2628 return PTR_ERR(tgt); lmv_set_open_replay_data()
2630 return md_set_open_replay_data(tgt->ltd_exp, och, it); lmv_set_open_replay_data()
2638 struct lmv_tgt_desc *tgt; lmv_clear_open_replay_data() local
2640 tgt = lmv_find_target(lmv, &och->och_fid); lmv_clear_open_replay_data()
2641 if (IS_ERR(tgt)) lmv_clear_open_replay_data()
2642 return PTR_ERR(tgt); lmv_clear_open_replay_data()
2644 return md_clear_open_replay_data(tgt->ltd_exp, och); lmv_clear_open_replay_data()
2654 struct lmv_tgt_desc *tgt; lmv_get_remote_perm() local
2661 tgt = lmv_find_target(lmv, fid); lmv_get_remote_perm()
2662 if (IS_ERR(tgt)) lmv_get_remote_perm()
2663 return PTR_ERR(tgt); lmv_get_remote_perm()
2665 rc = md_get_remote_perm(tgt->ltd_exp, fid, oc, suppgid, request); lmv_get_remote_perm()
2674 struct lmv_tgt_desc *tgt; lmv_renew_capa() local
2681 tgt = lmv_find_target(lmv, &oc->c_capa.lc_fid); lmv_renew_capa()
2682 if (IS_ERR(tgt)) lmv_renew_capa()
2683 return PTR_ERR(tgt); lmv_renew_capa()
2685 rc = md_renew_capa(tgt->ltd_exp, oc, cb); lmv_renew_capa()
2705 struct lmv_tgt_desc *tgt = NULL; lmv_intent_getattr_async() local
2712 tgt = lmv_find_target(lmv, &op_data->op_fid1); lmv_intent_getattr_async()
2713 if (IS_ERR(tgt)) lmv_intent_getattr_async()
2714 return PTR_ERR(tgt); lmv_intent_getattr_async()
2716 rc = md_intent_getattr_async(tgt->ltd_exp, minfo, einfo); lmv_intent_getattr_async()
2725 struct lmv_tgt_desc *tgt; lmv_revalidate_lock() local
2732 tgt = lmv_find_target(lmv, fid); lmv_revalidate_lock()
2733 if (IS_ERR(tgt)) lmv_revalidate_lock()
2734 return PTR_ERR(tgt); lmv_revalidate_lock()
2736 rc = md_revalidate_lock(tgt->ltd_exp, it, fid, bits); lmv_revalidate_lock()
2750 struct lmv_tgt_desc *tgt = lmv->tgts[0]; lmv_quotactl() local
2754 if (!lmv->desc.ld_tgt_count || !tgt->ltd_active) { lmv_quotactl()
2760 rc = obd_quotactl(tgt->ltd_exp, oqctl); lmv_quotactl()
2767 tgt = lmv->tgts[i]; lmv_quotactl()
2769 if (tgt == NULL || tgt->ltd_exp == NULL || tgt->ltd_active == 0) lmv_quotactl()
2771 if (!tgt->ltd_active) { lmv_quotactl()
2776 err = obd_quotactl(tgt->ltd_exp, oqctl); lmv_quotactl()
2797 struct lmv_tgt_desc *tgt; lmv_quotacheck() local
2802 tgt = lmv->tgts[i]; lmv_quotacheck()
2803 if (tgt == NULL || tgt->ltd_exp == NULL || !tgt->ltd_active) { lmv_quotacheck()
2808 err = obd_quotacheck(tgt->ltd_exp, oqctl); lmv_quotacheck()
58 lmv_activate_target(struct lmv_obd *lmv, struct lmv_tgt_desc *tgt, int activate) lmv_activate_target() argument
H A Dlmv_intent.c66 struct lmv_tgt_desc *tgt; lmv_intent_remote() local
96 tgt = lmv_find_target(lmv, &body->fid1); lmv_intent_remote()
97 if (IS_ERR(tgt)) { lmv_intent_remote()
98 rc = PTR_ERR(tgt); lmv_intent_remote()
123 PFID(&body->fid1), tgt->ltd_idx); lmv_intent_remote()
125 rc = md_intent_lock(tgt->ltd_exp, op_data, lmm, lmmsize, it, lmv_intent_remote()
167 struct lmv_tgt_desc *tgt; lmv_intent_open() local
171 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1); lmv_intent_open()
172 if (IS_ERR(tgt)) lmv_intent_open()
173 return PTR_ERR(tgt); lmv_intent_open()
191 PFID(&op_data->op_fid2), op_data->op_name, tgt->ltd_idx); lmv_intent_open()
193 rc = md_intent_lock(tgt->ltd_exp, op_data, lmm, lmmsize, it, flags, lmv_intent_open()
250 struct lmv_tgt_desc *tgt = NULL; lmv_intent_lookup() local
254 tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1); lmv_intent_lookup()
255 if (IS_ERR(tgt)) lmv_intent_lookup()
256 return PTR_ERR(tgt); lmv_intent_lookup()
265 tgt->ltd_idx); lmv_intent_lookup()
269 rc = md_intent_lock(tgt->ltd_exp, op_data, lmm, lmmsize, it, lmv_intent_lookup()
H A Dlproc_lmv.c175 struct lmv_tgt_desc *tgt = v; lmv_tgt_seq_show() local
177 if (tgt == NULL) lmv_tgt_seq_show()
180 tgt->ltd_idx, tgt->ltd_uuid.uuid, lmv_tgt_seq_show()
181 tgt->ltd_active ? "" : "IN"); lmv_tgt_seq_show()
/linux-4.1.27/drivers/firewire/
H A Dsbp2.c132 struct sbp2_target *tgt; member in struct:sbp2_logical_unit
182 static struct fw_device *target_parent_device(struct sbp2_target *tgt) target_parent_device() argument
184 return fw_parent_device(tgt->unit); target_parent_device()
187 static const struct device *tgt_dev(const struct sbp2_target *tgt) tgt_dev() argument
189 return &tgt->unit->device; tgt_dev()
194 return &lu->tgt->unit->device; lu_dev()
448 spin_lock_irqsave(&lu->tgt->lock, flags); sbp2_status_write()
457 spin_unlock_irqrestore(&lu->tgt->lock, flags); sbp2_status_write()
484 spin_lock_irqsave(&orb->lu->tgt->lock, flags); complete_transaction()
490 spin_unlock_irqrestore(&orb->lu->tgt->lock, flags); complete_transaction()
495 spin_unlock_irqrestore(&orb->lu->tgt->lock, flags); complete_transaction()
504 struct fw_device *device = target_parent_device(lu->tgt); sbp2_send_orb()
512 spin_lock_irqsave(&lu->tgt->lock, flags); sbp2_send_orb()
514 spin_unlock_irqrestore(&lu->tgt->lock, flags); sbp2_send_orb()
526 struct fw_device *device = target_parent_device(lu->tgt); sbp2_cancel_orbs()
532 spin_lock_irq(&lu->tgt->lock); sbp2_cancel_orbs()
534 spin_unlock_irq(&lu->tgt->lock); sbp2_cancel_orbs()
564 struct fw_device *device = target_parent_device(lu->tgt); sbp2_send_management_orb()
603 timeout = lu->tgt->mgt_orb_timeout; sbp2_send_management_orb()
618 lu->tgt->management_agent_address); sbp2_send_management_orb()
660 struct fw_device *device = target_parent_device(lu->tgt); sbp2_agent_reset()
664 lu->tgt->node_id, lu->generation, device->max_speed, sbp2_agent_reset()
677 struct fw_device *device = target_parent_device(lu->tgt); sbp2_agent_reset_no_wait()
686 lu->tgt->node_id, lu->generation, device->max_speed, sbp2_agent_reset_no_wait()
691 static inline void sbp2_allow_block(struct sbp2_target *tgt) sbp2_allow_block() argument
693 spin_lock_irq(&tgt->lock); sbp2_allow_block()
694 --tgt->dont_block; sbp2_allow_block()
695 spin_unlock_irq(&tgt->lock); sbp2_allow_block()
699 * Blocks lu->tgt if all of the following conditions are met:
704 * Note, scsi_block_requests() must be called while holding tgt->lock,
710 struct sbp2_target *tgt = lu->tgt; sbp2_conditionally_block() local
711 struct fw_card *card = target_parent_device(tgt)->card; sbp2_conditionally_block()
713 container_of((void *)tgt, struct Scsi_Host, hostdata[0]); sbp2_conditionally_block()
716 spin_lock_irqsave(&tgt->lock, flags); sbp2_conditionally_block()
717 if (!tgt->dont_block && !lu->blocked && sbp2_conditionally_block()
720 if (++tgt->blocked == 1) sbp2_conditionally_block()
723 spin_unlock_irqrestore(&tgt->lock, flags); sbp2_conditionally_block()
727 * Unblocks lu->tgt as soon as all its logical units can be unblocked.
729 * tgt->lock protected section. On the other hand, running it inside
734 struct sbp2_target *tgt = lu->tgt; sbp2_conditionally_unblock() local
735 struct fw_card *card = target_parent_device(tgt)->card; sbp2_conditionally_unblock()
737 container_of((void *)tgt, struct Scsi_Host, hostdata[0]); sbp2_conditionally_unblock()
740 spin_lock_irq(&tgt->lock); sbp2_conditionally_unblock()
743 unblock = --tgt->blocked == 0; sbp2_conditionally_unblock()
745 spin_unlock_irq(&tgt->lock); sbp2_conditionally_unblock()
752 * Prevents future blocking of tgt and unblocks it.
754 * tgt->lock protected section. On the other hand, running it inside
757 static void sbp2_unblock(struct sbp2_target *tgt) sbp2_unblock() argument
760 container_of((void *)tgt, struct Scsi_Host, hostdata[0]); sbp2_unblock()
762 spin_lock_irq(&tgt->lock); sbp2_unblock()
763 ++tgt->dont_block; sbp2_unblock()
764 spin_unlock_irq(&tgt->lock); sbp2_unblock()
798 struct fw_device *device = target_parent_device(lu->tgt); sbp2_set_busy_timeout()
802 lu->tgt->node_id, lu->generation, device->max_speed, sbp2_set_busy_timeout()
812 struct sbp2_target *tgt = lu->tgt; sbp2_login() local
813 struct fw_device *device = target_parent_device(tgt); sbp2_login()
837 dev_err(tgt_dev(tgt), "failed to login to LUN %04x\n", sbp2_login()
840 sbp2_unblock(lu->tgt); sbp2_login()
845 tgt->node_id = node_id; sbp2_login()
846 tgt->address_high = local_node_id << 16; sbp2_login()
855 dev_notice(tgt_dev(tgt), "logged in to LUN %04x (%d retries)\n", sbp2_login()
872 if (lu->tgt->workarounds & SBP2_WORKAROUND_DELAY_INQUIRY) sbp2_login()
875 shost = container_of((void *)tgt, struct Scsi_Host, hostdata[0]); sbp2_login()
900 sbp2_allow_block(tgt); sbp2_login()
922 struct sbp2_target *tgt = lu->tgt; sbp2_reconnect() local
923 struct fw_device *device = target_parent_device(tgt); sbp2_reconnect()
947 dev_err(tgt_dev(tgt), "failed to reconnect\n"); sbp2_reconnect()
956 tgt->node_id = node_id; sbp2_reconnect()
957 tgt->address_high = local_node_id << 16; sbp2_reconnect()
961 dev_notice(tgt_dev(tgt), "reconnected to LUN %04x (%d retries)\n", sbp2_reconnect()
976 static int sbp2_add_logical_unit(struct sbp2_target *tgt, int lun_entry) sbp2_add_logical_unit() argument
994 lu->tgt = tgt; sbp2_add_logical_unit()
1000 ++tgt->dont_block; sbp2_add_logical_unit()
1005 list_add_tail(&lu->link, &tgt->lu_list); sbp2_add_logical_unit()
1009 static void sbp2_get_unit_unique_id(struct sbp2_target *tgt, sbp2_get_unit_unique_id() argument
1013 tgt->guid = (u64)leaf[1] << 32 | leaf[2]; sbp2_get_unit_unique_id()
1016 static int sbp2_scan_logical_unit_dir(struct sbp2_target *tgt, sbp2_scan_logical_unit_dir() argument
1025 sbp2_add_logical_unit(tgt, value) < 0) sbp2_scan_logical_unit_dir()
1030 static int sbp2_scan_unit_dir(struct sbp2_target *tgt, const u32 *directory, sbp2_scan_unit_dir() argument
1041 tgt->management_agent_address = sbp2_scan_unit_dir()
1046 tgt->directory_id = value; sbp2_scan_unit_dir()
1059 tgt->mgt_orb_timeout = (value >> 8 & 0xff) * 500; sbp2_scan_unit_dir()
1063 if (sbp2_add_logical_unit(tgt, value) < 0) sbp2_scan_unit_dir()
1068 sbp2_get_unit_unique_id(tgt, ci.p - 1 + value); sbp2_scan_unit_dir()
1073 if (sbp2_scan_logical_unit_dir(tgt, ci.p - 1 + value) < 0) sbp2_scan_unit_dir()
1086 static void sbp2_clamp_management_orb_timeout(struct sbp2_target *tgt) sbp2_clamp_management_orb_timeout() argument
1088 unsigned int timeout = tgt->mgt_orb_timeout; sbp2_clamp_management_orb_timeout()
1091 dev_notice(tgt_dev(tgt), "%ds mgt_ORB_timeout limited to 40s\n", sbp2_clamp_management_orb_timeout()
1094 tgt->mgt_orb_timeout = clamp_val(timeout, 5000, 40000); sbp2_clamp_management_orb_timeout()
1097 static void sbp2_init_workarounds(struct sbp2_target *tgt, u32 model, sbp2_init_workarounds() argument
1104 dev_notice(tgt_dev(tgt), sbp2_init_workarounds()
1126 dev_notice(tgt_dev(tgt), "workarounds 0x%x " sbp2_init_workarounds()
1129 tgt->workarounds = w; sbp2_init_workarounds()
1138 struct sbp2_target *tgt; sbp2_probe() local
1151 shost = scsi_host_alloc(&scsi_driver_template, sizeof(*tgt)); sbp2_probe()
1155 tgt = (struct sbp2_target *)shost->hostdata; sbp2_probe()
1156 dev_set_drvdata(&unit->device, tgt); sbp2_probe()
1157 tgt->unit = unit; sbp2_probe()
1158 INIT_LIST_HEAD(&tgt->lu_list); sbp2_probe()
1159 spin_lock_init(&tgt->lock); sbp2_probe()
1160 tgt->guid = (u64)device->config_rom[3] << 32 | device->config_rom[4]; sbp2_probe()
1172 tgt->directory_id = ((unit->directory - device->config_rom) * 4 sbp2_probe()
1178 if (sbp2_scan_unit_dir(tgt, unit->directory, &model, sbp2_probe()
1182 sbp2_clamp_management_orb_timeout(tgt); sbp2_probe()
1183 sbp2_init_workarounds(tgt, model, firmware_revision); sbp2_probe()
1191 tgt->max_payload = min3(device->max_speed + 7, 10U, sbp2_probe()
1195 list_for_each_entry(lu, &tgt->lu_list, link) sbp2_probe()
1211 struct sbp2_target *tgt = dev_get_drvdata(&unit->device); sbp2_update() local
1218 * Iteration over tgt->lu_list is therefore safe here. sbp2_update()
1220 list_for_each_entry(lu, &tgt->lu_list, link) { sbp2_update()
1230 struct sbp2_target *tgt = dev_get_drvdata(&unit->device); sbp2_remove() local
1233 container_of((void *)tgt, struct Scsi_Host, hostdata[0]); sbp2_remove()
1237 sbp2_unblock(tgt); sbp2_remove()
1239 list_for_each_entry_safe(lu, next, &tgt->lu_list, link) { sbp2_remove()
1249 * tgt->node_id may be obsolete here if we failed sbp2_remove()
1356 struct fw_device *device = target_parent_device(base_orb->lu->tgt); complete_command_orb()
1417 cpu_to_be32(lu->tgt->address_high); sbp2_map_scatterlist()
1443 orb->request.data_descriptor.high = cpu_to_be32(lu->tgt->address_high);
1462 struct fw_device *device = target_parent_device(lu->tgt); sbp2_scsi_queuecommand()
1476 COMMAND_ORB_MAX_PAYLOAD(lu->tgt->max_payload) | sbp2_scsi_queuecommand()
1484 smp_rmb(); /* sbp2_map_scatterlist looks at tgt->address_high */ sbp2_scsi_queuecommand()
1500 sbp2_send_orb(&orb->base, lu, lu->tgt->node_id, generation, sbp2_scsi_queuecommand()
1524 if (lu->tgt->workarounds & SBP2_WORKAROUND_INQUIRY_36) sbp2_scsi_slave_alloc()
1543 lu->tgt->workarounds & SBP2_WORKAROUND_MODE_SENSE_8) sbp2_scsi_slave_configure()
1546 if (lu->tgt->workarounds & SBP2_WORKAROUND_FIX_CAPACITY) sbp2_scsi_slave_configure()
1549 if (lu->tgt->workarounds & SBP2_WORKAROUND_POWER_CONDITION) sbp2_scsi_slave_configure()
1552 if (lu->tgt->workarounds & SBP2_WORKAROUND_128K_MAX_TRANS) sbp2_scsi_slave_configure()
1592 (unsigned long long)lu->tgt->guid, sbp2_sysfs_ieee1394_id_show()
1593 lu->tgt->directory_id, lu->lun); sbp2_sysfs_ieee1394_id_show()
/linux-4.1.27/drivers/scsi/qla2xxx/
H A Dqla_target.c116 static void qlt_clear_tgt_db(struct qla_tgt *tgt);
140 /* ha->hardware_lock supposed to be held on entry (to protect tgt->sess_list) */ qlt_find_sess_by_port_name()
142 struct qla_tgt *tgt, qlt_find_sess_by_port_name()
147 list_for_each_entry(sess, &tgt->sess_list, sess_list_entry) { qlt_find_sess_by_port_name()
184 BUG_ON(ha->tgt.tgt_vp_map == NULL); qlt_find_host_by_d_id()
185 vp_idx = ha->tgt.tgt_vp_map[d_id[2]].idx; qlt_find_host_by_d_id()
187 return ha->tgt.tgt_vp_map[vp_idx].vha; qlt_find_host_by_d_id()
201 BUG_ON(ha->tgt.tgt_vp_map == NULL); qlt_find_host_by_vp_idx()
203 return ha->tgt.tgt_vp_map[vp_idx].vha; qlt_find_host_by_vp_idx()
212 spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags); qlt_incr_num_pend_cmds()
214 vha->hw->tgt.num_pend_cmds++; qlt_incr_num_pend_cmds()
215 if (vha->hw->tgt.num_pend_cmds > vha->hw->qla_stats.stat_max_pend_cmds) qlt_incr_num_pend_cmds()
217 vha->hw->tgt.num_pend_cmds; qlt_incr_num_pend_cmds()
218 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); qlt_incr_num_pend_cmds()
224 spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags); qlt_decr_num_pend_cmds()
225 vha->hw->tgt.num_pend_cmds--; qlt_decr_num_pend_cmds()
226 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); qlt_decr_num_pend_cmds()
396 struct qla_tgt *tgt = sess->tgt; qlt_free_session_done() local
411 BUG_ON(!tgt); qlt_free_session_done()
436 ha->tgt.tgt_ops->free_session(sess); qlt_free_session_done()
471 * We need to protect against race, when tgt is freed before or qlt_free_session_done()
474 tgt->sess_count--; qlt_free_session_done()
475 if (tgt->sess_count == 0) qlt_free_session_done()
476 wake_up_all(&tgt->waitQ); qlt_free_session_done()
484 vha->hw->tgt.tgt_ops->clear_nacl_from_fcport_map(sess); qlt_unreg_sess()
512 if (!list_empty(&ha->tgt.qla_tgt->sess_list)) { qlt_reset()
513 sess = list_entry(ha->tgt.qla_tgt->sess_list.next, qlt_reset()
537 sess = ha->tgt.tgt_ops->find_sess_by_loop_id(vha, loop_id); qlt_reset()
563 struct qla_tgt *tgt = sess->tgt; qlt_schedule_sess_for_deletion() local
564 uint32_t dev_loss_tmo = tgt->ha->port_down_retry_count + 5; qlt_schedule_sess_for_deletion()
580 list_add(&sess->del_list_entry, &tgt->del_sess_list); qlt_schedule_sess_for_deletion()
583 list_add_tail(&sess->del_list_entry, &tgt->del_sess_list); qlt_schedule_sess_for_deletion()
597 mod_delayed_work(system_wq, &tgt->sess_del_work, 0); qlt_schedule_sess_for_deletion()
599 schedule_delayed_work(&tgt->sess_del_work, qlt_schedule_sess_for_deletion()
604 static void qlt_clear_tgt_db(struct qla_tgt *tgt) qlt_clear_tgt_db() argument
608 list_for_each_entry(sess, &tgt->sess_list, sess_list_entry) qlt_clear_tgt_db()
611 /* At this point tgt could be already dead */ qlt_clear_tgt_db()
674 struct qla_tgt *tgt = container_of(work, struct qla_tgt, qlt_del_sess_work_fn() local
676 struct scsi_qla_host *vha = tgt->vha; qlt_del_sess_work_fn()
682 while (!list_empty(&tgt->del_sess_list)) { qlt_del_sess_work_fn()
683 sess = list_entry(tgt->del_sess_list.next, typeof(*sess), qlt_del_sess_work_fn()
694 ha->tgt.tgt_ops->shutdown_sess(sess); qlt_del_sess_work_fn()
695 ha->tgt.tgt_ops->put_sess(sess); qlt_del_sess_work_fn()
697 schedule_delayed_work(&tgt->sess_del_work, qlt_del_sess_work_fn()
744 ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, qlt_create_sess()
768 sess->tgt = vha->vha_tgt.qla_tgt; qlt_create_sess()
783 "Adding sess %p to tgt %p via ->check_initiator_node_acl()\n", qlt_create_sess()
795 if (ha->tgt.tgt_ops->check_initiator_node_acl(vha, qlt_create_sess()
832 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_fc_port_added() local
836 if (!vha->hw->tgt.tgt_ops) qlt_fc_port_added()
839 if (!tgt || (fcport->port_type != FCT_INITIATOR)) qlt_fc_port_added()
846 if (tgt->tgt_stop) { qlt_fc_port_added()
850 sess = qlt_find_sess_by_port_name(tgt, fcport->port_name); qlt_fc_port_added()
878 ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, qlt_fc_port_added()
889 ha->tgt.tgt_ops->put_sess(sess); qlt_fc_port_added()
900 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_fc_port_deleted() local
903 if (!vha->hw->tgt.tgt_ops) qlt_fc_port_deleted()
906 if (!tgt) qlt_fc_port_deleted()
909 if (tgt->tgt_stop) { qlt_fc_port_deleted()
912 sess = qlt_find_sess_by_port_name(tgt, fcport->port_name); qlt_fc_port_deleted()
932 static inline int test_tgt_sess_count(struct qla_tgt *tgt) test_tgt_sess_count() argument
934 struct qla_hw_data *ha = tgt->ha; test_tgt_sess_count()
938 * We need to protect against race, when tgt is freed before or test_tgt_sess_count()
942 ql_dbg(ql_dbg_tgt, tgt->vha, 0xe002, test_tgt_sess_count()
943 "tgt %p, empty(sess_list)=%d sess_count=%d\n", test_tgt_sess_count()
944 tgt, list_empty(&tgt->sess_list), tgt->sess_count); test_tgt_sess_count()
945 res = (tgt->sess_count == 0); test_tgt_sess_count()
952 int qlt_stop_phase1(struct qla_tgt *tgt) qlt_stop_phase1() argument
954 struct scsi_qla_host *vha = tgt->vha; qlt_stop_phase1()
955 struct qla_hw_data *ha = tgt->ha; qlt_stop_phase1()
973 if (tgt->tgt_stop || tgt->tgt_stopped) { qlt_stop_phase1()
975 "Already in tgt->tgt_stop or tgt_stopped state\n"); qlt_stop_phase1()
988 tgt->tgt_stop = 1; qlt_stop_phase1()
989 qlt_clear_tgt_db(tgt); qlt_stop_phase1()
994 flush_delayed_work(&tgt->sess_del_work); qlt_stop_phase1()
997 "Waiting for sess works (tgt %p)", tgt); qlt_stop_phase1()
998 spin_lock_irqsave(&tgt->sess_work_lock, flags); qlt_stop_phase1()
999 while (!list_empty(&tgt->sess_works_list)) { qlt_stop_phase1()
1000 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); qlt_stop_phase1()
1002 spin_lock_irqsave(&tgt->sess_work_lock, flags); qlt_stop_phase1()
1004 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); qlt_stop_phase1()
1007 "Waiting for tgt %p: list_empty(sess_list)=%d " qlt_stop_phase1()
1008 "sess_count=%d\n", tgt, list_empty(&tgt->sess_list), qlt_stop_phase1()
1009 tgt->sess_count); qlt_stop_phase1()
1011 wait_event(tgt->waitQ, test_tgt_sess_count(tgt)); qlt_stop_phase1()
1018 wait_event(tgt->waitQ, test_tgt_sess_count(tgt)); qlt_stop_phase1()
1024 void qlt_stop_phase2(struct qla_tgt *tgt) qlt_stop_phase2() argument
1026 struct qla_hw_data *ha = tgt->ha; qlt_stop_phase2()
1030 if (tgt->tgt_stopped) { qlt_stop_phase2()
1032 "Already in tgt->tgt_stopped state\n"); qlt_stop_phase2()
1038 "Waiting for %d IRQ commands to complete (tgt %p)", qlt_stop_phase2()
1039 tgt->irq_cmd_count, tgt); qlt_stop_phase2()
1043 while (tgt->irq_cmd_count != 0) { qlt_stop_phase2()
1048 tgt->tgt_stop = 0; qlt_stop_phase2()
1049 tgt->tgt_stopped = 1; qlt_stop_phase2()
1053 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf00c, "Stop of tgt %p finished", qlt_stop_phase2()
1054 tgt); qlt_stop_phase2()
1059 static void qlt_release(struct qla_tgt *tgt) qlt_release() argument
1061 scsi_qla_host_t *vha = tgt->vha; qlt_release()
1063 if ((vha->vha_tgt.qla_tgt != NULL) && !tgt->tgt_stopped) qlt_release()
1064 qlt_stop_phase2(tgt); qlt_release()
1069 "Release of tgt %p finished\n", tgt); qlt_release()
1071 kfree(tgt); qlt_release()
1075 static int qlt_sched_sess_work(struct qla_tgt *tgt, int type, qlt_sched_sess_work() argument
1083 ql_dbg(ql_dbg_tgt_mgt, tgt->vha, 0xf050, qlt_sched_sess_work()
1089 ql_dbg(ql_dbg_tgt_mgt, tgt->vha, 0xf00e, qlt_sched_sess_work()
1091 " to find session for param %p (size %d, tgt %p)\n", qlt_sched_sess_work()
1092 type, prm, param, param_size, tgt); qlt_sched_sess_work()
1097 spin_lock_irqsave(&tgt->sess_work_lock, flags); qlt_sched_sess_work()
1098 list_add_tail(&prm->sess_works_list_entry, &tgt->sess_works_list); qlt_sched_sess_work()
1099 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); qlt_sched_sess_work()
1101 schedule_work(&tgt->sess_work); qlt_sched_sess_work()
1415 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, lun, TMR_ABORT_TASK, __qlt_24xx_handle_abts()
1466 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, s_id); qlt_24xx_handle_abts()
1574 ha->tgt.tgt_ops->free_mcmd(mcmd); qlt_xmit_tm_rsp()
1598 ha->tgt.tgt_ops->free_mcmd(mcmd); qlt_xmit_tm_rsp()
1611 prm->seg_cnt = pci_map_sg(prm->tgt->ha->pdev, cmd->sg, qlt_pci_map_calc_cnt()
1623 if (prm->seg_cnt > prm->tgt->datasegs_per_cmd) qlt_pci_map_calc_cnt()
1625 prm->tgt->datasegs_per_cmd, qlt_pci_map_calc_cnt()
1626 prm->tgt->datasegs_per_cont); qlt_pci_map_calc_cnt()
1638 prm->prot_seg_cnt = pci_map_sg(prm->tgt->ha->pdev, qlt_pci_map_calc_cnt()
1735 h = ha->tgt.current_handle; qlt_make_handle()
1741 if (h == ha->tgt.current_handle) { qlt_make_handle()
1750 (ha->tgt.cmds[h-1] != NULL)); qlt_make_handle()
1753 ha->tgt.current_handle = h; qlt_make_handle()
1785 ha->tgt.cmds[h-1] = prm->cmd; qlt_24xx_build_ctio_pkt()
1811 int enable_64bit_addressing = prm->tgt->tgt_enable_64bit_addr; qlt_load_cont_data_segments()
1843 cnt < prm->tgt->datasegs_per_cont && prm->seg_cnt; qlt_load_cont_data_segments()
1870 int enable_64bit_addressing = prm->tgt->tgt_enable_64bit_addr; qlt_load_data_segments()
1893 (cnt < prm->tgt->datasegs_per_cmd) && prm->seg_cnt; qlt_load_data_segments()
1922 struct qla_tgt *tgt = cmd->tgt; qlt_pre_xmit_response() local
1923 struct scsi_qla_host *vha = tgt->vha; qlt_pre_xmit_response()
1928 prm->tgt = tgt; qlt_pre_xmit_response()
1987 if (ha->tgt.enable_class_2) qlt_need_explicit_conf()
1993 return ha->tgt.enable_explicit_conf && qlt_need_explicit_conf()
2093 if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 0)) { qlt_24xx_init_ctio_to_isp()
2103 if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 1)) { qlt_24xx_init_ctio_to_isp()
2133 "lost", prm->tgt->ha->vp_idx, qlt_24xx_init_ctio_to_isp()
2367 ha->tgt.cmds[h-1] = prm->cmd; qlt_build_ctio_crc2_pkt()
2639 struct qla_tgt *tgt = cmd->tgt; qlt_rdy_to_xfer() local
2646 prm.tgt = tgt; qlt_rdy_to_xfer()
3023 vha->hw->tgt.tgt_ops->free_cmd(cmd); qlt_send_term_exchange()
3037 vha->hw->tgt.leak_exchg_thresh_hold = qlt_init_term_exchange()
3041 if (!list_empty(&vha->hw->tgt.q_full_list)) { qlt_init_term_exchange()
3043 list_splice_init(&vha->hw->tgt.q_full_list, &free_list); qlt_init_term_exchange()
3051 vha->hw->tgt.num_qfull_cmds_alloc--; qlt_init_term_exchange()
3054 vha->hw->tgt.num_qfull_cmds_dropped = 0; qlt_init_term_exchange()
3061 total_leaked = vha->hw->tgt.num_qfull_cmds_dropped; qlt_chk_exch_leak_thresh_hold()
3063 if (vha->hw->tgt.leak_exchg_thresh_hold && qlt_chk_exch_leak_thresh_hold()
3064 (total_leaked > vha->hw->tgt.leak_exchg_thresh_hold)) { qlt_chk_exch_leak_thresh_hold()
3081 struct qla_tgt *tgt = cmd->tgt; qlt_abort_cmd() local
3082 struct scsi_qla_host *vha = tgt->vha; qlt_abort_cmd()
3130 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_prepare_srr_ctio() local
3133 tgt->ctio_srr_id++; qlt_prepare_srr_ctio()
3150 spin_lock(&tgt->srr_lock); qlt_prepare_srr_ctio()
3151 sc->srr_id = tgt->ctio_srr_id; qlt_prepare_srr_ctio()
3153 &tgt->srr_ctio_list); qlt_prepare_srr_ctio()
3156 if (tgt->imm_srr_id == tgt->ctio_srr_id) { qlt_prepare_srr_ctio()
3158 list_for_each_entry(imm, &tgt->srr_imm_list, qlt_prepare_srr_ctio()
3168 schedule_work(&tgt->srr_work); qlt_prepare_srr_ctio()
3175 tgt->ctio_srr_id, sc); qlt_prepare_srr_ctio()
3177 spin_unlock(&tgt->srr_lock); qlt_prepare_srr_ctio()
3183 spin_unlock(&tgt->srr_lock); qlt_prepare_srr_ctio()
3190 spin_lock(&tgt->srr_lock); qlt_prepare_srr_ctio()
3191 list_for_each_entry_safe(imm, ti, &tgt->srr_imm_list, qlt_prepare_srr_ctio()
3193 if (imm->srr_id == tgt->ctio_srr_id) { qlt_prepare_srr_ctio()
3201 spin_unlock(&tgt->srr_lock); qlt_prepare_srr_ctio()
3237 if (ha->tgt.cmds[handle] != NULL) { qlt_get_cmd()
3238 struct qla_tgt_cmd *cmd = ha->tgt.cmds[handle]; qlt_get_cmd()
3239 ha->tgt.cmds[handle] = NULL; qlt_get_cmd()
3308 ha->tgt.tgt_ops->handle_data(cmd); qlt_abort_cmd_on_host_reset()
3321 ha->tgt.tgt_ops->free_cmd(cmd); qlt_abort_cmd_on_host_reset()
3331 struct qla_tgt *tgt = base_vha->vha_tgt.qla_tgt; qlt_host_reset_handler() local
3334 if (!base_vha->hw->tgt.tgt_ops) qlt_host_reset_handler()
3337 if (!tgt || qla_ini_mode_enabled(base_vha)) { qlt_host_reset_handler()
3352 /* ha->tgt.cmds entry is cleared by qlt_get_cmd. */ qlt_host_reset_handler()
3446 ha->tgt.tgt_ops->handle_dif_err(cmd); qlt_do_ctio_completion()
3493 ha->tgt.tgt_ops->handle_data(cmd); qlt_do_ctio_completion()
3511 ha->tgt.tgt_ops->free_cmd(cmd); qlt_do_ctio_completion()
3555 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; __qlt_do_work() local
3565 if (tgt->tgt_stop) __qlt_do_work()
3597 ret = ha->tgt.tgt_ops->handle_cmd(vha, cmd, cdb, data_length, __qlt_do_work()
3605 ha->tgt.tgt_ops->put_sess(sess); __qlt_do_work()
3621 ha->tgt.tgt_ops->put_sess(sess); __qlt_do_work()
3655 cmd->tgt = vha->vha_tgt.qla_tgt; qlt_get_tag()
3723 ha->tgt.tgt_ops->put_sess(sess); qlt_create_sess_from_atio()
3729 * __qlt_do_work() will call ha->tgt.tgt_ops->put_sess() to release qlt_create_sess_from_atio()
3749 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_handle_cmd_for_atio() local
3753 if (unlikely(tgt->tgt_stop)) { qlt_handle_cmd_for_atio()
3755 "New command while device %p is shutting down\n", tgt); qlt_handle_cmd_for_atio()
3759 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, atio->u.isp24.fcp_hdr.s_id); qlt_handle_cmd_for_atio()
3796 ha->tgt.tgt_ops->put_sess(sess); qlt_handle_cmd_for_atio()
3911 res = ha->tgt.tgt_ops->handle_tmr(mcmd, lun, tmr_func, 0); qlt_issue_task_mgmt()
3914 "qla_target(%d): tgt.tgt_ops->handle_tmr() failed: %d\n", qlt_issue_task_mgmt()
3928 struct qla_tgt *tgt; qlt_handle_task_mgmt() local
3933 tgt = vha->vha_tgt.qla_tgt; qlt_handle_task_mgmt()
3938 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, qlt_handle_task_mgmt()
3946 return qlt_sched_sess_work(tgt, QLA_TGT_SESS_WORK_TM, iocb, qlt_handle_task_mgmt()
3983 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, unpacked_lun, TMR_ABORT_TASK, __qlt_abort_task()
4006 sess = ha->tgt.tgt_ops->find_sess_by_loop_id(vha, loop_id); qlt_abort_task()
4048 * ha->hardware_lock supposed to be held on entry (to protect tgt->sess_list)
4055 qlt_find_sess_invalidate_other(struct qla_tgt *tgt, uint64_t wwn, qlt_find_sess_invalidate_other() argument
4061 list_for_each_entry(other_sess, &tgt->sess_list, sess_list_entry) { qlt_find_sess_invalidate_other()
4074 ql_dbg(ql_dbg_tgt_tmr, tgt->vha, 0x1000c, qlt_find_sess_invalidate_other()
4099 ql_dbg(ql_dbg_tgt_tmr, tgt->vha, 0x1000d, qlt_find_sess_invalidate_other()
4150 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_24xx_handle_els() local
4182 sess = qlt_find_sess_invalidate_other(tgt, wwn, qlt_24xx_handle_els()
4244 sess = qlt_find_sess_invalidate_other(tgt, wwn, port_id, qlt_24xx_handle_els()
4299 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_24xx_handle_els() local
4300 if (tgt->link_reinit_iocb_pending) { qlt_24xx_handle_els()
4301 qlt_send_notify_ack(vha, &tgt->link_reinit_iocb, qlt_24xx_handle_els()
4303 tgt->link_reinit_iocb_pending = 0; qlt_24xx_handle_els()
4598 struct qla_tgt *tgt = container_of(work, struct qla_tgt, srr_work); qlt_handle_srr_work() local
4599 struct scsi_qla_host *vha = tgt->vha; qlt_handle_srr_work()
4603 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf029, "Entering SRR work (tgt %p)\n", qlt_handle_srr_work()
4604 tgt); qlt_handle_srr_work()
4607 spin_lock_irqsave(&tgt->srr_lock, flags); qlt_handle_srr_work()
4608 list_for_each_entry(sctio, &tgt->srr_ctio_list, srr_list_entry) { qlt_handle_srr_work()
4614 list_for_each_entry_safe(i, ti, &tgt->srr_imm_list, qlt_handle_srr_work()
4624 qlt_reject_free_srr_imm(tgt->vha, i, 0); qlt_handle_srr_work()
4642 spin_unlock_irqrestore(&tgt->srr_lock, flags); qlt_handle_srr_work()
4673 spin_unlock_irqrestore(&tgt->srr_lock, flags); qlt_handle_srr_work()
4681 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_prepare_srr_imm() local
4684 tgt->imm_srr_id++; qlt_prepare_srr_imm()
4694 spin_lock(&tgt->srr_lock); qlt_prepare_srr_imm()
4695 imm->srr_id = tgt->imm_srr_id; qlt_prepare_srr_imm()
4697 &tgt->srr_imm_list); qlt_prepare_srr_imm()
4701 if (tgt->imm_srr_id == tgt->ctio_srr_id) { qlt_prepare_srr_imm()
4703 list_for_each_entry(sctio, &tgt->srr_ctio_list, qlt_prepare_srr_imm()
4713 schedule_work(&tgt->srr_work); qlt_prepare_srr_imm()
4719 "SRR %p\n", vha->vp_idx, tgt->ctio_srr_id, qlt_prepare_srr_imm()
4725 spin_unlock(&tgt->srr_lock); qlt_prepare_srr_imm()
4729 spin_unlock(&tgt->srr_lock); qlt_prepare_srr_imm()
4738 spin_lock(&tgt->srr_lock); qlt_prepare_srr_imm()
4739 list_for_each_entry_safe(sctio, ts, &tgt->srr_ctio_list, qlt_prepare_srr_imm()
4741 if (sctio->srr_id == tgt->imm_srr_id) { qlt_prepare_srr_imm()
4751 spin_unlock(&tgt->srr_lock); qlt_prepare_srr_imm()
4791 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_handle_imm_notify() local
4797 if (tgt->link_reinit_iocb_pending) { qlt_handle_imm_notify()
4798 qlt_send_notify_ack(vha, &tgt->link_reinit_iocb, qlt_handle_imm_notify()
4801 memcpy(&tgt->link_reinit_iocb, iocb, sizeof(*iocb)); qlt_handle_imm_notify()
4802 tgt->link_reinit_iocb_pending = 1; qlt_handle_imm_notify()
4914 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, __qlt_send_busy()
4967 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_alloc_qfull_cmd() local
4974 if (unlikely(tgt->tgt_stop)) { qlt_alloc_qfull_cmd()
4976 "New command while device %p is shutting down\n", tgt); qlt_alloc_qfull_cmd()
4980 if ((vha->hw->tgt.num_qfull_cmds_alloc + 1) > MAX_QFULL_CMDS_ALLOC) { qlt_alloc_qfull_cmd()
4981 vha->hw->tgt.num_qfull_cmds_dropped++; qlt_alloc_qfull_cmd()
4982 if (vha->hw->tgt.num_qfull_cmds_dropped > qlt_alloc_qfull_cmd()
4985 vha->hw->tgt.num_qfull_cmds_dropped; qlt_alloc_qfull_cmd()
4990 vha->hw->tgt.num_qfull_cmds_dropped); qlt_alloc_qfull_cmd()
4996 sess = ha->tgt.tgt_ops->find_sess_by_s_id qlt_alloc_qfull_cmd()
5013 vha->hw->tgt.num_qfull_cmds_dropped++; qlt_alloc_qfull_cmd()
5014 if (vha->hw->tgt.num_qfull_cmds_dropped > qlt_alloc_qfull_cmd()
5017 vha->hw->tgt.num_qfull_cmds_dropped; qlt_alloc_qfull_cmd()
5029 cmd->tgt = vha->vha_tgt.qla_tgt; qlt_alloc_qfull_cmd()
5041 list_add_tail(&cmd->cmd_list, &vha->hw->tgt.q_full_list); qlt_alloc_qfull_cmd()
5043 vha->hw->tgt.num_qfull_cmds_alloc++; qlt_alloc_qfull_cmd()
5044 if (vha->hw->tgt.num_qfull_cmds_alloc > qlt_alloc_qfull_cmd()
5047 vha->hw->tgt.num_qfull_cmds_alloc; qlt_alloc_qfull_cmd()
5059 if (list_empty(&ha->tgt.q_full_list)) qlt_free_qfull_cmds()
5066 if (list_empty(&ha->tgt.q_full_list)) { qlt_free_qfull_cmds()
5071 list_for_each_entry_safe(cmd, tcmd, &ha->tgt.q_full_list, cmd_list) { qlt_free_qfull_cmds()
5098 vha->hw->tgt.num_qfull_cmds_alloc--; qlt_free_qfull_cmds()
5132 if (ha->tgt.num_pend_cmds < Q_FULL_THRESH_HOLD(ha)) qlt_chk_qfull_thresh_hold()
5146 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_24xx_atio_pkt() local
5149 if (unlikely(tgt == NULL)) { qlt_24xx_atio_pkt()
5151 "ATIO pkt, but no tgt (ha %p)", ha); qlt_24xx_atio_pkt()
5159 tgt->irq_cmd_count++; qlt_24xx_atio_pkt()
5178 tgt->irq_cmd_count--; qlt_24xx_atio_pkt()
5193 if (tgt->tgt_stop) { qlt_24xx_atio_pkt()
5231 tgt->irq_cmd_count--; qlt_24xx_atio_pkt()
5239 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_response_pkt() local
5241 if (unlikely(tgt == NULL)) { qlt_response_pkt()
5244 "tgt (ha %p)\n", vha->vp_idx, pkt->entry_type, ha); qlt_response_pkt()
5253 tgt->irq_cmd_count++; qlt_response_pkt()
5281 tgt->irq_cmd_count--; qlt_response_pkt()
5294 if (tgt->tgt_stop) { qlt_response_pkt()
5337 if (tgt->notify_ack_expected > 0) { qlt_response_pkt()
5343 tgt->notify_ack_expected--; qlt_response_pkt()
5365 if (tgt->abts_resp_expected > 0) { qlt_response_pkt()
5371 tgt->abts_resp_expected--; qlt_response_pkt()
5415 tgt->irq_cmd_count--; qlt_response_pkt()
5425 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_async_event() local
5428 if (!ha->tgt.tgt_ops) qlt_async_event()
5431 if (unlikely(tgt == NULL)) { qlt_async_event()
5433 "ASYNC EVENT %#x, but no tgt (ha %p)\n", code, ha); qlt_async_event()
5445 tgt->irq_cmd_count++; qlt_async_event()
5467 if (tgt->link_reinit_iocb_pending) { qlt_async_event()
5468 qlt_send_notify_ack(vha, (void *)&tgt->link_reinit_iocb, qlt_async_event()
5470 tgt->link_reinit_iocb_pending = 0; qlt_async_event()
5507 tgt->irq_cmd_count--; qlt_async_event()
5593 static void qlt_abort_work(struct qla_tgt *tgt, qlt_abort_work() argument
5596 struct scsi_qla_host *vha = tgt->vha; qlt_abort_work()
5606 if (tgt->tgt_stop) qlt_abort_work()
5613 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, qlt_abort_work()
5635 if (tgt->tgt_stop) qlt_abort_work()
5642 ha->tgt.tgt_ops->put_sess(sess); qlt_abort_work()
5649 ha->tgt.tgt_ops->put_sess(sess); qlt_abort_work()
5653 static void qlt_tmr_work(struct qla_tgt *tgt, qlt_tmr_work() argument
5657 struct scsi_qla_host *vha = tgt->vha; qlt_tmr_work()
5669 if (tgt->tgt_stop) qlt_tmr_work()
5673 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, s_id); qlt_tmr_work()
5704 ha->tgt.tgt_ops->put_sess(sess); qlt_tmr_work()
5711 ha->tgt.tgt_ops->put_sess(sess); qlt_tmr_work()
5717 struct qla_tgt *tgt = container_of(work, struct qla_tgt, sess_work); qlt_sess_work_fn() local
5718 struct scsi_qla_host *vha = tgt->vha; qlt_sess_work_fn()
5721 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf000, "Sess work (tgt %p)", tgt); qlt_sess_work_fn()
5723 spin_lock_irqsave(&tgt->sess_work_lock, flags); qlt_sess_work_fn()
5724 while (!list_empty(&tgt->sess_works_list)) { qlt_sess_work_fn()
5726 tgt->sess_works_list.next, typeof(*prm), qlt_sess_work_fn()
5735 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); qlt_sess_work_fn()
5739 qlt_abort_work(tgt, prm); qlt_sess_work_fn()
5742 qlt_tmr_work(tgt, prm); qlt_sess_work_fn()
5749 spin_lock_irqsave(&tgt->sess_work_lock, flags); qlt_sess_work_fn()
5753 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); qlt_sess_work_fn()
5759 struct qla_tgt *tgt; qlt_add_target() local
5775 tgt = kzalloc(sizeof(struct qla_tgt), GFP_KERNEL); qlt_add_target()
5776 if (!tgt) { qlt_add_target()
5785 tgt->ha = ha; qlt_add_target()
5786 tgt->vha = base_vha; qlt_add_target()
5787 init_waitqueue_head(&tgt->waitQ); qlt_add_target()
5788 INIT_LIST_HEAD(&tgt->sess_list); qlt_add_target()
5789 INIT_LIST_HEAD(&tgt->del_sess_list); qlt_add_target()
5790 INIT_DELAYED_WORK(&tgt->sess_del_work, qlt_add_target()
5792 spin_lock_init(&tgt->sess_work_lock); qlt_add_target()
5793 INIT_WORK(&tgt->sess_work, qlt_sess_work_fn); qlt_add_target()
5794 INIT_LIST_HEAD(&tgt->sess_works_list); qlt_add_target()
5795 spin_lock_init(&tgt->srr_lock); qlt_add_target()
5796 INIT_LIST_HEAD(&tgt->srr_ctio_list); qlt_add_target()
5797 INIT_LIST_HEAD(&tgt->srr_imm_list); qlt_add_target()
5798 INIT_WORK(&tgt->srr_work, qlt_handle_srr_work); qlt_add_target()
5799 atomic_set(&tgt->tgt_global_resets_count, 0); qlt_add_target()
5801 base_vha->vha_tgt.qla_tgt = tgt; qlt_add_target()
5806 tgt->tgt_enable_64bit_addr = 1; qlt_add_target()
5808 tgt->sg_tablesize = QLA_TGT_MAX_SG_24XX(base_vha->req->length - 3); qlt_add_target()
5809 tgt->datasegs_per_cmd = QLA_TGT_DATASEGS_PER_CMD_24XX; qlt_add_target()
5810 tgt->datasegs_per_cont = QLA_TGT_DATASEGS_PER_CONT_24XX; qlt_add_target()
5816 list_add_tail(&tgt->tgt_list_entry, &qla_tgt_glist); qlt_add_target()
5880 struct qla_tgt *tgt; qlt_lport_register() local
5889 list_for_each_entry(tgt, &qla_tgt_glist, tgt_list_entry) { qlt_lport_register()
5890 vha = tgt->vha; qlt_lport_register()
5907 if (tgt->tgt_stop) { qlt_lport_register()
5953 ha->tgt.tgt_ops = NULL; qlt_lport_deregister()
5978 if (ha->tgt.ini_mode_force_reverse) qlt_set_mode()
6001 if (ha->tgt.ini_mode_force_reverse) qlt_clear_mode()
6014 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_enable_vha() local
6018 if (!tgt) { qlt_enable_vha()
6027 tgt->tgt_stopped = 0; qlt_enable_vha()
6050 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; qlt_disable_vha() local
6053 if (!tgt) { qlt_disable_vha()
6094 ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; qlt_vport_create()
6129 struct atio_from_isp *pkt = (struct atio_from_isp *)ha->tgt.atio_ring; qlt_init_atio_q_entries()
6134 for (cnt = 0; cnt < ha->tgt.atio_q_length; cnt++) { qlt_init_atio_q_entries()
6155 while (ha->tgt.atio_ring_ptr->signature != ATIO_PROCESSED) { qlt_24xx_process_atio_queue()
6156 pkt = (struct atio_from_isp *)ha->tgt.atio_ring_ptr; qlt_24xx_process_atio_queue()
6162 ha->tgt.atio_ring_index++; qlt_24xx_process_atio_queue()
6163 if (ha->tgt.atio_ring_index == ha->tgt.atio_q_length) { qlt_24xx_process_atio_queue()
6164 ha->tgt.atio_ring_index = 0; qlt_24xx_process_atio_queue()
6165 ha->tgt.atio_ring_ptr = ha->tgt.atio_ring; qlt_24xx_process_atio_queue()
6167 ha->tgt.atio_ring_ptr++; qlt_24xx_process_atio_queue()
6170 pkt = (struct atio_from_isp *)ha->tgt.atio_ring_ptr; qlt_24xx_process_atio_queue()
6176 WRT_REG_DWORD(ISP_ATIO_Q_OUT(vha), ha->tgt.atio_ring_index); qlt_24xx_process_atio_queue()
6207 if (!ha->tgt.saved_set) { qlt_24xx_config_nvram_stage1()
6209 ha->tgt.saved_exchange_count = nv->exchange_count; qlt_24xx_config_nvram_stage1()
6210 ha->tgt.saved_firmware_options_1 = qlt_24xx_config_nvram_stage1()
6212 ha->tgt.saved_firmware_options_2 = qlt_24xx_config_nvram_stage1()
6214 ha->tgt.saved_firmware_options_3 = qlt_24xx_config_nvram_stage1()
6216 ha->tgt.saved_set = 1; qlt_24xx_config_nvram_stage1()
6244 if (ha->tgt.saved_set) { qlt_24xx_config_nvram_stage1()
6245 nv->exchange_count = ha->tgt.saved_exchange_count; qlt_24xx_config_nvram_stage1()
6247 ha->tgt.saved_firmware_options_1; qlt_24xx_config_nvram_stage1()
6249 ha->tgt.saved_firmware_options_2; qlt_24xx_config_nvram_stage1()
6251 ha->tgt.saved_firmware_options_3; qlt_24xx_config_nvram_stage1()
6259 if (ha->tgt.enable_class_2) { qlt_24xx_config_nvram_stage1()
6279 if (ha->tgt.node_name_set) { qlt_24xx_config_nvram_stage2()
6280 memcpy(icb->node_name, ha->tgt.tgt_node_name, WWN_SIZE); qlt_24xx_config_nvram_stage2()
6294 if (!ha->tgt.saved_set) { qlt_81xx_config_nvram_stage1()
6296 ha->tgt.saved_exchange_count = nv->exchange_count; qlt_81xx_config_nvram_stage1()
6297 ha->tgt.saved_firmware_options_1 = qlt_81xx_config_nvram_stage1()
6299 ha->tgt.saved_firmware_options_2 = qlt_81xx_config_nvram_stage1()
6301 ha->tgt.saved_firmware_options_3 = qlt_81xx_config_nvram_stage1()
6303 ha->tgt.saved_set = 1; qlt_81xx_config_nvram_stage1()
6332 if (ha->tgt.saved_set) { qlt_81xx_config_nvram_stage1()
6333 nv->exchange_count = ha->tgt.saved_exchange_count; qlt_81xx_config_nvram_stage1()
6335 ha->tgt.saved_firmware_options_1; qlt_81xx_config_nvram_stage1()
6337 ha->tgt.saved_firmware_options_2; qlt_81xx_config_nvram_stage1()
6339 ha->tgt.saved_firmware_options_3; qlt_81xx_config_nvram_stage1()
6347 if (ha->tgt.enable_class_2) { qlt_81xx_config_nvram_stage1()
6370 if (ha->tgt.node_name_set) { qlt_81xx_config_nvram_stage2()
6371 memcpy(icb->node_name, ha->tgt.tgt_node_name, WWN_SIZE); qlt_81xx_config_nvram_stage2()
6459 ha->tgt.tgt_vp_map = kzalloc(sizeof(struct qla_tgt_vp_map) * qlt_mem_alloc()
6461 if (!ha->tgt.tgt_vp_map) qlt_mem_alloc()
6464 ha->tgt.atio_ring = dma_alloc_coherent(&ha->pdev->dev, qlt_mem_alloc()
6465 (ha->tgt.atio_q_length + 1) * sizeof(struct atio_from_isp), qlt_mem_alloc()
6466 &ha->tgt.atio_dma, GFP_KERNEL); qlt_mem_alloc()
6467 if (!ha->tgt.atio_ring) { qlt_mem_alloc()
6468 kfree(ha->tgt.tgt_vp_map); qlt_mem_alloc()
6480 if (ha->tgt.atio_ring) { qlt_mem_free()
6481 dma_free_coherent(&ha->pdev->dev, (ha->tgt.atio_q_length + 1) * qlt_mem_free()
6482 sizeof(struct atio_from_isp), ha->tgt.atio_ring, qlt_mem_free()
6483 ha->tgt.atio_dma); qlt_mem_free()
6485 kfree(ha->tgt.tgt_vp_map); qlt_mem_free()
6497 vha->hw->tgt.tgt_vp_map[vha->vp_idx].vha = vha; qlt_update_vp_map()
6500 vha->hw->tgt.tgt_vp_map[vha->d_id.b.al_pa].idx = vha->vp_idx; qlt_update_vp_map()
6503 vha->hw->tgt.tgt_vp_map[vha->vp_idx].vha = NULL; qlt_update_vp_map()
6506 vha->hw->tgt.tgt_vp_map[vha->d_id.b.al_pa].idx = 0; qlt_update_vp_map()
141 qlt_find_sess_by_port_name( struct qla_tgt *tgt, const uint8_t *port_name) qlt_find_sess_by_port_name() argument
H A Dqla_target.h60 * multi-complete should come to the tgt driver or be handled there by qla2xxx
919 struct qla_tgt *tgt; member in struct:qla_tgt_sess
963 struct qla_tgt *tgt; /* to save extra sess dereferences */ member in struct:qla_tgt_cmd
1031 struct qla_tgt *tgt; member in struct:qla_tgt_prm
H A Dtcm_qla2xxx.c1527 struct qla_tgt *tgt = sess->tgt; tcm_qla2xxx_free_session() local
1528 struct qla_hw_data *ha = tgt->ha; tcm_qla2xxx_free_session()
1644 struct qla_tgt *tgt = sess->tgt; tcm_qla2xxx_update_sess() local
1645 struct qla_hw_data *ha = tgt->ha; tcm_qla2xxx_update_sess()
1769 ha->tgt.tgt_ops = &tcm_qla2xxx_template; tcm_qla2xxx_lport_register_cb()
H A Dqla_os.c2334 ha->tgt.enable_class_2 = ql2xenableclass2; qla2x00_probe_one()
2335 INIT_LIST_HEAD(&ha->tgt.q_full_list); qla2x00_probe_one()
2336 spin_lock_init(&ha->tgt.q_full_lock); qla2x00_probe_one()
2403 ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; qla2x00_probe_one()
2419 ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; qla2x00_probe_one()
2435 ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; qla2x00_probe_one()
2482 ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; qla2x00_probe_one()
3746 ha->tgt.atio_ring = NULL; qla2x00_mem_free()
3747 ha->tgt.atio_dma = 0; qla2x00_mem_free()
3748 ha->tgt.tgt_vp_map = NULL; qla2x00_mem_free()
H A Dqla_def.h683 #define ISP_ATIO_Q_IN(vha) (vha->hw->tgt.atio_q_in)
684 #define ISP_ATIO_Q_OUT(vha) (vha->hw->tgt.atio_q_out)
3166 #define IS_TGT_MODE_CAPABLE(ha) (ha->tgt.atio_q_length)
3474 struct qlt_hw_data tgt; member in struct:qla_hw_data
H A Dqla_init.c1569 if (ha->tgt.atio_ring) qla2x00_alloc_fw_dump()
1570 mq_size += ha->tgt.atio_q_length * sizeof(request_t); qla2x00_alloc_fw_dump()
2114 icb->atio_q_length = cpu_to_le16(ha->tgt.atio_q_length); qla24xx_config_rings()
2115 icb->atio_q_address[0] = cpu_to_le32(LSD(ha->tgt.atio_dma)); qla24xx_config_rings()
2116 icb->atio_q_address[1] = cpu_to_le32(MSD(ha->tgt.atio_dma)); qla24xx_config_rings()
2225 ha->tgt.atio_ring_ptr = ha->tgt.atio_ring; qla2x00_init_rings()
2226 ha->tgt.atio_ring_index = 0; qla2x00_init_rings()
H A Dqla_dbg.c518 if (!ha->tgt.atio_ring) qla2xxx_copy_atioqueues()
523 aqp->length = ha->tgt.atio_q_length; qla2xxx_copy_atioqueues()
524 aqp->ring = ha->tgt.atio_ring; qla2xxx_copy_atioqueues()
H A Dqla_mr.c1182 "TGT-ID Change(%s): Present tgt id: " qlafx00_find_all_targets()
1191 "TGT-ID Announce(%s): Discovered tgt " qlafx00_find_all_targets()
H A Dqla_attr.c2296 fc_host_supported_classes(vha->host) = ha->tgt.enable_class_2 ? qla2x00_init_host_attr()
/linux-4.1.27/drivers/scsi/ibmvscsi/
H A Dibmvfc.c421 * @tgt: ibmvfc target struct
425 static void ibmvfc_set_tgt_action(struct ibmvfc_target *tgt, ibmvfc_set_tgt_action() argument
428 switch (tgt->action) { ibmvfc_set_tgt_action()
431 tgt->action = action; ibmvfc_set_tgt_action()
436 tgt->add_rport = 0; ibmvfc_set_tgt_action()
437 tgt->action = action; ibmvfc_set_tgt_action()
556 struct ibmvfc_target *tgt; ibmvfc_link_down() local
560 list_for_each_entry(tgt, &vhost->targets, queue) ibmvfc_link_down()
561 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_link_down()
578 struct ibmvfc_target *tgt; ibmvfc_init_host() local
593 list_for_each_entry(tgt, &vhost->targets, queue) ibmvfc_init_host()
594 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_init_host()
915 struct ibmvfc_target *tgt; __ibmvfc_get_target() local
917 list_for_each_entry(tgt, &vhost->targets, queue) __ibmvfc_get_target()
918 if (tgt->target_id == starget->id) { __ibmvfc_get_target()
919 kref_get(&tgt->kref); __ibmvfc_get_target()
920 return tgt; __ibmvfc_get_target()
935 struct ibmvfc_target *tgt; ibmvfc_get_target() local
939 tgt = __ibmvfc_get_target(starget); ibmvfc_get_target()
941 return tgt; ibmvfc_get_target()
1050 struct ibmvfc_target *tgt = container_of(kref, struct ibmvfc_target, kref); ibmvfc_release_tgt() local
1051 kfree(tgt); ibmvfc_release_tgt()
1063 struct ibmvfc_target *tgt = ibmvfc_get_target(starget); ibmvfc_get_starget_node_name() local
1064 fc_starget_port_name(starget) = tgt ? tgt->ids.node_name : 0; ibmvfc_get_starget_node_name()
1065 if (tgt) ibmvfc_get_starget_node_name()
1066 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_get_starget_node_name()
1078 struct ibmvfc_target *tgt = ibmvfc_get_target(starget); ibmvfc_get_starget_port_name() local
1079 fc_starget_port_name(starget) = tgt ? tgt->ids.port_name : 0; ibmvfc_get_starget_port_name()
1080 if (tgt) ibmvfc_get_starget_port_name()
1081 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_get_starget_port_name()
1093 struct ibmvfc_target *tgt = ibmvfc_get_target(starget); ibmvfc_get_starget_port_id() local
1094 fc_starget_port_id(starget) = tgt ? tgt->scsi_id : -1; ibmvfc_get_starget_port_id()
1095 if (tgt) ibmvfc_get_starget_port_id()
1096 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_get_starget_port_id()
1506 struct ibmvfc_target *tgt; ibmvfc_relogin() local
1508 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_relogin()
1509 if (rport == tgt->rport) { ibmvfc_relogin()
1510 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_relogin()
1759 struct ibmvfc_target *tgt; ibmvfc_bsg_plogi() local
1767 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_bsg_plogi()
1768 if (tgt->scsi_id == port_id) { ibmvfc_bsg_plogi()
2636 struct ibmvfc_target *tgt; ibmvfc_handle_async() local
2682 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_handle_async()
2685 if (crq->scsi_id && cpu_to_be64(tgt->scsi_id) != crq->scsi_id) ibmvfc_handle_async()
2687 if (crq->wwpn && cpu_to_be64(tgt->ids.port_name) != crq->wwpn) ibmvfc_handle_async()
2689 if (crq->node_name && cpu_to_be64(tgt->ids.node_name) != crq->node_name) ibmvfc_handle_async()
2691 if (tgt->need_login && be64_to_cpu(crq->event) == IBMVFC_AE_ELS_LOGO) ibmvfc_handle_async()
2692 tgt->logo_rcvd = 1; ibmvfc_handle_async()
2693 if (!tgt->need_login || be64_to_cpu(crq->event) == IBMVFC_AE_ELS_PLOGI) { ibmvfc_handle_async()
2694 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_handle_async()
3220 * @tgt: ibmvfc target struct
3224 static void ibmvfc_init_tgt(struct ibmvfc_target *tgt, ibmvfc_init_tgt() argument
3227 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT); ibmvfc_init_tgt()
3228 tgt->job_step = job_step; ibmvfc_init_tgt()
3229 wake_up(&tgt->vhost->work_wait_q); ibmvfc_init_tgt()
3234 * @tgt: ibmvfc target struct
3240 static int ibmvfc_retry_tgt_init(struct ibmvfc_target *tgt, ibmvfc_retry_tgt_init() argument
3243 if (++tgt->init_retries > IBMVFC_MAX_TGT_INIT_RETRIES) { ibmvfc_retry_tgt_init()
3244 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_retry_tgt_init()
3245 wake_up(&tgt->vhost->work_wait_q); ibmvfc_retry_tgt_init()
3248 ibmvfc_init_tgt(tgt, job_step); ibmvfc_retry_tgt_init()
3293 struct ibmvfc_target *tgt = evt->tgt; ibmvfc_tgt_prli_done() local
3301 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_prli_done()
3304 tgt_dbg(tgt, "Process Login succeeded: %X %02X %04X\n", ibmvfc_tgt_prli_done()
3311 tgt->need_login = 0; ibmvfc_tgt_prli_done()
3312 tgt->ids.roles = 0; ibmvfc_tgt_prli_done()
3314 tgt->ids.roles |= FC_PORT_ROLE_FCP_TARGET; ibmvfc_tgt_prli_done()
3316 tgt->ids.roles |= FC_PORT_ROLE_FCP_INITIATOR; ibmvfc_tgt_prli_done()
3317 tgt->add_rport = 1; ibmvfc_tgt_prli_done()
3319 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_prli_done()
3321 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); ibmvfc_tgt_prli_done()
3323 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_prli_done()
3325 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_prli_done()
3330 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); ibmvfc_tgt_prli_done()
3336 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); ibmvfc_tgt_prli_done()
3337 else if (tgt->logo_rcvd) ibmvfc_tgt_prli_done()
3338 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); ibmvfc_tgt_prli_done()
3340 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); ibmvfc_tgt_prli_done()
3342 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_prli_done()
3344 tgt_log(tgt, level, "Process Login failed: %s (%x:%x) rc=0x%02X\n", ibmvfc_tgt_prli_done()
3350 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_prli_done()
3357 * @tgt: ibmvfc target struct
3360 static void ibmvfc_tgt_send_prli(struct ibmvfc_target *tgt) ibmvfc_tgt_send_prli() argument
3363 struct ibmvfc_host *vhost = tgt->vhost; ibmvfc_tgt_send_prli()
3369 kref_get(&tgt->kref); ibmvfc_tgt_send_prli()
3373 evt->tgt = tgt; ibmvfc_tgt_send_prli()
3379 prli->scsi_id = cpu_to_be64(tgt->scsi_id); ibmvfc_tgt_send_prli()
3385 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); ibmvfc_tgt_send_prli()
3388 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_send_prli()
3389 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_send_prli()
3391 tgt_dbg(tgt, "Sent process login\n"); ibmvfc_tgt_send_prli()
3401 struct ibmvfc_target *tgt = evt->tgt; ibmvfc_tgt_plogi_done() local
3408 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_plogi_done()
3411 tgt_dbg(tgt, "Port Login succeeded\n"); ibmvfc_tgt_plogi_done()
3412 if (tgt->ids.port_name && ibmvfc_tgt_plogi_done()
3413 tgt->ids.port_name != wwn_to_u64(rsp->service_parms.port_name)) { ibmvfc_tgt_plogi_done()
3415 tgt_dbg(tgt, "Port re-init required\n"); ibmvfc_tgt_plogi_done()
3418 tgt->ids.node_name = wwn_to_u64(rsp->service_parms.node_name); ibmvfc_tgt_plogi_done()
3419 tgt->ids.port_name = wwn_to_u64(rsp->service_parms.port_name); ibmvfc_tgt_plogi_done()
3420 tgt->ids.port_id = tgt->scsi_id; ibmvfc_tgt_plogi_done()
3421 memcpy(&tgt->service_parms, &rsp->service_parms, ibmvfc_tgt_plogi_done()
3422 sizeof(tgt->service_parms)); ibmvfc_tgt_plogi_done()
3423 memcpy(&tgt->service_parms_change, &rsp->service_parms_change, ibmvfc_tgt_plogi_done()
3424 sizeof(tgt->service_parms_change)); ibmvfc_tgt_plogi_done()
3425 ibmvfc_init_tgt(tgt, ibmvfc_tgt_send_prli); ibmvfc_tgt_plogi_done()
3430 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); ibmvfc_tgt_plogi_done()
3435 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); ibmvfc_tgt_plogi_done()
3437 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_plogi_done()
3439 tgt_log(tgt, level, "Port Login failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", ibmvfc_tgt_plogi_done()
3446 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_plogi_done()
3453 * @tgt: ibmvfc target struct
3456 static void ibmvfc_tgt_send_plogi(struct ibmvfc_target *tgt) ibmvfc_tgt_send_plogi() argument
3459 struct ibmvfc_host *vhost = tgt->vhost; ibmvfc_tgt_send_plogi()
3465 kref_get(&tgt->kref); ibmvfc_tgt_send_plogi()
3466 tgt->logo_rcvd = 0; ibmvfc_tgt_send_plogi()
3469 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); ibmvfc_tgt_send_plogi()
3471 evt->tgt = tgt; ibmvfc_tgt_send_plogi()
3477 plogi->scsi_id = cpu_to_be64(tgt->scsi_id); ibmvfc_tgt_send_plogi()
3481 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_send_plogi()
3482 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_send_plogi()
3484 tgt_dbg(tgt, "Sent port login\n"); ibmvfc_tgt_send_plogi()
3494 struct ibmvfc_target *tgt = evt->tgt; ibmvfc_tgt_implicit_logout_done() local
3501 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_implicit_logout_done()
3505 tgt_dbg(tgt, "Implicit Logout succeeded\n"); ibmvfc_tgt_implicit_logout_done()
3508 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_implicit_logout_done()
3513 tgt_err(tgt, "Implicit Logout failed: rc=0x%02X\n", status); ibmvfc_tgt_implicit_logout_done()
3518 ibmvfc_init_tgt(tgt, ibmvfc_tgt_send_plogi); ibmvfc_tgt_implicit_logout_done()
3520 tgt->scsi_id != tgt->new_scsi_id) ibmvfc_tgt_implicit_logout_done()
3521 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_implicit_logout_done()
3522 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_implicit_logout_done()
3528 * @tgt: ibmvfc target struct
3531 static void ibmvfc_tgt_implicit_logout(struct ibmvfc_target *tgt) ibmvfc_tgt_implicit_logout() argument
3534 struct ibmvfc_host *vhost = tgt->vhost; ibmvfc_tgt_implicit_logout()
3540 kref_get(&tgt->kref); ibmvfc_tgt_implicit_logout()
3544 evt->tgt = tgt; ibmvfc_tgt_implicit_logout()
3550 mad->old_scsi_id = cpu_to_be64(tgt->scsi_id); ibmvfc_tgt_implicit_logout()
3552 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); ibmvfc_tgt_implicit_logout()
3555 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_implicit_logout()
3556 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_implicit_logout()
3558 tgt_dbg(tgt, "Sent Implicit Logout\n"); ibmvfc_tgt_implicit_logout()
3564 * @tgt: ibmvfc target struct
3570 struct ibmvfc_target *tgt) ibmvfc_adisc_needs_plogi()
3572 if (memcmp(&mad->fc_iu.response[2], &tgt->ids.port_name, ibmvfc_adisc_needs_plogi()
3573 sizeof(tgt->ids.port_name))) ibmvfc_adisc_needs_plogi()
3575 if (memcmp(&mad->fc_iu.response[4], &tgt->ids.node_name, ibmvfc_adisc_needs_plogi()
3576 sizeof(tgt->ids.node_name))) ibmvfc_adisc_needs_plogi()
3578 if (be32_to_cpu(mad->fc_iu.response[6]) != tgt->scsi_id) ibmvfc_adisc_needs_plogi()
3590 struct ibmvfc_target *tgt = evt->tgt; ibmvfc_tgt_adisc_done() local
3597 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_adisc_done()
3598 del_timer(&tgt->timer); ibmvfc_tgt_adisc_done()
3602 tgt_dbg(tgt, "ADISC succeeded\n"); ibmvfc_tgt_adisc_done()
3603 if (ibmvfc_adisc_needs_plogi(mad, tgt)) ibmvfc_tgt_adisc_done()
3604 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_adisc_done()
3610 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_adisc_done()
3613 tgt_info(tgt, "ADISC failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", ibmvfc_tgt_adisc_done()
3621 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_adisc_done()
3667 struct ibmvfc_target *tgt = evt->tgt; ibmvfc_tgt_adisc_cancel_done() local
3669 tgt_dbg(tgt, "ADISC cancel complete\n"); ibmvfc_tgt_adisc_cancel_done()
3672 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_adisc_cancel_done()
3678 * @tgt: ibmvfc target struct
3684 static void ibmvfc_adisc_timeout(struct ibmvfc_target *tgt) ibmvfc_adisc_timeout() argument
3686 struct ibmvfc_host *vhost = tgt->vhost; ibmvfc_adisc_timeout()
3692 tgt_dbg(tgt, "ADISC timeout\n"); ibmvfc_adisc_timeout()
3695 tgt->action != IBMVFC_TGT_ACTION_INIT_WAIT || ibmvfc_adisc_timeout()
3703 kref_get(&tgt->kref); ibmvfc_adisc_timeout()
3707 evt->tgt = tgt; ibmvfc_adisc_timeout()
3713 tmf->scsi_id = cpu_to_be64(tgt->scsi_id); ibmvfc_adisc_timeout()
3714 tmf->cancel_key = cpu_to_be32(tgt->cancel_key); ibmvfc_adisc_timeout()
3719 tgt_err(tgt, "Failed to send cancel event for ADISC. rc=%d\n", rc); ibmvfc_adisc_timeout()
3721 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_adisc_timeout()
3724 tgt_dbg(tgt, "Attempting to cancel ADISC\n"); ibmvfc_adisc_timeout()
3730 * @tgt: ibmvfc target struct
3739 static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt) ibmvfc_tgt_adisc() argument
3742 struct ibmvfc_host *vhost = tgt->vhost; ibmvfc_tgt_adisc()
3748 kref_get(&tgt->kref); ibmvfc_tgt_adisc()
3752 evt->tgt = tgt; ibmvfc_tgt_adisc()
3757 mad->iu.scsi_id = cpu_to_be64(tgt->scsi_id); ibmvfc_tgt_adisc()
3758 mad->iu.cancel_key = cpu_to_be32(tgt->cancel_key); ibmvfc_tgt_adisc()
3767 if (timer_pending(&tgt->timer)) ibmvfc_tgt_adisc()
3768 mod_timer(&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT * HZ)); ibmvfc_tgt_adisc()
3770 tgt->timer.data = (unsigned long) tgt; ibmvfc_tgt_adisc()
3771 tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT * HZ); ibmvfc_tgt_adisc()
3772 tgt->timer.function = (void (*)(unsigned long))ibmvfc_adisc_timeout; ibmvfc_tgt_adisc()
3773 add_timer(&tgt->timer); ibmvfc_tgt_adisc()
3776 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); ibmvfc_tgt_adisc()
3779 del_timer(&tgt->timer); ibmvfc_tgt_adisc()
3780 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_adisc()
3781 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_adisc()
3783 tgt_dbg(tgt, "Sent ADISC\n"); ibmvfc_tgt_adisc()
3793 struct ibmvfc_target *tgt = evt->tgt; ibmvfc_tgt_query_target_done() local
3800 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_query_target_done()
3803 tgt_dbg(tgt, "Query Target succeeded\n"); ibmvfc_tgt_query_target_done()
3804 tgt->new_scsi_id = be64_to_cpu(rsp->scsi_id); ibmvfc_tgt_query_target_done()
3805 if (be64_to_cpu(rsp->scsi_id) != tgt->scsi_id) ibmvfc_tgt_query_target_done()
3806 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); ibmvfc_tgt_query_target_done()
3808 ibmvfc_init_tgt(tgt, ibmvfc_tgt_adisc); ibmvfc_tgt_query_target_done()
3813 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_query_target); ibmvfc_tgt_query_target_done()
3820 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_query_target_done()
3822 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_query_target); ibmvfc_tgt_query_target_done()
3824 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); ibmvfc_tgt_query_target_done()
3826 tgt_log(tgt, level, "Query Target failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", ibmvfc_tgt_query_target_done()
3834 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_query_target_done()
3841 * @tgt: ibmvfc target struct
3844 static void ibmvfc_tgt_query_target(struct ibmvfc_target *tgt) ibmvfc_tgt_query_target() argument
3847 struct ibmvfc_host *vhost = tgt->vhost; ibmvfc_tgt_query_target()
3853 kref_get(&tgt->kref); ibmvfc_tgt_query_target()
3856 evt->tgt = tgt; ibmvfc_tgt_query_target()
3863 query_tgt->wwpn = cpu_to_be64(tgt->ids.port_name); ibmvfc_tgt_query_target()
3865 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); ibmvfc_tgt_query_target()
3868 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); ibmvfc_tgt_query_target()
3869 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_query_target()
3871 tgt_dbg(tgt, "Sent Query Target\n"); ibmvfc_tgt_query_target()
3884 struct ibmvfc_target *tgt; ibmvfc_alloc_target() local
3888 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_alloc_target()
3889 if (tgt->scsi_id == scsi_id) { ibmvfc_alloc_target()
3890 if (tgt->need_login) ibmvfc_alloc_target()
3891 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); ibmvfc_alloc_target()
3897 tgt = mempool_alloc(vhost->tgt_pool, GFP_NOIO); ibmvfc_alloc_target()
3898 if (!tgt) { ibmvfc_alloc_target()
3904 memset(tgt, 0, sizeof(*tgt)); ibmvfc_alloc_target()
3905 tgt->scsi_id = scsi_id; ibmvfc_alloc_target()
3906 tgt->new_scsi_id = scsi_id; ibmvfc_alloc_target()
3907 tgt->vhost = vhost; ibmvfc_alloc_target()
3908 tgt->need_login = 1; ibmvfc_alloc_target()
3909 tgt->cancel_key = vhost->task_set++; ibmvfc_alloc_target()
3910 init_timer(&tgt->timer); ibmvfc_alloc_target()
3911 kref_init(&tgt->kref); ibmvfc_alloc_target()
3912 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); ibmvfc_alloc_target()
3914 list_add_tail(&tgt->queue, &vhost->targets); ibmvfc_alloc_target()
4186 struct ibmvfc_target *tgt; ibmvfc_dev_init_to_do() local
4188 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_dev_init_to_do()
4189 if (tgt->action == IBMVFC_TGT_ACTION_INIT || ibmvfc_dev_init_to_do()
4190 tgt->action == IBMVFC_TGT_ACTION_INIT_WAIT) ibmvfc_dev_init_to_do()
4206 struct ibmvfc_target *tgt; __ibmvfc_work_to_do() local
4219 list_for_each_entry(tgt, &vhost->targets, queue) __ibmvfc_work_to_do()
4220 if (tgt->action == IBMVFC_TGT_ACTION_INIT) __ibmvfc_work_to_do()
4222 list_for_each_entry(tgt, &vhost->targets, queue) __ibmvfc_work_to_do()
4223 if (tgt->action == IBMVFC_TGT_ACTION_INIT_WAIT) __ibmvfc_work_to_do()
4279 * @tgt: ibmvfc target struct
4282 static void ibmvfc_tgt_add_rport(struct ibmvfc_target *tgt) ibmvfc_tgt_add_rport() argument
4284 struct ibmvfc_host *vhost = tgt->vhost; ibmvfc_tgt_add_rport()
4288 tgt_dbg(tgt, "Adding rport\n"); ibmvfc_tgt_add_rport()
4289 rport = fc_remote_port_add(vhost->host, 0, &tgt->ids); ibmvfc_tgt_add_rport()
4292 if (rport && tgt->action == IBMVFC_TGT_ACTION_DEL_RPORT) { ibmvfc_tgt_add_rport()
4293 tgt_dbg(tgt, "Deleting rport\n"); ibmvfc_tgt_add_rport()
4294 list_del(&tgt->queue); ibmvfc_tgt_add_rport()
4295 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DELETED_RPORT); ibmvfc_tgt_add_rport()
4298 del_timer_sync(&tgt->timer); ibmvfc_tgt_add_rport()
4299 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_tgt_add_rport()
4301 } else if (rport && tgt->action == IBMVFC_TGT_ACTION_DELETED_RPORT) { ibmvfc_tgt_add_rport()
4307 tgt_dbg(tgt, "rport add succeeded\n"); ibmvfc_tgt_add_rport()
4308 tgt->rport = rport; ibmvfc_tgt_add_rport()
4309 rport->maxframe_size = be16_to_cpu(tgt->service_parms.common.bb_rcv_sz) & 0x0fff; ibmvfc_tgt_add_rport()
4311 tgt->target_id = rport->scsi_target_id; ibmvfc_tgt_add_rport()
4312 if (be32_to_cpu(tgt->service_parms.class1_parms[0]) & 0x80000000) ibmvfc_tgt_add_rport()
4314 if (be32_to_cpu(tgt->service_parms.class2_parms[0]) & 0x80000000) ibmvfc_tgt_add_rport()
4316 if (be32_to_cpu(tgt->service_parms.class3_parms[0]) & 0x80000000) ibmvfc_tgt_add_rport()
4321 tgt_dbg(tgt, "rport add failed\n"); ibmvfc_tgt_add_rport()
4332 struct ibmvfc_target *tgt; ibmvfc_do_work() local
4382 list_for_each_entry(tgt, &vhost->targets, queue) ibmvfc_do_work()
4383 ibmvfc_init_tgt(tgt, ibmvfc_tgt_query_target); ibmvfc_do_work()
4387 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_do_work()
4388 if (tgt->action == IBMVFC_TGT_ACTION_INIT) { ibmvfc_do_work()
4389 tgt->job_step(tgt); ibmvfc_do_work()
4399 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_do_work()
4400 if (tgt->action == IBMVFC_TGT_ACTION_DEL_RPORT) { ibmvfc_do_work()
4401 tgt_dbg(tgt, "Deleting rport\n"); ibmvfc_do_work()
4402 rport = tgt->rport; ibmvfc_do_work()
4403 tgt->rport = NULL; ibmvfc_do_work()
4404 list_del(&tgt->queue); ibmvfc_do_work()
4405 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DELETED_RPORT); ibmvfc_do_work()
4409 del_timer_sync(&tgt->timer); ibmvfc_do_work()
4410 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_do_work()
4452 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_do_work()
4453 if (tgt->action == IBMVFC_TGT_ACTION_INIT) { ibmvfc_do_work()
4454 tgt->job_step(tgt); ibmvfc_do_work()
4699 struct ibmvfc_target *tgt; ibmvfc_rport_add_thread() local
4711 list_for_each_entry(tgt, &vhost->targets, queue) { ibmvfc_rport_add_thread()
4712 if (tgt->add_rport) { ibmvfc_rport_add_thread()
4714 tgt->add_rport = 0; ibmvfc_rport_add_thread()
4715 kref_get(&tgt->kref); ibmvfc_rport_add_thread()
4716 rport = tgt->rport; ibmvfc_rport_add_thread()
4719 ibmvfc_tgt_add_rport(tgt); ibmvfc_rport_add_thread()
4722 tgt_dbg(tgt, "Setting rport roles\n"); ibmvfc_rport_add_thread()
4723 fc_remote_port_rolechg(rport, tgt->ids.roles); ibmvfc_rport_add_thread()
4727 kref_put(&tgt->kref, ibmvfc_release_tgt); ibmvfc_rport_add_thread()
3569 ibmvfc_adisc_needs_plogi(struct ibmvfc_passthru_mad *mad, struct ibmvfc_target *tgt) ibmvfc_adisc_needs_plogi() argument
H A Dibmvfc.h636 struct ibmvfc_target *tgt; member in struct:ibmvfc_event
/linux-4.1.27/drivers/staging/lustre/lustre/lov/
H A Dlov_obd.c63 /* Keep a refcount of lov->tgt usage to prevent racing with addition/deletion.
76 static void __lov_del_obd(struct obd_device *obd, struct lov_tgt_desc *tgt);
87 struct lov_tgt_desc *tgt, *n; lov_putref() local
91 tgt = lov->lov_tgts[i]; lov_putref()
93 if (!tgt || !tgt->ltd_reap) lov_putref()
95 list_add(&tgt->ltd_kill, &kill); lov_putref()
97 * being the maximum tgt index for computing the lov_putref()
105 list_for_each_entry_safe(tgt, n, &kill, ltd_kill) { lov_putref()
106 list_del(&tgt->ltd_kill); lov_putref()
108 __lov_del_obd(obd, tgt); lov_putref()
186 CDEBUG(D_CONFIG, "Connected tgt idx %d %s (%s) %sactive\n", index, lov_connect_obd()
221 struct lov_tgt_desc *tgt; lov_connect() local
243 tgt = lov->lov_tgts[i]; lov_connect()
244 if (!tgt || obd_uuid_empty(&tgt->ltd_uuid)) lov_connect()
247 rc = lov_connect_obd(obd, i, tgt->ltd_activate, &lov->lov_ocd); lov_connect()
249 CERROR("%s: lov connect tgt %d failed: %d\n", lov_connect()
269 static int lov_disconnect_obd(struct obd_device *obd, struct lov_tgt_desc *tgt) lov_disconnect_obd() argument
276 osc_obd = class_exp2obd(tgt->ltd_exp); lov_disconnect_obd()
280 if (tgt->ltd_active) { lov_disconnect_obd()
281 tgt->ltd_active = 0; lov_disconnect_obd()
283 tgt->ltd_exp->exp_obd->obd_inactive = 1; lov_disconnect_obd()
302 rc = obd_disconnect(tgt->ltd_exp); lov_disconnect_obd()
305 tgt->ltd_uuid.uuid, rc); lov_disconnect_obd()
309 tgt->ltd_exp = NULL; lov_disconnect_obd()
358 struct lov_tgt_desc *tgt; lov_set_osc_active() local
366 tgt = lov->lov_tgts[index]; lov_set_osc_active()
367 if (!tgt) lov_set_osc_active()
373 if (ev == OBD_NOTIFY_ACTIVATE && tgt->ltd_exp == NULL && lov_set_osc_active()
374 obd_uuid_equals(uuid, &tgt->ltd_uuid)) { lov_set_osc_active()
377 obd_connect(NULL, &tgt->ltd_exp, tgt->ltd_obd, lov_set_osc_active()
380 if (!tgt->ltd_exp) lov_set_osc_active()
384 index, obd_uuid2str(&tgt->ltd_uuid), lov_set_osc_active()
385 tgt->ltd_exp->exp_handle.h_cookie); lov_set_osc_active()
386 if (obd_uuid_equals(uuid, &tgt->ltd_uuid)) lov_set_osc_active()
521 struct lov_tgt_desc *tgt; lov_add_target() local
542 tgt = lov->lov_tgts[index]; lov_add_target()
544 obd_uuid2str(&tgt->ltd_uuid), index); lov_add_target()
580 OBD_ALLOC_PTR(tgt); lov_add_target()
581 if (!tgt) { lov_add_target()
589 OBD_FREE_PTR(tgt); lov_add_target()
593 tgt->ltd_uuid = *uuidp; lov_add_target()
594 tgt->ltd_obd = tgt_obd; lov_add_target()
596 tgt->ltd_gen = gen; lov_add_target()
597 tgt->ltd_index = index; lov_add_target()
598 tgt->ltd_activate = active; lov_add_target()
599 lov->lov_tgts[index] = tgt; lov_add_target()
606 index, tgt->ltd_gen, lov->desc.ld_tgt_count); lov_add_target()
624 if (!tgt->ltd_exp) { lov_add_target()
630 rc = obd_set_info_async(NULL, tgt->ltd_exp, lov_add_target()
638 rc = lov_notify(obd, tgt->ltd_exp->exp_obd, lov_add_target()
645 obd_uuid2str(&tgt->ltd_uuid)); lov_add_target()
699 static void __lov_del_obd(struct obd_device *obd, struct lov_tgt_desc *tgt) __lov_del_obd() argument
703 LASSERT(tgt); __lov_del_obd()
704 LASSERT(tgt->ltd_reap); __lov_del_obd()
706 osc_obd = class_exp2obd(tgt->ltd_exp); __lov_del_obd()
708 CDEBUG(D_CONFIG, "Removing tgt %s : %s\n", __lov_del_obd()
709 tgt->ltd_uuid.uuid, __lov_del_obd()
712 if (tgt->ltd_exp) __lov_del_obd()
713 lov_disconnect_obd(obd, tgt); __lov_del_obd()
715 OBD_FREE_PTR(tgt); __lov_del_obd()
900 CERROR("lov tgt %d not cleaned! deathrow=%d, lovrc=%d\n", lov_cleanup()
1504 struct lov_tgt_desc *tgt = NULL; lov_iocontrol() local
1511 tgt = lov->lov_tgts[qctl->qc_idx]; lov_iocontrol()
1512 if (!tgt || !tgt->ltd_exp) lov_iocontrol()
1516 tgt = lov->lov_tgts[i]; lov_iocontrol()
1517 if (!tgt || lov_iocontrol()
1518 !obd_uuid_equals(&tgt->ltd_uuid, lov_iocontrol()
1522 if (tgt->ltd_exp == NULL) lov_iocontrol()
1534 LASSERT(tgt && tgt->ltd_exp); lov_iocontrol()
1540 rc = obd_quotactl(tgt->ltd_exp, oqctl); lov_iocontrol()
1544 qctl->obd_uuid = tgt->ltd_uuid; lov_iocontrol()
2025 struct lov_tgt_desc *tgt; lov_get_info() local
2028 tgt = lov->lov_tgts[info->idx]; lov_get_info()
2030 if (!tgt || !tgt->ltd_active) { lov_get_info()
2035 rc = obd_get_info(env, tgt->ltd_exp, keylen, key, lov_get_info()
2049 struct lov_tgt_desc *tgt; lov_get_info() local
2054 tgt = lov->lov_tgts[ost_idx]; lov_get_info()
2056 if (!tgt || !tgt->ltd_exp) { lov_get_info()
2061 *((__u64 *)val) = exp_connect_flags(tgt->ltd_exp); lov_get_info()
2085 struct lov_tgt_desc *tgt; lov_set_info_async() local
2123 tgt = lov->lov_tgts[((struct obd_id_info *)val)->idx]; lov_set_info_async()
2125 tgt = lov->lov_tgts[i]; lov_set_info_async()
2128 if (!tgt || !tgt->ltd_exp) lov_set_info_async()
2132 if (!tgt->ltd_active && !do_inactive) lov_set_info_async()
2143 &tgt->ltd_uuid)) lov_set_info_async()
2146 err = obd_set_info_async(env, tgt->ltd_exp, lov_set_info_async()
2150 err = obd_set_info_async(env, tgt->ltd_exp, lov_set_info_async()
2160 !obd_uuid_equals(info->uuid, &tgt->ltd_uuid)) lov_set_info_async()
2163 err = obd_set_info_async(env, tgt->ltd_exp, keylen, lov_set_info_async()
2169 !obd_uuid_equals(val, &tgt->ltd_uuid)) lov_set_info_async()
2172 err = obd_set_info_async(env, tgt->ltd_exp, lov_set_info_async()
2213 struct lov_tgt_desc *tgt; lov_quotactl() local
2228 /* for lov tgt */ lov_quotactl()
2233 tgt = lov->lov_tgts[i]; lov_quotactl()
2235 if (!tgt) lov_quotactl()
2238 if (!tgt->ltd_active || tgt->ltd_reap) { lov_quotactl()
2249 err = obd_quotactl(tgt->ltd_exp, oqctl); lov_quotactl()
2251 if (tgt->ltd_active && !rc) lov_quotactl()
H A Dlov_merge.c149 void lov_merge_attrs(struct obdo *tgt, struct obdo *src, u64 valid, lov_merge_attrs() argument
160 if (lov_size > tgt->o_size) lov_merge_attrs()
161 tgt->o_size = lov_size; lov_merge_attrs()
164 tgt->o_blocks += src->o_blocks; lov_merge_attrs()
166 tgt->o_blksize += src->o_blksize; lov_merge_attrs()
167 if (valid & OBD_MD_FLCTIME && tgt->o_ctime < src->o_ctime) lov_merge_attrs()
168 tgt->o_ctime = src->o_ctime; lov_merge_attrs()
169 if (valid & OBD_MD_FLMTIME && tgt->o_mtime < src->o_mtime) lov_merge_attrs()
170 tgt->o_mtime = src->o_mtime; lov_merge_attrs()
172 tgt->o_data_version += src->o_data_version; lov_merge_attrs()
174 memcpy(tgt, src, sizeof(*tgt)); lov_merge_attrs()
175 tgt->o_oi = lsm->lsm_oi; lov_merge_attrs()
177 tgt->o_size = lov_stripe_size(lsm, src->o_size, lov_merge_attrs()
183 tgt->o_valid &= ~OBD_MD_FLDATAVERSION; lov_merge_attrs()
H A Dlov_request.c143 struct lov_tgt_desc *tgt; lov_check_set() local
146 tgt = lov->lov_tgts[idx]; lov_check_set()
147 rc = !tgt || tgt->ltd_active || lov_check_set()
148 (tgt->ltd_exp && lov_check_set()
149 class_exp2cliimp(tgt->ltd_exp)->imp_connect_tried); lov_check_set()
163 struct lov_tgt_desc *tgt; lov_check_and_wait_active() local
168 tgt = lov->lov_tgts[ost_idx]; lov_check_and_wait_active()
170 if (unlikely(tgt == NULL)) { lov_check_and_wait_active()
175 if (likely(tgt->ltd_active)) { lov_check_and_wait_active()
180 if (tgt->ltd_exp && class_exp2cliimp(tgt->ltd_exp)->imp_connect_tried) { lov_check_and_wait_active()
192 if (tgt != NULL && tgt->ltd_active) lov_check_and_wait_active()
669 struct lov_tgt_desc *tgt; cb_statfs_update() local
687 tgt = lov->lov_tgts[lovreq->rq_idx]; cb_statfs_update()
688 if (!tgt || !tgt->ltd_active) cb_statfs_update()
691 tgtobd = class_exp2obd(tgt->ltd_exp); cb_statfs_update()
H A Dlov_dev.c399 struct lov_tgt_desc *tgt; lov_cl_add_target() local
406 tgt = obd->u.lov.lov_tgts[index]; lov_cl_add_target()
407 LASSERT(tgt != NULL); lov_cl_add_target()
408 LASSERT(tgt->ltd_obd != NULL); lov_cl_add_target()
410 if (!tgt->ltd_obd->obd_set_up) { lov_cl_add_target()
411 CERROR("Target %s not set up\n", obd_uuid2str(&tgt->ltd_uuid)); lov_cl_add_target()
420 tgt->ltd_obd->obd_lu_dev); lov_cl_add_target()
428 obd_uuid2str(&tgt->ltd_uuid)); lov_cl_add_target()
H A Dlproc_lov.c236 struct lov_tgt_desc *tgt = v; lov_tgt_seq_show() local
239 tgt->ltd_index, obd_uuid2str(&tgt->ltd_uuid), lov_tgt_seq_show()
240 tgt->ltd_active ? "" : "IN"); lov_tgt_seq_show()
H A Dlov_ea.c168 static void lov_tgt_maxbytes(struct lov_tgt_desc *tgt, __u64 *stripe_maxbytes) lov_tgt_maxbytes() argument
170 struct obd_import *imp = tgt->ltd_obd->u.cli.cl_import; lov_tgt_maxbytes()
172 if (imp == NULL || !tgt->ltd_active) { lov_tgt_maxbytes()
H A Dlov_pool.c257 struct lov_tgt_desc *tgt; pool_proc_show() local
264 tgt = pool_tgt(iter->pool, iter->idx); pool_proc_show()
266 if (tgt) pool_proc_show()
267 seq_printf(s, "%s\n", obd_uuid2str(&(tgt->ltd_uuid))); pool_proc_show()
H A Dlov_internal.h169 void lov_merge_attrs(struct obdo *tgt, struct obdo *src, u64 valid,
192 int qos_del_tgt(struct obd_device *obd, struct lov_tgt_desc *tgt);
/linux-4.1.27/drivers/firmware/
H A Discsi_ibft.c182 struct ibft_tgt *tgt; member in union:ibft_kobject::__anon3922
357 struct ibft_tgt *tgt = entry->tgt; ibft_attr_show_target() local
362 if (!tgt) ibft_attr_show_target()
367 str += sprintf(str, "%d\n", tgt->hdr.index); ibft_attr_show_target()
370 str += sprintf(str, "%d\n", tgt->hdr.flags); ibft_attr_show_target()
373 str += sprintf_ipaddr(str, tgt->ip_addr); ibft_attr_show_target()
376 str += sprintf(str, "%d\n", tgt->port); ibft_attr_show_target()
380 str += sprintf(str, "%x", (u8)tgt->lun[i]); ibft_attr_show_target()
384 str += sprintf(str, "%d\n", tgt->nic_assoc); ibft_attr_show_target()
387 str += sprintf(str, "%d\n", tgt->chap_type); ibft_attr_show_target()
390 str += sprintf_string(str, tgt->tgt_name_len, ibft_attr_show_target()
391 (char *)ibft_loc + tgt->tgt_name_off); ibft_attr_show_target()
394 str += sprintf_string(str, tgt->chap_name_len, ibft_attr_show_target()
395 (char *)ibft_loc + tgt->chap_name_off); ibft_attr_show_target()
398 str += sprintf_string(str, tgt->chap_secret_len, ibft_attr_show_target()
399 (char *)ibft_loc + tgt->chap_secret_off); ibft_attr_show_target()
402 str += sprintf_string(str, tgt->rev_chap_name_len, ibft_attr_show_target()
404 tgt->rev_chap_name_off); ibft_attr_show_target()
407 str += sprintf_string(str, tgt->rev_chap_secret_len, ibft_attr_show_target()
409 tgt->rev_chap_secret_off); ibft_attr_show_target()
504 struct ibft_tgt *tgt = entry->tgt; ibft_check_tgt_for() local
517 if (tgt->tgt_name_len) ibft_check_tgt_for()
522 if (tgt->chap_name_len) ibft_check_tgt_for()
527 if (tgt->rev_chap_name_len) ibft_check_tgt_for()
634 sizeof(*ibft_kobj->tgt)); ibft_create_kobject()
/linux-4.1.27/drivers/md/
H A Ddm-table.c242 struct dm_target *tgt = t->targets + i; dm_table_destroy() local
244 if (tgt->type->dtr) dm_table_destroy()
245 tgt->type->dtr(tgt); dm_table_destroy()
247 dm_put_target_type(tgt->type); dm_table_destroy()
671 struct dm_target *tgt; dm_table_add_target() local
681 tgt = t->targets + t->num_targets; dm_table_add_target()
682 memset(tgt, 0, sizeof(*tgt)); dm_table_add_target()
689 tgt->type = dm_get_target_type(type); dm_table_add_target()
690 if (!tgt->type) { dm_table_add_target()
696 if (dm_target_needs_singleton(tgt->type)) { dm_table_add_target()
705 if (dm_target_always_writeable(tgt->type) && !(t->mode & FMODE_WRITE)) { dm_table_add_target()
712 if (t->immutable_target_type != tgt->type) { dm_table_add_target()
717 } else if (dm_target_is_immutable(tgt->type)) { dm_table_add_target()
720 dm_device_name(t->md), tgt->type->name); dm_table_add_target()
723 t->immutable_target_type = tgt->type; dm_table_add_target()
726 tgt->table = t; dm_table_add_target()
727 tgt->begin = start; dm_table_add_target()
728 tgt->len = len; dm_table_add_target()
729 tgt->error = "Unknown error"; dm_table_add_target()
734 if (!adjoin(t, tgt)) { dm_table_add_target()
735 tgt->error = "Gap in table"; dm_table_add_target()
742 tgt->error = "couldn't split parameters (insufficient memory)"; dm_table_add_target()
746 r = tgt->type->ctr(tgt, argc, argv); dm_table_add_target()
751 t->highs[t->num_targets++] = tgt->begin + tgt->len - 1; dm_table_add_target()
753 if (!tgt->num_discard_bios && tgt->discards_supported) dm_table_add_target()
760 DMERR("%s: %s: %s", dm_device_name(t->md), type, tgt->error); dm_table_add_target()
761 dm_put_target_type(tgt->type); dm_table_add_target()
834 struct dm_target *tgt; dm_table_set_type() local
840 tgt = t->targets + i; dm_table_set_type()
841 if (dm_target_hybrid(tgt)) dm_table_set_type()
843 else if (dm_target_request_based(tgt)) dm_table_set_type()
945 struct dm_target *tgt; dm_table_alloc_md_mempools() local
955 tgt = t->targets + i; dm_table_alloc_md_mempools()
956 per_bio_data_size = max(per_bio_data_size, tgt->per_bio_data_size); dm_table_alloc_md_mempools()
H A Draid5.c1243 struct r5dev *tgt; mark_target_uptodate() local
1248 tgt = &sh->dev[target]; mark_target_uptodate()
1249 set_bit(R5_UPTODATE, &tgt->flags); mark_target_uptodate()
1250 BUG_ON(!test_bit(R5_Wantcompute, &tgt->flags)); mark_target_uptodate()
1251 clear_bit(R5_Wantcompute, &tgt->flags); mark_target_uptodate()
1297 struct r5dev *tgt = &sh->dev[target]; ops_run_compute5() local
1298 struct page *xor_dest = tgt->page; ops_run_compute5()
1308 BUG_ON(!test_bit(R5_Wantcompute, &tgt->flags)); ops_run_compute5()
1376 struct r5dev *tgt; ops_run_compute6_1() local
1393 tgt = &sh->dev[target]; ops_run_compute6_1()
1394 BUG_ON(!test_bit(R5_Wantcompute, &tgt->flags)); ops_run_compute6_1()
1395 dest = tgt->page; ops_run_compute6_1()
1434 struct r5dev *tgt = &sh->dev[target]; ops_run_compute6_2() local
1444 BUG_ON(!test_bit(R5_Wantcompute, &tgt->flags)); ops_run_compute6_2()
H A Ddm.c562 struct dm_target *tgt; dm_blk_ioctl() local
575 tgt = dm_table_get_target(map, 0); dm_blk_ioctl()
576 if (!tgt->type->ioctl) dm_blk_ioctl()
584 r = tgt->type->ioctl(tgt, cmd, arg); dm_blk_ioctl()
/linux-4.1.27/drivers/scsi/
H A Dvirtio_scsi.c153 struct virtio_scsi_target_state *tgt = virtscsi_complete_cmd() local
212 atomic_dec(&tgt->reqs); virtscsi_complete_cmd()
568 struct virtio_scsi_target_state *tgt = virtscsi_queuecommand_single() local
571 atomic_inc(&tgt->reqs); virtscsi_queuecommand_single()
585 struct virtio_scsi_target_state *tgt) virtscsi_pick_vq()
592 if (atomic_inc_return(&tgt->reqs) > 1) { virtscsi_pick_vq()
596 seq = read_seqcount_begin(&tgt->tgt_seq); virtscsi_pick_vq()
597 vq = tgt->req_vq; virtscsi_pick_vq()
598 } while (read_seqcount_retry(&tgt->tgt_seq, seq)); virtscsi_pick_vq()
601 write_seqcount_begin(&tgt->tgt_seq); virtscsi_pick_vq()
604 if (unlikely(atomic_read(&tgt->reqs) > 1)) { virtscsi_pick_vq()
605 vq = tgt->req_vq; virtscsi_pick_vq()
612 tgt->req_vq = vq = &vscsi->req_vqs[queue_num]; virtscsi_pick_vq()
614 write_seqcount_end(&tgt->tgt_seq); virtscsi_pick_vq()
625 struct virtio_scsi_target_state *tgt = virtscsi_queuecommand_multi() local
632 req_vq = virtscsi_pick_vq(vscsi, tgt); virtscsi_queuecommand_multi()
735 struct virtio_scsi_target_state *tgt = virtscsi_target_alloc() local
736 kmalloc(sizeof(*tgt), GFP_KERNEL); virtscsi_target_alloc()
737 if (!tgt) virtscsi_target_alloc()
740 seqcount_init(&tgt->tgt_seq); virtscsi_target_alloc()
741 atomic_set(&tgt->reqs, 0); virtscsi_target_alloc()
742 tgt->req_vq = &vscsi->req_vqs[0]; virtscsi_target_alloc()
744 starget->hostdata = tgt; virtscsi_target_alloc()
750 struct virtio_scsi_target_state *tgt = starget->hostdata; virtscsi_target_destroy() local
751 kfree(tgt); virtscsi_target_destroy()
584 virtscsi_pick_vq(struct virtio_scsi *vscsi, struct virtio_scsi_target_state *tgt) virtscsi_pick_vq() argument
H A DBusLogic.c1358 unsigned char *tgt, ch; blogic_rdconfig() local
1368 tgt = adapter->model; blogic_rdconfig()
1369 *tgt++ = 'B'; blogic_rdconfig()
1370 *tgt++ = 'T'; blogic_rdconfig()
1371 *tgt++ = '-'; blogic_rdconfig()
1373 *tgt++ = fpinfo->model[i]; blogic_rdconfig()
1374 *tgt++ = '\0'; blogic_rdconfig()
1488 tgt = adapter->model; blogic_rdconfig()
1489 *tgt++ = 'B'; blogic_rdconfig()
1490 *tgt++ = 'T'; blogic_rdconfig()
1491 *tgt++ = '-'; blogic_rdconfig()
1496 *tgt++ = ch; blogic_rdconfig()
1498 *tgt++ = '\0'; blogic_rdconfig()
1502 tgt = adapter->fw_ver; blogic_rdconfig()
1503 *tgt++ = id.fw_ver_digit1; blogic_rdconfig()
1504 *tgt++ = '.'; blogic_rdconfig()
1505 *tgt++ = id.fw_ver_digit2; blogic_rdconfig()
1507 *tgt++ = fw_ver_digit3; blogic_rdconfig()
1508 *tgt = '\0'; blogic_rdconfig()
1519 *tgt++ = fw_ver_letter; blogic_rdconfig()
1520 *tgt = '\0'; blogic_rdconfig()
3481 int tgt; blogic_show_info() local
3493 for (tgt = 0; tgt < adapter->maxdev; tgt++) { blogic_show_info()
3494 struct blogic_tgt_flags *tgt_flags = &adapter->tgt_flags[tgt]; blogic_show_info()
3497 seq_printf(m, " %2d %s", tgt, (tgt_flags->tagq_ok ? (tgt_flags->tagq_active ? " Active" : (adapter->tagq_ok & (1 << tgt) blogic_show_info()
3501 " %3d %3u %9u %9u\n", adapter->qdepth[tgt], adapter->active_cmds[tgt], tgt_stats[tgt].cmds_tried, tgt_stats[tgt].cmds_complete); blogic_show_info()
3506 for (tgt = 0; tgt < adapter->maxdev; tgt++) { blogic_show_info()
3507 struct blogic_tgt_flags *tgt_flags = &adapter->tgt_flags[tgt]; blogic_show_info()
3510 seq_printf(m, " %2d %9u %9u", tgt, tgt_stats[tgt].read_cmds, tgt_stats[tgt].write_cmds); blogic_show_info()
3511 if (tgt_stats[tgt].bytesread.billions > 0) blogic_show_info()
3512 seq_printf(m, " %9u%09u", tgt_stats[tgt].bytesread.billions, tgt_stats[tgt].bytesread.units); blogic_show_info()
3514 seq_printf(m, " %9u", tgt_stats[tgt].bytesread.units); blogic_show_info()
3515 if (tgt_stats[tgt].byteswritten.billions > 0) blogic_show_info()
3516 seq_printf(m, " %9u%09u\n", tgt_stats[tgt].byteswritten.billions, tgt_stats[tgt].byteswritten.units); blogic_show_info()
3518 seq_printf(m, " %9u\n", tgt_stats[tgt].byteswritten.units); blogic_show_info()
3523 for (tgt = 0; tgt < adapter->maxdev; tgt++) { blogic_show_info()
3524 struct blogic_tgt_flags *tgt_flags = &adapter->tgt_flags[tgt]; blogic_show_info()
3528 " %2d Read %9u %9u %9u %9u %9u\n", tgt, blogic_show_info()
3529 tgt_stats[tgt].read_sz_buckets[0], blogic_show_info()
3530 tgt_stats[tgt].read_sz_buckets[1], tgt_stats[tgt].read_sz_buckets[2], tgt_stats[tgt].read_sz_buckets[3], tgt_stats[tgt].read_sz_buckets[4]); blogic_show_info()
3532 " %2d Write %9u %9u %9u %9u %9u\n", tgt, blogic_show_info()
3533 tgt_stats[tgt].write_sz_buckets[0], blogic_show_info()
3534 tgt_stats[tgt].write_sz_buckets[1], tgt_stats[tgt].write_sz_buckets[2], tgt_stats[tgt].write_sz_buckets[3], tgt_stats[tgt].write_sz_buckets[4]); blogic_show_info()
3539 for (tgt = 0; tgt < adapter->maxdev; tgt++) { blogic_show_info()
3540 struct blogic_tgt_flags *tgt_flags = &adapter->tgt_flags[tgt]; blogic_show_info()
3544 " %2d Read %9u %9u %9u %9u %9u\n", tgt, blogic_show_info()
3545 tgt_stats[tgt].read_sz_buckets[5], blogic_show_info()
3546 tgt_stats[tgt].read_sz_buckets[6], tgt_stats[tgt].read_sz_buckets[7], tgt_stats[tgt].read_sz_buckets[8], tgt_stats[tgt].read_sz_buckets[9]); blogic_show_info()
3548 " %2d Write %9u %9u %9u %9u %9u\n", tgt, blogic_show_info()
3549 tgt_stats[tgt].write_sz_buckets[5], blogic_show_info()
3550 tgt_stats[tgt].write_sz_buckets[6], tgt_stats[tgt].write_sz_buckets[7], tgt_stats[tgt].write_sz_buckets[8], tgt_stats[tgt].write_sz_buckets[9]); blogic_show_info()
3559 for (tgt = 0; tgt < adapter->maxdev; tgt++) { blogic_show_info()
3560 struct blogic_tgt_flags *tgt_flags = &adapter->tgt_flags[tgt]; blogic_show_info()
3564 %2d %5d %5d %5d %5d %5d %5d %5d %5d %5d\n", tgt, tgt_stats[tgt].aborts_request, tgt_stats[tgt].aborts_tried, tgt_stats[tgt].aborts_done, tgt_stats[tgt].bdr_request, tgt_stats[tgt].bdr_tried, tgt_stats[tgt].bdr_done, tgt_stats[tgt].adatper_reset_req, tgt_stats[tgt].adapter_reset_attempt, tgt_stats[tgt].adapter_reset_done); blogic_show_info()
H A Desp_scsi.c492 static void esp_write_tgt_config3(struct esp *esp, int tgt) esp_write_tgt_config3() argument
495 u8 val = esp->target[tgt].esp_config3; esp_write_tgt_config3()
504 static void esp_write_tgt_sync(struct esp *esp, int tgt) esp_write_tgt_sync() argument
506 u8 off = esp->target[tgt].esp_offset; esp_write_tgt_sync()
507 u8 per = esp->target[tgt].esp_period; esp_write_tgt_sync()
640 int tgt, lun; esp_autosense() local
643 tgt = dev->id; esp_autosense()
648 esp_log_autosense("Doing auto-sense for tgt[%d] lun[%d]\n", esp_autosense()
649 tgt, lun); esp_autosense()
675 val = tgt; esp_autosense()
680 esp_write_tgt_sync(esp, tgt); esp_autosense()
681 esp_write_tgt_config3(esp, tgt); esp_autosense()
726 int tgt, lun, i; esp_maybe_execute_command() local
745 tgt = dev->id; esp_maybe_execute_command()
747 tp = &esp->target[tgt]; esp_maybe_execute_command()
849 val = tgt; esp_maybe_execute_command()
854 esp_write_tgt_sync(esp, tgt); esp_maybe_execute_command()
855 esp_write_tgt_config3(esp, tgt); esp_maybe_execute_command()
860 printk("ESP: tgt[%d] lun[%d] scsi_cmd [ ", tgt, lun); esp_maybe_execute_command()
893 int tgt = dev->id; esp_cmd_is_done() local
924 printk("esp%d: tgt[%d] lun[%d] AUTO SENSE[ ", esp_cmd_is_done()
925 esp->host->unique_id, tgt, lun); esp_cmd_is_done()
1198 "Reconnect, no lp tgt[%u] lun[%u]\n", esp_reconnect()
1468 int tgt; esp_msgin_reject() local
1470 tgt = cmd->device->id; esp_msgin_reject()
1471 tp = &esp->target[tgt]; esp_msgin_reject()
1609 int tgt = cmd->device->id; esp_msgin_extended() local
1611 tp = &esp->target[tgt]; esp_msgin_extended()
1891 esp_log_disconnect("Disconnecting tgt[%d] tag[%x:%x]\n", esp_process_event()
H A Dmesh.c81 #define ALLOW_SYNC(tgt) ((sync_targets >> (tgt)) & 1)
82 #define ALLOW_RESEL(tgt) ((resel_targets >> (tgt)) & 1)
83 #define ALLOW_DEBUG(tgt) ((debug_targets >> (tgt)) & 1)
98 u8 tgt; member in struct:dbglog
224 tlp->tgt = ms->conn_tgt; dlog()
277 lp->bs1, lp->bs0, lp->phase, lp->tgt); dumpslog()
292 static inline void dumplog(struct mesh_state *ms, int tgt) dumplog() argument
417 printk(KERN_DEBUG "mesh_start: %p tgt=%d cmd=", cmd, id); mesh_start_cmd()
883 printk(KERN_ERR "mesh: reselected in phase %d/%d tgt %d\n", reselected()
959 printk(KERN_ERR "mesh: reselected by tgt %d but no cmd!\n", t); reselected()
963 dlog(ms, "resel prev tgt=%d", prev); reselected()
987 int tgt; handle_reset() local
992 for (tgt = 0; tgt < 8; ++tgt) { handle_reset()
993 tp = &ms->tgts[tgt]; handle_reset()
999 ms->tgts[tgt].sdtr_state = do_sdtr; handle_reset()
1000 ms->tgts[tgt].sync_params = ASYNC_PARAMS; handle_reset()
1848 int tgt, minper; mesh_probe() local
1930 for (tgt = 0; tgt < 8; ++tgt) { mesh_probe()
1931 ms->tgts[tgt].sdtr_state = do_sdtr; mesh_probe()
1932 ms->tgts[tgt].sync_params = ASYNC_PARAMS; mesh_probe()
1933 ms->tgts[tgt].current_req = NULL; mesh_probe()
H A DNCR5380.h108 #define TCR_ASSERT_REQ 0x08 /* tgt rw assert REQ */
109 #define TCR_ASSERT_MSG 0x04 /* tgt rw assert MSG */
110 #define TCR_ASSERT_CD 0x02 /* tgt rw assert CD */
111 #define TCR_ASSERT_IO 0x01 /* tgt rw assert IO */
148 * the falling edge of REQ (ini) or ACK (tgt)
H A Dqlogicpti.c969 int tgt = sdev->id; qlogicpti_slave_configure() local
975 qpti->dev_param[tgt].device_flags |= 0x10; qlogicpti_slave_configure()
977 qpti->dev_param[tgt].synchronous_offset = 0; qlogicpti_slave_configure()
978 qpti->dev_param[tgt].synchronous_period = 0; qlogicpti_slave_configure()
982 qpti->dev_param[tgt].device_flags |= 0x20; qlogicpti_slave_configure()
985 param[1] = (tgt << 8); qlogicpti_slave_configure()
986 param[2] = (qpti->dev_param[tgt].device_flags << 8); qlogicpti_slave_configure()
987 if (qpti->dev_param[tgt].device_flags & 0x10) { qlogicpti_slave_configure()
988 param[3] = (qpti->dev_param[tgt].synchronous_offset << 8) | qlogicpti_slave_configure()
989 qpti->dev_param[tgt].synchronous_period; qlogicpti_slave_configure()
1224 printk(KERN_WARNING "qlogicpti%d: Aborting cmd for tgt[%d] lun[%d]\n", qlogicpti_abort()
H A Dmegaraid.c460 int tgt; mega_get_ldrv_num() local
463 tgt = cmd->device->id; mega_get_ldrv_num()
465 if ( tgt > adapter->this_id ) mega_get_ldrv_num()
466 tgt--; /* we do not get inquires for initiator id */ mega_get_ldrv_num()
468 ldrv_num = (channel * 15) + tgt; mega_get_ldrv_num()
2341 int tgt; proc_show_pdrv() local
2378 for( tgt = 0; tgt <= MAX_TARGET; tgt++ ) { proc_show_pdrv()
2380 i = channel*16 + tgt; proc_show_pdrv()
2386 channel, tgt); proc_show_pdrv()
2391 channel, tgt); proc_show_pdrv()
2396 channel, tgt); proc_show_pdrv()
2401 channel, tgt); proc_show_pdrv()
2406 channel, tgt); proc_show_pdrv()
2416 if( mega_internal_dev_inquiry(adapter, channel, tgt, proc_show_pdrv()
4036 * @tgt - ID of this device
4042 mega_internal_dev_inquiry(adapter_t *adapter, u8 ch, u8 tgt, mega_internal_dev_inquiry() argument
4073 pthru->target = (adapter->flag & BOARD_40LD) ? (ch << 4)|tgt : tgt; mega_internal_dev_inquiry()
H A Dxen-scsifront.c987 unsigned int hst, chn, tgt, lun; scsifront_do_lun_hotplug() local
1009 "%u:%u:%u:%u", &hst, &chn, &tgt, &lun); scsifront_do_lun_hotplug()
1026 if (scsi_add_device(info->host, chn, tgt, lun)) { scsifront_do_lun_hotplug()
1037 sdev = scsi_device_lookup(info->host, chn, tgt, lun); scsifront_do_lun_hotplug()
H A Ddc395x.c170 #define MK_RES(drv,did,msg,tgt) ((int)(drv)<<24 | (int)(did)<<16 | (int)(msg)<<8 | (int)(tgt))
171 #define MK_RES_LNX(drv,did,msg,tgt) ((int)(drv)<<24 | (int)(did)<<16 | (int)(msg)<<8 | (int)(tgt)<<1)
173 #define SET_RES_TARGET(who,tgt) { who &= ~RES_TARGET; who |= (int)(tgt); }
174 #define SET_RES_TARGET_LNX(who,tgt) { who &= ~RES_TARGET_LNX; who |= (int)(tgt) << 1; }
H A Dlibiscsi.c2435 ISCSI_DBG_EH(session, "tgt Reset [sc %p tgt %s]\n", sc, iscsi_eh_target_reset()
2491 ISCSI_DBG_EH(session, "tgt %s reset result = %s\n", session->targetname, iscsi_eh_target_reset()
/linux-4.1.27/drivers/staging/unisys/uislib/
H A Duisqueue.c228 uisqueue_interlocked_or(unsigned long long __iomem *tgt, uisqueue_interlocked_or() argument
234 j = readq(tgt); uisqueue_interlocked_or()
237 j = cmpxchg((__force unsigned long long *)tgt, i, i | set); uisqueue_interlocked_or()
246 uisqueue_interlocked_and(unsigned long long __iomem *tgt, uisqueue_interlocked_and() argument
252 j = readq(tgt); uisqueue_interlocked_and()
255 j = cmpxchg((__force unsigned long long *)tgt, i, i & set); uisqueue_interlocked_and()
/linux-4.1.27/include/linux/netfilter_arp/
H A Darp_tables.h4 * src, tgt, src_mask, tgt_mask, arpop, arpop_mask are always stored in
/linux-4.1.27/drivers/staging/lustre/lustre/obdclass/
H A Dcapa.c111 hlist_del_init(&ocapa->u.tgt.c_hash); capa_delete()
127 u.tgt.c_hash) cleanup_capa_hash()
157 hlist_for_each_entry(ocapa, head, u.tgt.c_hash) { hlist_for_each_entry()
208 hlist_add_head(&ocapa->u.tgt.c_hash, head); capa_add()
H A Dgenops.c525 otherwise any client connected to the tgt is returned. */ class_find_client_obd()
/linux-4.1.27/arch/xtensa/variants/fsf/include/variant/
H A Dcore.h104 #define XCHAL_HW_MIN_VERSION_MAJOR 2200 /* major v of earliest tgt hw */
105 #define XCHAL_HW_MIN_VERSION_MINOR 0 /* minor v of earliest tgt hw */
106 #define XCHAL_HW_MAX_VERSION_MAJOR 2200 /* major v of latest tgt hw */
107 #define XCHAL_HW_MAX_VERSION_MINOR 0 /* minor v of latest tgt hw */
/linux-4.1.27/drivers/staging/lustre/lustre/include/
H A Dlustre_capa.h91 struct target_capa tgt; member in union:obd_capa::__anon10040
212 INIT_HLIST_NODE(&ocapa->u.tgt.c_hash); alloc_capa()
243 hnode = &ocapa->u.tgt.c_hash; capa_put()
/linux-4.1.27/drivers/block/rsxx/
H A Ddma.c115 unsigned int tgt; rsxx_get_dma_tgt() local
117 tgt = (addr8 >> card->_stripe.target_shift) & card->_stripe.target_mask; rsxx_get_dma_tgt()
119 return tgt; rsxx_get_dma_tgt()
696 int tgt; rsxx_dma_queue_bio() local
712 tgt = rsxx_get_dma_tgt(card, addr8); rsxx_dma_queue_bio()
715 st = rsxx_queue_discard(card, &dma_list[tgt], laddr, rsxx_dma_queue_bio()
720 dma_cnt[tgt]++; rsxx_dma_queue_bio()
731 tgt = rsxx_get_dma_tgt(card, addr8); bio_for_each_segment()
737 st = rsxx_queue_dma(card, &dma_list[tgt], bio_for_each_segment()
745 dma_cnt[tgt]++; bio_for_each_segment()
/linux-4.1.27/arch/mips/bcm63xx/
H A Dirq.c79 unsigned int src, tgt; \
87 for (src = 0, tgt = (width / 32); src < (width / 32); src++) { \
92 pending[--tgt] = val; \
/linux-4.1.27/drivers/staging/lustre/lustre/obdecho/
H A Decho_client.c698 struct obd_device *tgt; echo_device_alloc() local
723 tgt = class_name2obd(lustre_cfg_string(cfg, 1)); echo_device_alloc()
724 if (tgt == NULL) { echo_device_alloc()
725 CERROR("Can not find tgt device %s\n", echo_device_alloc()
731 next = tgt->obd_lu_dev; echo_device_alloc()
732 if (!strcmp(tgt->obd_type->typ_name, LUSTRE_MDT_NAME)) { echo_device_alloc()
756 tgt_type_name = tgt->obd_type->typ_name; echo_device_alloc()
2032 struct obd_device *tgt; echo_client_setup() local
2042 tgt = class_name2obd(lustre_cfg_string(lcfg, 1)); echo_client_setup()
2043 if (!tgt || !tgt->obd_attached || !tgt->obd_set_up) { echo_client_setup()
2071 rc = obd_connect(env, &ec->ec_exp, tgt, &echo_uuid, ocd, NULL); echo_client_setup()
2073 /* Turn off pinger because it connects to tgt obd directly. */ echo_client_setup()
2074 spin_lock(&tgt->obd_dev_lock); echo_client_setup()
2076 spin_unlock(&tgt->obd_dev_lock); echo_client_setup()
/linux-4.1.27/arch/xtensa/variants/dc232b/include/variant/
H A Dcore.h109 #define XCHAL_HW_MIN_VERSION_MAJOR 2210 /* major v of earliest tgt hw */
110 #define XCHAL_HW_MIN_VERSION_MINOR 1 /* minor v of earliest tgt hw */
112 #define XCHAL_HW_MAX_VERSION_MAJOR 2210 /* major v of latest tgt hw */
113 #define XCHAL_HW_MAX_VERSION_MINOR 1 /* minor v of latest tgt hw */
/linux-4.1.27/arch/xtensa/variants/dc233c/include/variant/
H A Dcore.h148 #define XCHAL_HW_MIN_VERSION_MAJOR 2400 /* major v of earliest tgt hw */
149 #define XCHAL_HW_MIN_VERSION_MINOR 1 /* minor v of earliest tgt hw */
151 #define XCHAL_HW_MAX_VERSION_MAJOR 2400 /* major v of latest tgt hw */
152 #define XCHAL_HW_MAX_VERSION_MINOR 1 /* minor v of latest tgt hw */
/linux-4.1.27/drivers/xen/
H A Dxen-scsiback.c80 unsigned int tgt; /* target */ member in struct:ids_tuple
649 (entry->v.tgt == v->tgt) && list_for_each_entry()
673 vir.tgt = ring_req->id; prepare_pending_reqs()
679 pr_debug("the v2p of (chn:%d, tgt:%d, lun:%d) doesn't exist.\n", prepare_pending_reqs()
680 vir.chn, vir.tgt, vir.lun); prepare_pending_reqs()
924 (entry->v.tgt == v->tgt) && list_for_each_entry()
974 (entry->v.tgt == v->tgt) && list_for_each_entry()
1051 &vir.hst, &vir.chn, &vir.tgt, &vir.lun); scsiback_do_1lun_hotplug()
/linux-4.1.27/include/uapi/linux/netfilter_arp/
H A Darp_tables.h4 * src, tgt, src_mask, tgt_mask, arpop, arpop_mask are always stored in
44 struct in_addr src, tgt; member in struct:arpt_arp
/linux-4.1.27/drivers/staging/lustre/lustre/ptlrpc/
H A Dsec_config.c477 static void target2fsname(const char *tgt, char *fsname, int buflen) target2fsname() argument
482 ptr = strrchr(tgt, '-'); target2fsname()
493 len = strlen(tgt); target2fsname()
495 len = ptr - tgt; target2fsname()
498 memcpy(fsname, tgt, len); target2fsname()
/linux-4.1.27/drivers/staging/unisys/include/
H A Duisqueue.h77 unsigned long long uisqueue_interlocked_or(unsigned long long __iomem *tgt,
79 unsigned long long uisqueue_interlocked_and(unsigned long long __iomem *tgt,
/linux-4.1.27/drivers/crypto/caam/
H A Derror.c135 idx_str = "jump tgt desc idx"; report_ccb_status()
184 idx_str = "jump tgt desc idx"; report_deco_status()
/linux-4.1.27/drivers/block/aoe/
H A Daoecmd.c262 tt = d->tgt; /* last used target */ newframe()
278 d->tgt = tt; newframe()
282 if (tt == d->tgt) { /* we've looped and found nada */ newframe()
1450 t = *d->tgt; aoecmd_ata_id()
1496 d->tgt = tt + (d->tgt - d->targets); grow_targets()
H A Daoe.h184 struct aoetgt **tgt; /* target in use when working */ member in struct:aoedev
H A Daoedev.c475 d->tgt = d->targets; aoedev_by_aoeaddr()
/linux-4.1.27/net/core/
H A Dskbuff.c2609 * @tgt: buffer into which tail data gets added
2614 * the length of the skb, from skb to tgt. Returns number bytes shifted.
2617 * If @tgt runs out of frags, the whole operation is aborted.
2619 * Skb cannot include anything else but paged data while tgt is allowed
2625 int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen) skb_shift() argument
2635 to = skb_shinfo(tgt)->nr_frags; skb_shift()
2642 !skb_can_coalesce(tgt, to, skb_frag_page(fragfrom), skb_shift()
2651 skb_prepare_for_shift(tgt)) skb_shift()
2656 fragto = &skb_shinfo(tgt)->frags[merge]; skb_shift()
2673 if (skb_prepare_for_shift(skb) || skb_prepare_for_shift(tgt)) skb_shift()
2681 fragto = &skb_shinfo(tgt)->frags[to]; skb_shift()
2704 /* Ready to "commit" this state change to tgt */ skb_shift()
2705 skb_shinfo(tgt)->nr_frags = to; skb_shift()
2709 fragto = &skb_shinfo(tgt)->frags[merge]; skb_shift()
2724 /* Most likely the tgt won't ever need its checksum anymore, skb on skb_shift()
2727 tgt->ip_summed = CHECKSUM_PARTIAL; skb_shift()
2734 tgt->len += shiftlen; skb_shift()
2735 tgt->data_len += shiftlen; skb_shift()
2736 tgt->truesize += shiftlen; skb_shift()
/linux-4.1.27/drivers/net/
H A Dnetconsole.c61 MODULE_PARM_DESC(netconsole, " netconsole=[src-port]@[src-ip]/[dev],[tgt-port]@<tgt-ip>/[tgt-macaddr]");
/linux-4.1.27/drivers/scsi/csiostor/
H A Dcsio_lnode.h194 * new tgt found
H A Dcsio_mb.c292 * @tgt: Turn on target mode.
301 bool wr, bool init, bool tgt, bool cofld, csio_mb_caps_config()
325 if (tgt) csio_mb_caps_config()
300 csio_mb_caps_config(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo, bool wr, bool init, bool tgt, bool cofld, void (*cbfn) (struct csio_hw *, struct csio_mb *)) csio_mb_caps_config() argument
/linux-4.1.27/drivers/staging/lustre/lustre/llite/
H A Dnamei.c761 const char *tgt, int mode, int rdev, ll_new_node()
771 if (unlikely(tgt != NULL)) ll_new_node()
772 tgt_len = strlen(tgt) + 1; ll_new_node()
783 err = md_create(sbi->ll_md_exp, op_data, tgt, tgt_len, mode, ll_new_node()
760 ll_new_node(struct inode *dir, struct dentry *dentry, const char *tgt, int mode, int rdev, __u32 opc) ll_new_node() argument
/linux-4.1.27/drivers/pci/host/
H A Dpci-mvebu.c847 unsigned int *tgt, mvebu_get_tgt_attr()
854 *tgt = -1; mvebu_get_tgt_attr()
879 *tgt = DT_CPUADDR_TO_TARGET(cpuaddr); mvebu_get_tgt_attr()
1017 dev_err(&pdev->dev, "PCIe%d.%d: cannot get tgt/attr for mem window\n", mvebu_pcie_probe()
845 mvebu_get_tgt_attr(struct device_node *np, int devfn, unsigned long type, unsigned int *tgt, unsigned int *attr) mvebu_get_tgt_attr() argument
/linux-4.1.27/arch/mips/net/
H A Dbpf_jit.c489 static inline u32 b_imm(unsigned int tgt, struct jit_ctx *ctx) b_imm() argument
496 * so tgt is always after pc. tgt is the instruction offset b_imm()
507 return ctx->offsets[tgt] - b_imm()
/linux-4.1.27/drivers/scsi/fnic/
H A Dfnic_res.c162 "vNIC flags 0x%x luns per tgt %d\n", fnic_get_vnic_config()
/linux-4.1.27/drivers/crypto/
H A Dn2_core.c1745 u64 tgt = mdesc_arc_target(mdesc, arc); mdesc_for_each_arc() local
1746 const char *name = mdesc_node_name(mdesc, tgt); mdesc_for_each_arc()
1751 id = mdesc_get_property(mdesc, tgt, "id", NULL); mdesc_for_each_arc()
/linux-4.1.27/drivers/staging/lustre/lustre/mdc/
H A Dmdc_reint.c260 * tgt, for symlinks or lov MD data. mdc_create()
/linux-4.1.27/fs/gfs2/
H A Dtrace_gfs2.h117 TP_printk("%u,%u glock %d:%lld state %s to %s tgt:%s dmt:%s flags:%s",
/linux-4.1.27/arch/arm/net/
H A Dbpf_jit_32.c388 static inline u32 b_imm(unsigned tgt, struct jit_ctx *ctx) b_imm() argument
398 imm = ctx->offsets[tgt] + ctx->prologue_bytes - (ctx->idx * 4 + 8); b_imm()
/linux-4.1.27/drivers/media/usb/gspca/
H A Dstk1135.c289 { 0x22e, 0x0c3c }, { 0x267, 0x1010 }, /* AE tgt ctl, gain lim */ stk1135_configure_mt9m112()
/linux-4.1.27/drivers/media/usb/pvrusb2/
H A Dpvrusb2-io.c378 " poolCheck stream=%p cur=%d tgt=%d", pvr2_stream_achieve_buffer_count()
/linux-4.1.27/fs/btrfs/
H A Ddev-replace.c144 * allow 'btrfs dev replace_cancel' if src/tgt device is btrfs_init_dev_replace()
H A Dvolumes.c4911 /* plus the variable array for the tgt dev */ alloc_btrfs_bio()
4914 * plus the raid_map, which includes both the tgt dev alloc_btrfs_bio()
/linux-4.1.27/net/ipv4/netfilter/
H A Darp_tables.c166 FWINV(((tgt_ipaddr & arpinfo->tmsk.s_addr) != arpinfo->tgt.s_addr), arp_packet_match()
178 &arpinfo->tgt.s_addr, arp_packet_match()
/linux-4.1.27/drivers/scsi/lpfc/
H A Dlpfc.h61 #define LPFC_TGTQ_INTERVAL 40000 /* Min amount of time between tgt
H A Dlpfc_scsi.c3713 "tgt x%x lun x%llx cmnd x%x rsplen x%x\n", lpfc_handle_fcp_err()
3724 "tgt x%x lun x%llx cmnd x%x rspInfo3 x%x\n", lpfc_handle_fcp_err()
H A Dlpfc_attr.c4534 "FCP2 devices [0] - issue tgt reset, [1] - no tgt reset");
/linux-4.1.27/drivers/net/wireless/iwlegacy/
H A D4965.c1184 D_TXPOWER("rate %d sat %d reg %d usr %d tgt %d\n", i, il4965_fill_txpower_tbl()
/linux-4.1.27/arch/powerpc/kvm/
H A Dbook3s_xics.c820 XICS_DBG("XICS_RM: H_%x completing, act: %x state: %lx tgt: %p\n", kvmppc_xics_rm_complete()
/linux-4.1.27/drivers/scsi/libfc/
H A Dfc_fcp.c917 FC_FCP_DBG(fsp, "tgt %6.6x xfer len %zx greater than expected, " fc_fcp_resp()
/linux-4.1.27/drivers/edac/
H A Dsb_edac.c1110 edac_dbg(0, "CH#%d RIR#%d INTL#%d, offset %u.%03u GB (0x%016Lx), tgt: %d, reg=0x%08x\n", get_memory_layout()
/linux-4.1.27/drivers/staging/lustre/lustre/include/lustre/
H A Dlustre_idl.h1056 static inline void lustre_handle_copy(struct lustre_handle *tgt, lustre_handle_copy() argument
1059 tgt->cookie = src->cookie; lustre_handle_copy()
/linux-4.1.27/kernel/locking/
H A Dlockdep.c1106 struct held_lock *tgt, print_circular_lock_scenario()
1110 struct lock_class *target = hlock_class(tgt); print_circular_lock_scenario()
1105 print_circular_lock_scenario(struct held_lock *src, struct held_lock *tgt, struct lock_list *prt) print_circular_lock_scenario() argument
/linux-4.1.27/drivers/net/wireless/b43/
H A Dphy_g.c1973 "measuring failed. (cur=%d, tgt=%d). Disabling TX power " b43_phy_init_pctl()
/linux-4.1.27/include/linux/
H A Dskbuff.h2703 int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen);
/linux-4.1.27/arch/powerpc/xmon/
H A Dppc-opc.c3344 { "tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, { RA, RB } },

Completed in 6535 milliseconds