/* The timer routine will simply return once we set FIP_ST_DISABLED. This guarantees that no further timeouts or work will be scheduled.  */
void fcoe_ctlr_destroy(struct fcoe_ctlr *fip)
/* The timer routine will simply return once we set FIP_ST_DISABLED. This guarantees that no further timeouts or work will be scheduled.  */
void fcoe_ctlr_destroy(struct fcoe_ctlr *fip)
{
	cancel_work_sync(&fip->recv_work);
	skb_queue_purge(&fip->fip_recv_list);
	spin_lock_bh(&fip->lock);
	fip->state = FIP_ST_DISABLED;
	fcoe_ctlr_reset_fcfs(fip);
	spin_unlock_bh(&fip->lock);
	del_timer_sync(&fip->timer);
	cancel_work_sync(&fip->link_work);
}