/* Locking Note: The lport lock is expected to be held before calling this routine.  */
static void fc_lport_enter_logo(struct fc_lport *)
/* Locking Note: The lport lock is expected to be held before calling this routine.  */
static void fc_lport_enter_logo(struct fc_lport *)
{
	struct fc_frame *fp;
	struct fc_els_logo *logo;
	FC_LPORT_DBG(lport, "Entered LOGO state from %s state\n",
		     fc_lport_state(lport));
	fc_lport_state_enter(lport, LPORT_ST_LOGO);
	fc_vports_linkchange(lport);
	fp = fc_frame_alloc(lport, sizeof(*logo));
	if (!fp) {
		fc_lport_error(lport, fp);
		return;
	}
	if (!lport->tt.elsct_send(lport, FC_FID_FLOGI, fp, ELS_LOGO,
				  fc_lport_logo_resp, lport,
				  2 * lport->r_a_tov))
		fc_lport_error(lport, NULL);
}