Lines Matching refs:rport
59 struct nvme_fc_rport *rport; member
71 struct nvme_fc_rport *rport; member
158 struct nvme_fc_rport *rport; member
502 struct nvme_fc_rport *rport) in nvme_fc_signal_discovery_scan() argument
508 if (!(rport->remoteport.port_role & FC_PORT_ROLE_NVME_DISCOVERY)) in nvme_fc_signal_discovery_scan()
516 rport->remoteport.node_name, rport->remoteport.port_name); in nvme_fc_signal_discovery_scan()
523 struct nvme_fc_rport *rport = in nvme_fc_free_rport() local
526 localport_to_lport(rport->remoteport.localport); in nvme_fc_free_rport()
529 WARN_ON(rport->remoteport.port_state != FC_OBJSTATE_DELETED); in nvme_fc_free_rport()
530 WARN_ON(!list_empty(&rport->ctrl_list)); in nvme_fc_free_rport()
534 list_del(&rport->endp_list); in nvme_fc_free_rport()
537 WARN_ON(!list_empty(&rport->disc_list)); in nvme_fc_free_rport()
538 ida_free(&lport->endp_cnt, rport->remoteport.port_num); in nvme_fc_free_rport()
540 kfree(rport); in nvme_fc_free_rport()
546 nvme_fc_rport_put(struct nvme_fc_rport *rport) in nvme_fc_rport_put() argument
548 kref_put(&rport->ref, nvme_fc_free_rport); in nvme_fc_rport_put()
552 nvme_fc_rport_get(struct nvme_fc_rport *rport) in nvme_fc_rport_get() argument
554 return kref_get_unless_zero(&rport->ref); in nvme_fc_rport_get()
592 struct nvme_fc_rport *rport; in nvme_fc_attach_to_suspended_rport() local
598 list_for_each_entry(rport, &lport->endp_list, endp_list) { in nvme_fc_attach_to_suspended_rport()
599 if (rport->remoteport.node_name != pinfo->node_name || in nvme_fc_attach_to_suspended_rport()
600 rport->remoteport.port_name != pinfo->port_name) in nvme_fc_attach_to_suspended_rport()
603 if (!nvme_fc_rport_get(rport)) { in nvme_fc_attach_to_suspended_rport()
604 rport = ERR_PTR(-ENOLCK); in nvme_fc_attach_to_suspended_rport()
610 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_attach_to_suspended_rport()
613 if (rport->remoteport.port_state != FC_OBJSTATE_DELETED) { in nvme_fc_attach_to_suspended_rport()
615 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_attach_to_suspended_rport()
616 nvme_fc_rport_put(rport); in nvme_fc_attach_to_suspended_rport()
620 rport->remoteport.port_role = pinfo->port_role; in nvme_fc_attach_to_suspended_rport()
621 rport->remoteport.port_id = pinfo->port_id; in nvme_fc_attach_to_suspended_rport()
622 rport->remoteport.port_state = FC_OBJSTATE_ONLINE; in nvme_fc_attach_to_suspended_rport()
623 rport->dev_loss_end = 0; in nvme_fc_attach_to_suspended_rport()
629 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) in nvme_fc_attach_to_suspended_rport()
632 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_attach_to_suspended_rport()
634 return rport; in nvme_fc_attach_to_suspended_rport()
637 rport = NULL; in nvme_fc_attach_to_suspended_rport()
642 return rport; in nvme_fc_attach_to_suspended_rport()
646 __nvme_fc_set_dev_loss_tmo(struct nvme_fc_rport *rport, in __nvme_fc_set_dev_loss_tmo() argument
650 rport->remoteport.dev_loss_tmo = pinfo->dev_loss_tmo; in __nvme_fc_set_dev_loss_tmo()
652 rport->remoteport.dev_loss_tmo = NVME_FC_DEFAULT_DEV_LOSS_TMO; in __nvme_fc_set_dev_loss_tmo()
766 nvme_fc_abort_lsops(struct nvme_fc_rport *rport) in nvme_fc_abort_lsops() argument
772 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_abort_lsops()
774 list_for_each_entry(lsop, &rport->ls_req_list, lsreq_list) { in nvme_fc_abort_lsops()
777 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_abort_lsops()
778 rport->lport->ops->ls_abort(&rport->lport->localport, in nvme_fc_abort_lsops()
779 &rport->remoteport, in nvme_fc_abort_lsops()
784 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_abort_lsops()
855 struct nvme_fc_rport *rport = remoteport_to_rport(portptr); in nvme_fc_unregister_remoteport() local
862 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_unregister_remoteport()
865 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_unregister_remoteport()
870 rport->dev_loss_end = jiffies + (portptr->dev_loss_tmo * HZ); in nvme_fc_unregister_remoteport()
872 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) { in nvme_fc_unregister_remoteport()
883 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_unregister_remoteport()
885 nvme_fc_abort_lsops(rport); in nvme_fc_unregister_remoteport()
887 if (atomic_read(&rport->act_ctrl_cnt) == 0) in nvme_fc_unregister_remoteport()
888 rport->lport->ops->remoteport_delete(portptr); in nvme_fc_unregister_remoteport()
895 nvme_fc_rport_put(rport); in nvme_fc_unregister_remoteport()
912 struct nvme_fc_rport *rport = remoteport_to_rport(remoteport); in nvme_fc_rescan_remoteport() local
914 nvme_fc_signal_discovery_scan(rport->lport, rport); in nvme_fc_rescan_remoteport()
922 struct nvme_fc_rport *rport = remoteport_to_rport(portptr); in nvme_fc_set_remoteport_devloss() local
925 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_set_remoteport_devloss()
928 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_set_remoteport_devloss()
933 rport->remoteport.dev_loss_tmo = dev_loss_tmo; in nvme_fc_set_remoteport_devloss()
935 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_set_remoteport_devloss()
1040 struct nvme_fc_rport *rport = lsop->rport; in __nvme_fc_finish_ls_req() local
1044 spin_lock_irqsave(&rport->lock, flags); in __nvme_fc_finish_ls_req()
1047 spin_unlock_irqrestore(&rport->lock, flags); in __nvme_fc_finish_ls_req()
1055 spin_unlock_irqrestore(&rport->lock, flags); in __nvme_fc_finish_ls_req()
1057 fc_dma_unmap_single(rport->dev, lsreq->rqstdma, in __nvme_fc_finish_ls_req()
1061 nvme_fc_rport_put(rport); in __nvme_fc_finish_ls_req()
1065 __nvme_fc_send_ls_req(struct nvme_fc_rport *rport, in __nvme_fc_send_ls_req() argument
1073 if (rport->remoteport.port_state != FC_OBJSTATE_ONLINE) in __nvme_fc_send_ls_req()
1076 if (!nvme_fc_rport_get(rport)) in __nvme_fc_send_ls_req()
1080 lsop->rport = rport; in __nvme_fc_send_ls_req()
1085 lsreq->rqstdma = fc_dma_map_single(rport->dev, lsreq->rqstaddr, in __nvme_fc_send_ls_req()
1088 if (fc_dma_mapping_error(rport->dev, lsreq->rqstdma)) { in __nvme_fc_send_ls_req()
1094 spin_lock_irqsave(&rport->lock, flags); in __nvme_fc_send_ls_req()
1096 list_add_tail(&lsop->lsreq_list, &rport->ls_req_list); in __nvme_fc_send_ls_req()
1100 spin_unlock_irqrestore(&rport->lock, flags); in __nvme_fc_send_ls_req()
1102 ret = rport->lport->ops->ls_req(&rport->lport->localport, in __nvme_fc_send_ls_req()
1103 &rport->remoteport, lsreq); in __nvme_fc_send_ls_req()
1111 spin_lock_irqsave(&rport->lock, flags); in __nvme_fc_send_ls_req()
1114 spin_unlock_irqrestore(&rport->lock, flags); in __nvme_fc_send_ls_req()
1115 fc_dma_unmap_single(rport->dev, lsreq->rqstdma, in __nvme_fc_send_ls_req()
1119 nvme_fc_rport_put(rport); in __nvme_fc_send_ls_req()
1134 nvme_fc_send_ls_req(struct nvme_fc_rport *rport, struct nvmefc_ls_req_op *lsop) in nvme_fc_send_ls_req() argument
1140 ret = __nvme_fc_send_ls_req(rport, lsop, nvme_fc_send_ls_req_done); in nvme_fc_send_ls_req()
1167 nvme_fc_send_ls_req_async(struct nvme_fc_rport *rport, in nvme_fc_send_ls_req_async() argument
1173 return __nvme_fc_send_ls_req(rport, lsop, done); in nvme_fc_send_ls_req_async()
1233 ret = nvme_fc_send_ls_req(ctrl->rport, lsop); in nvme_fc_connect_admin_queue()
1348 ret = nvme_fc_send_ls_req(ctrl->rport, lsop); in nvme_fc_connect_queue()
1455 ret = nvme_fc_send_ls_req_async(ctrl->rport, lsop, in nvme_fc_xmt_disconnect_assoc()
1465 struct nvme_fc_rport *rport = lsop->rport; in nvme_fc_xmt_ls_rsp_done() local
1466 struct nvme_fc_lport *lport = rport->lport; in nvme_fc_xmt_ls_rsp_done()
1469 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_xmt_ls_rsp_done()
1471 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_xmt_ls_rsp_done()
1482 nvme_fc_rport_put(rport); in nvme_fc_xmt_ls_rsp_done()
1488 struct nvme_fc_rport *rport = lsop->rport; in nvme_fc_xmt_ls_rsp() local
1489 struct nvme_fc_lport *lport = rport->lport; in nvme_fc_xmt_ls_rsp()
1496 ret = lport->ops->xmt_ls_rsp(&lport->localport, &rport->remoteport, in nvme_fc_xmt_ls_rsp()
1508 nvme_fc_match_disconn_ls(struct nvme_fc_rport *rport, in nvme_fc_match_disconn_ls() argument
1518 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_match_disconn_ls()
1520 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) { in nvme_fc_match_disconn_ls()
1536 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_match_disconn_ls()
1540 dev_info(rport->lport->dev, in nvme_fc_match_disconn_ls()
1563 struct nvme_fc_rport *rport = lsop->rport; in nvme_fc_ls_disconnect_assoc() local
1576 ctrl = nvme_fc_match_disconn_ls(rport, lsop); in nvme_fc_ls_disconnect_assoc()
1582 dev_info(rport->lport->dev, in nvme_fc_ls_disconnect_assoc()
1669 struct nvme_fc_rport *rport = in nvme_fc_handle_ls_rqst_work() local
1678 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_handle_ls_rqst_work()
1679 list_for_each_entry(lsop, &rport->ls_rcv_list, lsrcv_list) { in nvme_fc_handle_ls_rqst_work()
1684 if (rport->remoteport.port_state == FC_OBJSTATE_ONLINE) { in nvme_fc_handle_ls_rqst_work()
1685 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_handle_ls_rqst_work()
1688 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_handle_ls_rqst_work()
1701 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_handle_ls_rqst_work()
1737 struct nvme_fc_rport *rport = remoteport_to_rport(portptr); in nvme_fc_rcv_ls_req() local
1738 struct nvme_fc_lport *lport = rport->lport; in nvme_fc_rcv_ls_req()
1744 nvme_fc_rport_get(rport); in nvme_fc_rcv_ls_req()
1792 lsop->rport = rport; in nvme_fc_rcv_ls_req()
1798 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_rcv_ls_req()
1799 if (rport->remoteport.port_state != FC_OBJSTATE_ONLINE) { in nvme_fc_rcv_ls_req()
1800 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_rcv_ls_req()
1804 list_add_tail(&lsop->lsrcv_list, &rport->ls_rcv_list); in nvme_fc_rcv_ls_req()
1805 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_rcv_ls_req()
1807 schedule_work(&rport->lsrcv_work); in nvme_fc_rcv_ls_req()
1819 nvme_fc_rport_put(rport); in nvme_fc_rcv_ls_req()
1868 &ctrl->rport->remoteport, in __nvme_fc_abort_op()
2403 spin_lock_irqsave(&ctrl->rport->lock, flags); in nvme_fc_ctrl_free()
2405 spin_unlock_irqrestore(&ctrl->rport->lock, flags); in nvme_fc_ctrl_free()
2413 nvme_fc_rport_put(ctrl->rport); in nvme_fc_ctrl_free()
2695 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE) in nvme_fc_start_fcp_op()
2762 &ctrl->rport->remoteport, in nvme_fc_start_fcp_op()
2788 if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE && in nvme_fc_start_fcp_op()
2812 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE || in nvme_fc_queue_rq()
3013 nvme_fc_rport_active_on_lport(struct nvme_fc_rport *rport) in nvme_fc_rport_active_on_lport() argument
3015 struct nvme_fc_lport *lport = rport->lport; in nvme_fc_rport_active_on_lport()
3021 nvme_fc_rport_inactive_on_lport(struct nvme_fc_rport *rport) in nvme_fc_rport_inactive_on_lport() argument
3023 struct nvme_fc_lport *lport = rport->lport; in nvme_fc_rport_inactive_on_lport()
3034 struct nvme_fc_rport *rport = ctrl->rport; in nvme_fc_ctlr_active_on_rport() local
3040 cnt = atomic_inc_return(&rport->act_ctrl_cnt); in nvme_fc_ctlr_active_on_rport()
3042 nvme_fc_rport_active_on_lport(rport); in nvme_fc_ctlr_active_on_rport()
3050 struct nvme_fc_rport *rport = ctrl->rport; in nvme_fc_ctlr_inactive_on_rport() local
3051 struct nvme_fc_lport *lport = rport->lport; in nvme_fc_ctlr_inactive_on_rport()
3056 cnt = atomic_dec_return(&rport->act_ctrl_cnt); in nvme_fc_ctlr_inactive_on_rport()
3058 if (rport->remoteport.port_state == FC_OBJSTATE_DELETED) in nvme_fc_ctlr_inactive_on_rport()
3059 lport->ops->remoteport_delete(&rport->remoteport); in nvme_fc_ctlr_inactive_on_rport()
3060 nvme_fc_rport_inactive_on_lport(rport); in nvme_fc_ctlr_inactive_on_rport()
3081 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE) in nvme_fc_create_association()
3091 ctrl->rport->remoteport.port_name, ctrl->ctrl.opts->subsysnqn); in nvme_fc_create_association()
3314 struct nvme_fc_rport *rport = ctrl->rport; in nvme_fc_reconnect_or_delete() local
3315 struct nvme_fc_remote_port *portptr = &rport->remoteport; in nvme_fc_reconnect_or_delete()
3328 } else if (time_after_eq(jiffies, rport->dev_loss_end)) in nvme_fc_reconnect_or_delete()
3337 else if (time_after(jiffies + recon_delay, rport->dev_loss_end)) in nvme_fc_reconnect_or_delete()
3338 recon_delay = rport->dev_loss_end - jiffies; in nvme_fc_reconnect_or_delete()
3379 if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE) { in nvme_fc_reset_ctrl_work()
3444 nvme_fc_existing_controller(struct nvme_fc_rport *rport, in nvme_fc_existing_controller() argument
3451 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_existing_controller()
3452 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) { in nvme_fc_existing_controller()
3457 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_existing_controller()
3464 struct nvme_fc_lport *lport, struct nvme_fc_rport *rport) in nvme_fc_init_ctrl() argument
3470 if (!(rport->remoteport.port_role & in nvme_fc_init_ctrl()
3477 nvme_fc_existing_controller(rport, opts)) { in nvme_fc_init_ctrl()
3515 ctrl->rport = rport; in nvme_fc_init_ctrl()
3567 spin_lock_irqsave(&rport->lock, flags); in nvme_fc_init_ctrl()
3568 list_add_tail(&ctrl->ctrl_list, &rport->ctrl_list); in nvme_fc_init_ctrl()
3569 spin_unlock_irqrestore(&rport->lock, flags); in nvme_fc_init_ctrl()
3614 nvme_fc_rport_get(rport); in nvme_fc_init_ctrl()
3700 struct nvme_fc_rport *rport; in nvme_fc_create_ctrl() local
3723 list_for_each_entry(rport, &lport->endp_list, endp_list) { in nvme_fc_create_ctrl()
3724 if (rport->remoteport.node_name != raddr.nn || in nvme_fc_create_ctrl()
3725 rport->remoteport.port_name != raddr.pn || in nvme_fc_create_ctrl()
3726 rport->remoteport.port_state != FC_OBJSTATE_ONLINE) in nvme_fc_create_ctrl()
3730 if (!nvme_fc_rport_get(rport)) in nvme_fc_create_ctrl()
3735 ctrl = nvme_fc_init_ctrl(dev, opts, lport, rport); in nvme_fc_create_ctrl()
3737 nvme_fc_rport_put(rport); in nvme_fc_create_ctrl()
3766 struct nvme_fc_rport *rport; in nvme_fc_nvme_discovery_store() local
3772 list_for_each_entry(rport, &lport->endp_list, endp_list) { in nvme_fc_nvme_discovery_store()
3775 if (!nvme_fc_rport_get(rport)) { in nvme_fc_nvme_discovery_store()
3794 if (list_empty(&rport->disc_list)) in nvme_fc_nvme_discovery_store()
3795 list_add_tail(&rport->disc_list, in nvme_fc_nvme_discovery_store()
3802 rport = list_first_entry(&local_disc_list, in nvme_fc_nvme_discovery_store()
3804 list_del_init(&rport->disc_list); in nvme_fc_nvme_discovery_store()
3807 lport = rport->lport; in nvme_fc_nvme_discovery_store()
3809 nvme_fc_signal_discovery_scan(lport, rport); in nvme_fc_nvme_discovery_store()
3810 nvme_fc_rport_put(rport); in nvme_fc_nvme_discovery_store()
3959 nvme_fc_delete_controllers(struct nvme_fc_rport *rport) in nvme_fc_delete_controllers() argument
3963 spin_lock(&rport->lock); in nvme_fc_delete_controllers()
3964 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) { in nvme_fc_delete_controllers()
3970 spin_unlock(&rport->lock); in nvme_fc_delete_controllers()
3977 struct nvme_fc_rport *rport; in nvme_fc_cleanup_for_unload() local
3980 list_for_each_entry(rport, &lport->endp_list, endp_list) { in nvme_fc_cleanup_for_unload()
3981 nvme_fc_delete_controllers(rport); in nvme_fc_cleanup_for_unload()