Lines Matching refs:rport

59 	struct nvme_fc_rport	*rport;
66 struct list_head lsreq_list; /* rport->ls_req_list */
71 struct nvme_fc_rport *rport;
78 struct list_head lsrcv_list; /* rport->ls_rcv_list */
158 struct nvme_fc_rport *rport;
165 struct list_head ctrl_list; /* rport->ctrl_list */
495 struct nvme_fc_rport *rport)
501 if (!(rport->remoteport.port_role & FC_PORT_ROLE_NVME_DISCOVERY))
509 rport->remoteport.node_name, rport->remoteport.port_name);
516 struct nvme_fc_rport *rport =
519 localport_to_lport(rport->remoteport.localport);
522 WARN_ON(rport->remoteport.port_state != FC_OBJSTATE_DELETED);
523 WARN_ON(!list_empty(&rport->ctrl_list));
527 list_del(&rport->endp_list);
530 WARN_ON(!list_empty(&rport->disc_list));
531 ida_free(&lport->endp_cnt, rport->remoteport.port_num);
533 kfree(rport);
539 nvme_fc_rport_put(struct nvme_fc_rport *rport)
541 kref_put(&rport->ref, nvme_fc_free_rport);
545 nvme_fc_rport_get(struct nvme_fc_rport *rport)
547 return kref_get_unless_zero(&rport->ref);
585 struct nvme_fc_rport *rport;
591 list_for_each_entry(rport, &lport->endp_list, endp_list) {
592 if (rport->remoteport.node_name != pinfo->node_name ||
593 rport->remoteport.port_name != pinfo->port_name)
596 if (!nvme_fc_rport_get(rport)) {
597 rport = ERR_PTR(-ENOLCK);
603 spin_lock_irqsave(&rport->lock, flags);
606 if (rport->remoteport.port_state != FC_OBJSTATE_DELETED) {
608 spin_unlock_irqrestore(&rport->lock, flags);
609 nvme_fc_rport_put(rport);
613 rport->remoteport.port_role = pinfo->port_role;
614 rport->remoteport.port_id = pinfo->port_id;
615 rport->remoteport.port_state = FC_OBJSTATE_ONLINE;
616 rport->dev_loss_end = 0;
622 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list)
625 spin_unlock_irqrestore(&rport->lock, flags);
627 return rport;
630 rport = NULL;
635 return rport;
639 __nvme_fc_set_dev_loss_tmo(struct nvme_fc_rport *rport,
643 rport->remoteport.dev_loss_tmo = pinfo->dev_loss_tmo;
645 rport->remoteport.dev_loss_tmo = NVME_FC_DEFAULT_DEV_LOSS_TMO;
686 /* found an rport, but something about its state is bad */
691 /* found existing rport, which was resumed */
759 nvme_fc_abort_lsops(struct nvme_fc_rport *rport)
765 spin_lock_irqsave(&rport->lock, flags);
767 list_for_each_entry(lsop, &rport->ls_req_list, lsreq_list) {
770 spin_unlock_irqrestore(&rport->lock, flags);
771 rport->lport->ops->ls_abort(&rport->lport->localport,
772 &rport->remoteport,
777 spin_unlock_irqrestore(&rport->lock, flags);
848 struct nvme_fc_rport *rport = remoteport_to_rport(portptr);
855 spin_lock_irqsave(&rport->lock, flags);
858 spin_unlock_irqrestore(&rport->lock, flags);
863 rport->dev_loss_end = jiffies + (portptr->dev_loss_tmo * HZ);
865 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
876 spin_unlock_irqrestore(&rport->lock, flags);
878 nvme_fc_abort_lsops(rport);
880 if (atomic_read(&rport->act_ctrl_cnt) == 0)
881 rport->lport->ops->remoteport_delete(portptr);
886 * for the rport to be torn down.
888 nvme_fc_rport_put(rport);
905 struct nvme_fc_rport *rport = remoteport_to_rport(remoteport);
907 nvme_fc_signal_discovery_scan(rport->lport, rport);
915 struct nvme_fc_rport *rport = remoteport_to_rport(portptr);
918 spin_lock_irqsave(&rport->lock, flags);
921 spin_unlock_irqrestore(&rport->lock, flags);
926 rport->remoteport.dev_loss_tmo = dev_loss_tmo;
928 spin_unlock_irqrestore(&rport->lock, flags);
1033 struct nvme_fc_rport *rport = lsop->rport;
1037 spin_lock_irqsave(&rport->lock, flags);
1040 spin_unlock_irqrestore(&rport->lock, flags);
1048 spin_unlock_irqrestore(&rport->lock, flags);
1050 fc_dma_unmap_single(rport->dev, lsreq->rqstdma,
1054 nvme_fc_rport_put(rport);
1058 __nvme_fc_send_ls_req(struct nvme_fc_rport *rport,
1066 if (rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
1069 if (!nvme_fc_rport_get(rport))
1073 lsop->rport = rport;
1078 lsreq->rqstdma = fc_dma_map_single(rport->dev, lsreq->rqstaddr,
1081 if (fc_dma_mapping_error(rport->dev, lsreq->rqstdma)) {
1087 spin_lock_irqsave(&rport->lock, flags);
1089 list_add_tail(&lsop->lsreq_list, &rport->ls_req_list);
1093 spin_unlock_irqrestore(&rport->lock, flags);
1095 ret = rport->lport->ops->ls_req(&rport->lport->localport,
1096 &rport->remoteport, lsreq);
1104 spin_lock_irqsave(&rport->lock, flags);
1107 spin_unlock_irqrestore(&rport->lock, flags);
1108 fc_dma_unmap_single(rport->dev, lsreq->rqstdma,
1112 nvme_fc_rport_put(rport);
1127 nvme_fc_send_ls_req(struct nvme_fc_rport *rport, struct nvmefc_ls_req_op *lsop)
1133 ret = __nvme_fc_send_ls_req(rport, lsop, nvme_fc_send_ls_req_done);
1160 nvme_fc_send_ls_req_async(struct nvme_fc_rport *rport,
1166 return __nvme_fc_send_ls_req(rport, lsop, done);
1226 ret = nvme_fc_send_ls_req(ctrl->rport, lsop);
1341 ret = nvme_fc_send_ls_req(ctrl->rport, lsop);
1448 ret = nvme_fc_send_ls_req_async(ctrl->rport, lsop,
1458 struct nvme_fc_rport *rport = lsop->rport;
1459 struct nvme_fc_lport *lport = rport->lport;
1462 spin_lock_irqsave(&rport->lock, flags);
1464 spin_unlock_irqrestore(&rport->lock, flags);
1475 nvme_fc_rport_put(rport);
1481 struct nvme_fc_rport *rport = lsop->rport;
1482 struct nvme_fc_lport *lport = rport->lport;
1489 ret = lport->ops->xmt_ls_rsp(&lport->localport, &rport->remoteport,
1501 nvme_fc_match_disconn_ls(struct nvme_fc_rport *rport,
1511 spin_lock_irqsave(&rport->lock, flags);
1513 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
1529 spin_unlock_irqrestore(&rport->lock, flags);
1533 dev_info(rport->lport->dev,
1556 struct nvme_fc_rport *rport = lsop->rport;
1569 ctrl = nvme_fc_match_disconn_ls(rport, lsop);
1575 dev_info(rport->lport->dev,
1662 struct nvme_fc_rport *rport =
1671 spin_lock_irqsave(&rport->lock, flags);
1672 list_for_each_entry(lsop, &rport->ls_rcv_list, lsrcv_list) {
1677 if (rport->remoteport.port_state == FC_OBJSTATE_ONLINE) {
1678 spin_unlock_irqrestore(&rport->lock, flags);
1681 spin_unlock_irqrestore(&rport->lock, flags);
1694 spin_unlock_irqrestore(&rport->lock, flags);
1730 struct nvme_fc_rport *rport = remoteport_to_rport(portptr);
1731 struct nvme_fc_lport *lport = rport->lport;
1737 nvme_fc_rport_get(rport);
1785 lsop->rport = rport;
1791 spin_lock_irqsave(&rport->lock, flags);
1792 if (rport->remoteport.port_state != FC_OBJSTATE_ONLINE) {
1793 spin_unlock_irqrestore(&rport->lock, flags);
1797 list_add_tail(&lsop->lsrcv_list, &rport->ls_rcv_list);
1798 spin_unlock_irqrestore(&rport->lock, flags);
1800 schedule_work(&rport->lsrcv_work);
1812 nvme_fc_rport_put(rport);
1861 &ctrl->rport->remoteport,
2395 /* remove from rport list */
2396 spin_lock_irqsave(&ctrl->rport->lock, flags);
2398 spin_unlock_irqrestore(&ctrl->rport->lock, flags);
2406 nvme_fc_rport_put(ctrl->rport);
2683 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
2750 &ctrl->rport->remoteport,
2776 if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE &&
2800 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE ||
3001 nvme_fc_rport_active_on_lport(struct nvme_fc_rport *rport)
3003 struct nvme_fc_lport *lport = rport->lport;
3009 nvme_fc_rport_inactive_on_lport(struct nvme_fc_rport *rport)
3011 struct nvme_fc_lport *lport = rport->lport;
3022 struct nvme_fc_rport *rport = ctrl->rport;
3028 cnt = atomic_inc_return(&rport->act_ctrl_cnt);
3030 nvme_fc_rport_active_on_lport(rport);
3038 struct nvme_fc_rport *rport = ctrl->rport;
3039 struct nvme_fc_lport *lport = rport->lport;
3044 cnt = atomic_dec_return(&rport->act_ctrl_cnt);
3046 if (rport->remoteport.port_state == FC_OBJSTATE_DELETED)
3047 lport->ops->remoteport_delete(&rport->remoteport);
3048 nvme_fc_rport_inactive_on_lport(rport);
3069 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
3077 " rport wwpn 0x%016llx: NQN \"%s\"\n",
3079 ctrl->rport->remoteport.port_name, ctrl->ctrl.opts->subsysnqn);
3301 struct nvme_fc_rport *rport = ctrl->rport;
3302 struct nvme_fc_remote_port *portptr = &rport->remoteport;
3315 } else if (time_after_eq(jiffies, rport->dev_loss_end))
3324 else if (time_after(jiffies + recon_delay, rport->dev_loss_end))
3325 recon_delay = rport->dev_loss_end - jiffies;
3366 if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE) {
3431 nvme_fc_existing_controller(struct nvme_fc_rport *rport,
3438 spin_lock_irqsave(&rport->lock, flags);
3439 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
3444 spin_unlock_irqrestore(&rport->lock, flags);
3451 struct nvme_fc_lport *lport, struct nvme_fc_rport *rport)
3457 if (!(rport->remoteport.port_role &
3464 nvme_fc_existing_controller(rport, opts)) {
3498 ctrl->rport = rport;
3552 spin_lock_irqsave(&rport->lock, flags);
3553 list_add_tail(&ctrl->ctrl_list, &rport->ctrl_list);
3554 spin_unlock_irqrestore(&rport->lock, flags);
3595 * transition, will do an rport put. Since the teardown
3596 * path also does a rport put, we do an extra get here to
3599 nvme_fc_rport_get(rport);
3685 struct nvme_fc_rport *rport;
3708 list_for_each_entry(rport, &lport->endp_list, endp_list) {
3709 if (rport->remoteport.node_name != raddr.nn ||
3710 rport->remoteport.port_name != raddr.pn ||
3711 rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
3715 if (!nvme_fc_rport_get(rport))
3720 ctrl = nvme_fc_init_ctrl(dev, opts, lport, rport);
3722 nvme_fc_rport_put(rport);
3751 struct nvme_fc_rport *rport;
3757 list_for_each_entry(rport, &lport->endp_list, endp_list) {
3760 if (!nvme_fc_rport_get(rport)) {
3763 * this rport will be gone from the list.
3779 if (list_empty(&rport->disc_list))
3780 list_add_tail(&rport->disc_list,
3787 rport = list_first_entry(&local_disc_list,
3789 list_del_init(&rport->disc_list);
3792 lport = rport->lport;
3794 nvme_fc_signal_discovery_scan(lport, rport);
3795 nvme_fc_rport_put(rport);
3938 nvme_fc_delete_controllers(struct nvme_fc_rport *rport)
3942 spin_lock(&rport->lock);
3943 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
3949 spin_unlock(&rport->lock);
3955 struct nvme_fc_rport *rport;
3960 list_for_each_entry(rport, &lport->endp_list, endp_list)
3961 nvme_fc_delete_controllers(rport);