/* Locking Note: This function is called from the EM and will lock the disc_mutex before calling the handler for the request.  */
static void fc_disc_recv_req(struct fc_seq *sp, struct fc_frame *fp, struct fc_lport *lport)
/* Locking Note: This function is called from the EM and will lock the disc_mutex before calling the handler for the request.  */
static void fc_disc_recv_req(struct fc_seq *sp, struct fc_frame *fp, struct fc_lport *lport)
{
	u8 op;
	struct fc_disc *disc = &lport->disc;
	op = fc_frame_payload_op(fp);
	switch (op) {
	case ELS_RSCN:
		mutex_lock(&disc->disc_mutex);
		fc_disc_recv_rscn_req(sp, fp, disc);
		mutex_unlock(&disc->disc_mutex);
		break;
	default:
		FC_DISC_DBG(disc, "Received an unsupported request, "
			    "the opcode is (%x)\n", op);
		break;
	}
}