Lines Matching refs:tport
51 struct ft_tport *tport; in ft_tport_get() local
54 tport = rcu_dereference_protected(lport->prov[FC_TYPE_FCP], in ft_tport_get()
56 if (tport && tport->tpg) in ft_tport_get()
57 return tport; in ft_tport_get()
63 if (tport) { in ft_tport_get()
64 tport->tpg = tpg; in ft_tport_get()
65 tpg->tport = tport; in ft_tport_get()
66 return tport; in ft_tport_get()
69 tport = kzalloc(sizeof(*tport), GFP_KERNEL); in ft_tport_get()
70 if (!tport) in ft_tport_get()
73 tport->lport = lport; in ft_tport_get()
74 tport->tpg = tpg; in ft_tport_get()
75 tpg->tport = tport; in ft_tport_get()
77 INIT_HLIST_HEAD(&tport->hash[i]); in ft_tport_get()
79 rcu_assign_pointer(lport->prov[FC_TYPE_FCP], tport); in ft_tport_get()
80 return tport; in ft_tport_get()
87 static void ft_tport_delete(struct ft_tport *tport) in ft_tport_delete() argument
92 ft_sess_delete_all(tport); in ft_tport_delete()
93 lport = tport->lport; in ft_tport_delete()
94 BUG_ON(tport != lport->prov[FC_TYPE_FCP]); in ft_tport_delete()
97 tpg = tport->tpg; in ft_tport_delete()
99 tpg->tport = NULL; in ft_tport_delete()
100 tport->tpg = NULL; in ft_tport_delete()
102 kfree_rcu(tport, rcu); in ft_tport_delete()
122 struct ft_tport *tport; in ft_lport_del() local
125 tport = lport->prov[FC_TYPE_FCP]; in ft_lport_del()
126 if (tport) in ft_lport_del()
127 ft_tport_delete(tport); in ft_lport_del()
165 struct ft_tport *tport; in ft_sess_get() local
170 tport = rcu_dereference(lport->prov[FC_TYPE_FCP]); in ft_sess_get()
171 if (!tport) in ft_sess_get()
174 head = &tport->hash[ft_sess_hash(port_id)]; in ft_sess_get()
193 static struct ft_sess *ft_sess_create(struct ft_tport *tport, u32 port_id, in ft_sess_create() argument
199 head = &tport->hash[ft_sess_hash(port_id)]; in ft_sess_create()
216 sess->tport = tport; in ft_sess_create()
220 tport->sess_count++; in ft_sess_create()
224 transport_register_session(&tport->tpg->se_tpg, &acl->se_node_acl, in ft_sess_create()
235 struct ft_tport *tport = sess->tport; in ft_sess_unhash() local
238 BUG_ON(!tport->sess_count); in ft_sess_unhash()
239 tport->sess_count--; in ft_sess_unhash()
248 static struct ft_sess *ft_sess_delete(struct ft_tport *tport, u32 port_id) in ft_sess_delete() argument
253 head = &tport->hash[ft_sess_hash(port_id)]; in ft_sess_delete()
267 static void ft_sess_delete_all(struct ft_tport *tport) in ft_sess_delete_all() argument
272 for (head = tport->hash; in ft_sess_delete_all()
273 head < &tport->hash[FT_SESS_HASH_SIZE]; head++) { in ft_sess_delete_all()
344 struct ft_tport *tport; in ft_prli_locked() local
349 tport = ft_tport_get(rdata->local_port); in ft_prli_locked()
350 if (!tport) in ft_prli_locked()
353 acl = ft_acl_get(tport->tpg, rdata); in ft_prli_locked()
378 sess = ft_sess_create(tport, rdata->ids.port_id, acl); in ft_prli_locked()
447 struct ft_tport *tport; in ft_prlo() local
450 tport = rcu_dereference_protected(rdata->local_port->prov[FC_TYPE_FCP], in ft_prlo()
453 if (!tport) { in ft_prlo()
457 sess = ft_sess_delete(tport, rdata->ids.port_id); in ft_prlo()