/* Allocates fc_frame structure and buffer but if fails to allocate then reduce can_queue.  */
static struct fc_frame* fc_fcp_frame_alloc(struct fc_lport *lport, size_t len)
/* Allocates fc_frame structure and buffer but if fails to allocate then reduce can_queue.  */
static struct fc_frame* fc_fcp_frame_alloc(struct fc_lport *lport, size_t len)
{
	struct fc_frame *fp;
	unsigned long flags;
	fp = fc_frame_alloc(lport, len);
	if (likely(fp))
		return fp;
	spin_lock_irqsave(lport->host->host_lock, flags);
	fc_fcp_can_queue_ramp_down(lport);
	spin_unlock_irqrestore(lport->host->host_lock, flags);
	return NULL;
}