/* Locking Note: The lport lock is expected to be held before calling this routine.  */
static void fc_lport_enter_dns(struct fc_lport *)
/* Locking Note: The lport lock is expected to be held before calling this routine.  */
static void fc_lport_enter_dns(struct fc_lport *)
{
	struct fc_rport_priv *rdata;
	FC_LPORT_DBG(lport, "Entered DNS state from %s state\n",
		     fc_lport_state(lport));
	fc_lport_state_enter(lport, LPORT_ST_DNS);
	mutex_lock(&lport->disc.disc_mutex);
	rdata = lport->tt.rport_create(lport, FC_FID_DIR_SERV);
	mutex_unlock(&lport->disc.disc_mutex);
	if (!rdata)
		goto err;
	rdata->ops = &fc_lport_rport_ops;
	lport->tt.rport_login(rdata);
	return;
err:
	fc_lport_error(lport, NULL);
}