/* Used for upper level protocols to time out the exchange.  */
static void fc_exch_timer_set_locked(struct fc_exch *ep, unsigned int timer_msec)
/* Used for upper level protocols to time out the exchange.  */
static void fc_exch_timer_set_locked(struct fc_exch *ep, unsigned int timer_msec)
{
	if (ep->state & (FC_EX_RST_CLEANUP | FC_EX_DONE))
		return;
	FC_EXCH_DBG(ep, "Exchange timer armed\n");
	if (queue_delayed_work(fc_exch_workqueue, &ep->timeout_work,
			       msecs_to_jiffies(timer_msec)))
		fc_exch_hold(ep);
}