 /* There's a slim chance the reset code has just queued the * statemachine to run in five seconds. If so we need to cancel * that and requeue the work to run now. */ if (cancel_delayed_work(&cnx->statemachine_wq)) { spin_lock_irq(&cnx->lock); veth_kick_statemachine(cnx); spin_unlock_irq(&cnx->lock); } 
static void veth_stop_connection(u8 rlp){	struct veth_lpar_connection *cnx = veth_cnx[rlp];	if (! cnx)		return;	spin_lock_irq(&cnx->lock);	cnx->state |= VETH_STATE_RESET | VETH_STATE_SHUTDOWN;	veth_kick_statemachine(cnx);	spin_unlock_irq(&cnx->lock);	/* Wait for the state machine to run. */	flush_scheduled_work();	if (cnx->num_events > 0)		mf_deallocate_lp_events(cnx->remote_lp,				      HvLpEvent_Type_VirtualLan,				      cnx->num_events,				      NULL, NULL);	if (cnx->num_ack_events > 0)		mf_deallocate_lp_events(cnx->remote_lp,				      HvLpEvent_Type_VirtualLan,				      cnx->num_ack_events,				      NULL, NULL);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/58c5900bdaffbf76afd7ad5e053410cb95eb3169/iseries_veth.c/buggy/drivers/net/iseries_veth.c