 /* If we've timed out the queue must be stopped, which should * only ever happen when there is a pending packet. */ WARN_ON(! port->pending_lpmask); 
static void veth_tx_timeout(struct net_device *dev){	struct veth_port *port = (struct veth_port *)dev->priv;	struct net_device_stats *stats = &port->stats;	unsigned long flags;	int i;	stats->tx_errors++;	spin_lock_irqsave(&port->pending_gate, flags);	printk(KERN_WARNING "%s: Tx timeout!  Resetting lp connections: %08x\n",	       dev->name, port->pending_lpmask);	/* If we've timed out the queue must be stopped, which should	 * only ever happen when there is a pending packet. */	WARN_ON(! port->pending_lpmask);	for (i = 0; i < HVMAXARCHITECTEDLPS; i++) {		struct veth_lpar_connection *cnx = veth_cnx[i];		if (! (port->pending_lpmask & (1<<i)))			continue;		/* If we're pending on it, we must be connected to it,		 * so we should certainly have a structure for it. */		BUG_ON(! cnx);		/* Theoretically we could be kicking a connection		 * which doesn't deserve it, but in practice if we've		 * had a Tx timeout, the pending_lpmask will have		 * exactly one bit set - the connection causing the		 * problem. */		spin_lock(&cnx->lock);		cnx->state |= VETH_STATE_RESET;		veth_kick_statemachine(cnx);		spin_unlock(&cnx->lock);	}	spin_unlock_irqrestore(&port->pending_gate, flags);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/243cd55e021baf28babdd88112ac03ae5cd4bb9c/iseries_veth.c/buggy/drivers/net/iseries_veth.c