"  dma                  <%zx>\n" 
"  dma                  <%llx>\n" 
e1000_clean_tx_irq(struct e1000_adapter *adapter){	struct e1000_desc_ring *tx_ring = &adapter->tx_ring;	struct net_device *netdev = adapter->netdev;	struct e1000_tx_desc *tx_desc, *eop_desc;	struct e1000_buffer *buffer_info;	unsigned int i, eop;	boolean_t cleaned = FALSE;	i = tx_ring->next_to_clean;	eop = tx_ring->buffer_info[i].next_to_watch;	eop_desc = E1000_TX_DESC(*tx_ring, eop);	while(eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) {		/* Premature writeback of Tx descriptors clear (free buffers		 * and unmap pci_mapping) previous_buffer_info */		if (likely(adapter->previous_buffer_info.skb != NULL)) {			e1000_unmap_and_free_tx_resource(adapter,					&adapter->previous_buffer_info);		}		for(cleaned = FALSE; !cleaned; ) {			tx_desc = E1000_TX_DESC(*tx_ring, i);			buffer_info = &tx_ring->buffer_info[i];			cleaned = (i == eop);#ifdef NETIF_F_TSO			if (!(netdev->features & NETIF_F_TSO)) {#endif				e1000_unmap_and_free_tx_resource(adapter,				                                 buffer_info);#ifdef NETIF_F_TSO			} else {				if (cleaned) {					memcpy(&adapter->previous_buffer_info,					       buffer_info,					       sizeof(struct e1000_buffer));					memset(buffer_info, 0,					       sizeof(struct e1000_buffer));				} else {					e1000_unmap_and_free_tx_resource(					    adapter, buffer_info);				}			}#endif			tx_desc->buffer_addr = 0;			tx_desc->lower.data = 0;			tx_desc->upper.data = 0;			if(unlikely(++i == tx_ring->count)) i = 0;		}				eop = tx_ring->buffer_info[i].next_to_watch;		eop_desc = E1000_TX_DESC(*tx_ring, eop);	}	tx_ring->next_to_clean = i;	spin_lock(&adapter->tx_lock);	if(unlikely(cleaned && netif_queue_stopped(netdev) &&		    netif_carrier_ok(netdev)))		netif_wake_queue(netdev);	spin_unlock(&adapter->tx_lock);	if(adapter->detect_tx_hung) {		/* Detect a transmit hang in hardware, this serializes the		 * check with the clearing of time_stamp and movement of i */		adapter->detect_tx_hung = FALSE;		if (tx_ring->buffer_info[i].dma &&		    time_after(jiffies, tx_ring->buffer_info[i].time_stamp + HZ)		    && !(E1000_READ_REG(&adapter->hw, STATUS) &			E1000_STATUS_TXOFF)) {			/* detected Tx unit hang */			i = tx_ring->next_to_clean;			eop = tx_ring->buffer_info[i].next_to_watch;			eop_desc = E1000_TX_DESC(*tx_ring, eop);			DPRINTK(DRV, ERR, "Detected Tx Unit Hang\n"					"  TDH                  <%x>\n"					"  TDT                  <%x>\n"					"  next_to_use          <%x>\n"					"  next_to_clean        <%x>\n"					"buffer_info[next_to_clean]\n"					"  dma                  <%zx>\n"					"  time_stamp           <%lx>\n"					"  next_to_watch        <%x>\n"					"  jiffies              <%lx>\n"					"  next_to_watch.status <%x>\n",				E1000_READ_REG(&adapter->hw, TDH),				E1000_READ_REG(&adapter->hw, TDT),				tx_ring->next_to_use,				i,				tx_ring->buffer_info[i].dma,				tx_ring->buffer_info[i].time_stamp,				eop,				jiffies,				eop_desc->upper.fields.status);			netif_stop_queue(netdev);		}	}#ifdef NETIF_F_TSO	if( unlikely(!(eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) &&	    time_after(jiffies, adapter->previous_buffer_info.time_stamp + HZ)))		e1000_unmap_and_free_tx_resource(		    adapter, &adapter->previous_buffer_info);#endif	return cleaned;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b4ee21f442ba7a8c43e00b32088d437259890cd0/e1000_main.c/clean/drivers/net/e1000/e1000_main.c