Lines Matching refs:rport
58 struct nvme_fc_rport *rport;
65 struct list_head lsreq_list; /* rport->ls_req_list */
70 struct nvme_fc_rport *rport;
77 struct list_head lsrcv_list; /* rport->ls_rcv_list */
157 struct nvme_fc_rport *rport;
164 struct list_head ctrl_list; /* rport->ctrl_list */
501 struct nvme_fc_rport *rport)
507 if (!(rport->remoteport.port_role & FC_PORT_ROLE_NVME_DISCOVERY))
515 rport->remoteport.node_name, rport->remoteport.port_name);
522 struct nvme_fc_rport *rport =
525 localport_to_lport(rport->remoteport.localport);
528 WARN_ON(rport->remoteport.port_state != FC_OBJSTATE_DELETED);
529 WARN_ON(!list_empty(&rport->ctrl_list));
533 list_del(&rport->endp_list);
536 WARN_ON(!list_empty(&rport->disc_list));
537 ida_simple_remove(&lport->endp_cnt, rport->remoteport.port_num);
539 kfree(rport);
545 nvme_fc_rport_put(struct nvme_fc_rport *rport)
547 kref_put(&rport->ref, nvme_fc_free_rport);
551 nvme_fc_rport_get(struct nvme_fc_rport *rport)
553 return kref_get_unless_zero(&rport->ref);
591 struct nvme_fc_rport *rport;
597 list_for_each_entry(rport, &lport->endp_list, endp_list) {
598 if (rport->remoteport.node_name != pinfo->node_name ||
599 rport->remoteport.port_name != pinfo->port_name)
602 if (!nvme_fc_rport_get(rport)) {
603 rport = ERR_PTR(-ENOLCK);
609 spin_lock_irqsave(&rport->lock, flags);
612 if (rport->remoteport.port_state != FC_OBJSTATE_DELETED) {
614 spin_unlock_irqrestore(&rport->lock, flags);
615 nvme_fc_rport_put(rport);
619 rport->remoteport.port_role = pinfo->port_role;
620 rport->remoteport.port_id = pinfo->port_id;
621 rport->remoteport.port_state = FC_OBJSTATE_ONLINE;
622 rport->dev_loss_end = 0;
628 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list)
631 spin_unlock_irqrestore(&rport->lock, flags);
633 return rport;
636 rport = NULL;
641 return rport;
645 __nvme_fc_set_dev_loss_tmo(struct nvme_fc_rport *rport,
649 rport->remoteport.dev_loss_tmo = pinfo->dev_loss_tmo;
651 rport->remoteport.dev_loss_tmo = NVME_FC_DEFAULT_DEV_LOSS_TMO;
692 /* found an rport, but something about its state is bad */
697 /* found existing rport, which was resumed */
765 nvme_fc_abort_lsops(struct nvme_fc_rport *rport)
771 spin_lock_irqsave(&rport->lock, flags);
773 list_for_each_entry(lsop, &rport->ls_req_list, lsreq_list) {
776 spin_unlock_irqrestore(&rport->lock, flags);
777 rport->lport->ops->ls_abort(&rport->lport->localport,
778 &rport->remoteport,
783 spin_unlock_irqrestore(&rport->lock, flags);
854 struct nvme_fc_rport *rport = remoteport_to_rport(portptr);
861 spin_lock_irqsave(&rport->lock, flags);
864 spin_unlock_irqrestore(&rport->lock, flags);
869 rport->dev_loss_end = jiffies + (portptr->dev_loss_tmo * HZ);
871 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
882 spin_unlock_irqrestore(&rport->lock, flags);
884 nvme_fc_abort_lsops(rport);
886 if (atomic_read(&rport->act_ctrl_cnt) == 0)
887 rport->lport->ops->remoteport_delete(portptr);
892 * for the rport to be torn down.
894 nvme_fc_rport_put(rport);
911 struct nvme_fc_rport *rport = remoteport_to_rport(remoteport);
913 nvme_fc_signal_discovery_scan(rport->lport, rport);
921 struct nvme_fc_rport *rport = remoteport_to_rport(portptr);
924 spin_lock_irqsave(&rport->lock, flags);
927 spin_unlock_irqrestore(&rport->lock, flags);
932 rport->remoteport.dev_loss_tmo = dev_loss_tmo;
934 spin_unlock_irqrestore(&rport->lock, flags);
1039 struct nvme_fc_rport *rport = lsop->rport;
1043 spin_lock_irqsave(&rport->lock, flags);
1046 spin_unlock_irqrestore(&rport->lock, flags);
1054 spin_unlock_irqrestore(&rport->lock, flags);
1056 fc_dma_unmap_single(rport->dev, lsreq->rqstdma,
1060 nvme_fc_rport_put(rport);
1064 __nvme_fc_send_ls_req(struct nvme_fc_rport *rport,
1072 if (rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
1075 if (!nvme_fc_rport_get(rport))
1079 lsop->rport = rport;
1084 lsreq->rqstdma = fc_dma_map_single(rport->dev, lsreq->rqstaddr,
1087 if (fc_dma_mapping_error(rport->dev, lsreq->rqstdma)) {
1093 spin_lock_irqsave(&rport->lock, flags);
1095 list_add_tail(&lsop->lsreq_list, &rport->ls_req_list);
1099 spin_unlock_irqrestore(&rport->lock, flags);
1101 ret = rport->lport->ops->ls_req(&rport->lport->localport,
1102 &rport->remoteport, lsreq);
1110 spin_lock_irqsave(&rport->lock, flags);
1113 spin_unlock_irqrestore(&rport->lock, flags);
1114 fc_dma_unmap_single(rport->dev, lsreq->rqstdma,
1118 nvme_fc_rport_put(rport);
1133 nvme_fc_send_ls_req(struct nvme_fc_rport *rport, struct nvmefc_ls_req_op *lsop)
1139 ret = __nvme_fc_send_ls_req(rport, lsop, nvme_fc_send_ls_req_done);
1166 nvme_fc_send_ls_req_async(struct nvme_fc_rport *rport,
1172 return __nvme_fc_send_ls_req(rport, lsop, done);
1232 ret = nvme_fc_send_ls_req(ctrl->rport, lsop);
1347 ret = nvme_fc_send_ls_req(ctrl->rport, lsop);
1454 ret = nvme_fc_send_ls_req_async(ctrl->rport, lsop,
1464 struct nvme_fc_rport *rport = lsop->rport;
1465 struct nvme_fc_lport *lport = rport->lport;
1468 spin_lock_irqsave(&rport->lock, flags);
1470 spin_unlock_irqrestore(&rport->lock, flags);
1479 nvme_fc_rport_put(rport);
1485 struct nvme_fc_rport *rport = lsop->rport;
1486 struct nvme_fc_lport *lport = rport->lport;
1493 ret = lport->ops->xmt_ls_rsp(&lport->localport, &rport->remoteport,
1505 nvme_fc_match_disconn_ls(struct nvme_fc_rport *rport,
1515 spin_lock_irqsave(&rport->lock, flags);
1517 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
1533 spin_unlock_irqrestore(&rport->lock, flags);
1537 dev_info(rport->lport->dev,
1560 struct nvme_fc_rport *rport = lsop->rport;
1573 ctrl = nvme_fc_match_disconn_ls(rport, lsop);
1579 dev_info(rport->lport->dev,
1666 struct nvme_fc_rport *rport =
1675 spin_lock_irqsave(&rport->lock, flags);
1676 list_for_each_entry(lsop, &rport->ls_rcv_list, lsrcv_list) {
1681 if (rport->remoteport.port_state == FC_OBJSTATE_ONLINE) {
1682 spin_unlock_irqrestore(&rport->lock, flags);
1685 spin_unlock_irqrestore(&rport->lock, flags);
1698 spin_unlock_irqrestore(&rport->lock, flags);
1725 struct nvme_fc_rport *rport = remoteport_to_rport(portptr);
1726 struct nvme_fc_lport *lport = rport->lport;
1732 nvme_fc_rport_get(rport);
1780 lsop->rport = rport;
1786 spin_lock_irqsave(&rport->lock, flags);
1787 if (rport->remoteport.port_state != FC_OBJSTATE_ONLINE) {
1788 spin_unlock_irqrestore(&rport->lock, flags);
1792 list_add_tail(&lsop->lsrcv_list, &rport->ls_rcv_list);
1793 spin_unlock_irqrestore(&rport->lock, flags);
1795 schedule_work(&rport->lsrcv_work);
1805 nvme_fc_rport_put(rport);
1854 &ctrl->rport->remoteport,
2379 /* remove from rport list */
2380 spin_lock_irqsave(&ctrl->rport->lock, flags);
2382 spin_unlock_irqrestore(&ctrl->rport->lock, flags);
2392 nvme_fc_rport_put(ctrl->rport);
2664 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
2731 &ctrl->rport->remoteport,
2757 if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE &&
2783 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE ||
2984 nvme_fc_rport_active_on_lport(struct nvme_fc_rport *rport)
2986 struct nvme_fc_lport *lport = rport->lport;
2992 nvme_fc_rport_inactive_on_lport(struct nvme_fc_rport *rport)
2994 struct nvme_fc_lport *lport = rport->lport;
3005 struct nvme_fc_rport *rport = ctrl->rport;
3011 cnt = atomic_inc_return(&rport->act_ctrl_cnt);
3013 nvme_fc_rport_active_on_lport(rport);
3021 struct nvme_fc_rport *rport = ctrl->rport;
3022 struct nvme_fc_lport *lport = rport->lport;
3027 cnt = atomic_dec_return(&rport->act_ctrl_cnt);
3029 if (rport->remoteport.port_state == FC_OBJSTATE_DELETED)
3030 lport->ops->remoteport_delete(&rport->remoteport);
3031 nvme_fc_rport_inactive_on_lport(rport);
3052 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
3060 " rport wwpn 0x%016llx: NQN \"%s\"\n",
3062 ctrl->rport->remoteport.port_name, ctrl->ctrl.opts->subsysnqn);
3273 struct nvme_fc_rport *rport = ctrl->rport;
3274 struct nvme_fc_remote_port *portptr = &rport->remoteport;
3285 else if (time_after_eq(jiffies, rport->dev_loss_end))
3294 else if (time_after(jiffies + recon_delay, rport->dev_loss_end))
3295 recon_delay = rport->dev_loss_end - jiffies;
3331 if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE) {
3396 nvme_fc_existing_controller(struct nvme_fc_rport *rport,
3403 spin_lock_irqsave(&rport->lock, flags);
3404 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
3409 spin_unlock_irqrestore(&rport->lock, flags);
3416 struct nvme_fc_lport *lport, struct nvme_fc_rport *rport)
3422 if (!(rport->remoteport.port_role &
3429 nvme_fc_existing_controller(rport, opts)) {
3467 ctrl->rport = rport;
3542 spin_lock_irqsave(&rport->lock, flags);
3543 list_add_tail(&ctrl->ctrl_list, &rport->ctrl_list);
3544 spin_unlock_irqrestore(&rport->lock, flags);
3585 * transition, will do an rport put. Since the teardown
3586 * path also does a rport put, we do an extra get here to
3589 nvme_fc_rport_get(rport);
3681 struct nvme_fc_rport *rport;
3704 list_for_each_entry(rport, &lport->endp_list, endp_list) {
3705 if (rport->remoteport.node_name != raddr.nn ||
3706 rport->remoteport.port_name != raddr.pn ||
3707 rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
3711 if (!nvme_fc_rport_get(rport))
3716 ctrl = nvme_fc_init_ctrl(dev, opts, lport, rport);
3718 nvme_fc_rport_put(rport);
3747 struct nvme_fc_rport *rport;
3753 list_for_each_entry(rport, &lport->endp_list, endp_list) {
3756 if (!nvme_fc_rport_get(rport)) {
3759 * this rport will be gone from the list.
3775 if (list_empty(&rport->disc_list))
3776 list_add_tail(&rport->disc_list,
3783 rport = list_first_entry(&local_disc_list,
3785 list_del_init(&rport->disc_list);
3788 lport = rport->lport;
3790 nvme_fc_signal_discovery_scan(lport, rport);
3791 nvme_fc_rport_put(rport);
3878 nvme_fc_delete_controllers(struct nvme_fc_rport *rport)
3882 spin_lock(&rport->lock);
3883 list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) {
3889 spin_unlock(&rport->lock);
3896 struct nvme_fc_rport *rport;
3899 list_for_each_entry(rport, &lport->endp_list, endp_list) {
3900 nvme_fc_delete_controllers(rport);