/* DM9000 interrupt handler receive the packet to upper layer, free the transmitted packet  */
static void dm9000_tx_done(struct net_device *dev, board_info_t *db)
/* DM9000 interrupt handler receive the packet to upper layer, free the transmitted packet  */
static void dm9000_tx_done(struct net_device *dev, board_info_t *db)
{
	int tx_status = ior(db, DM9000_NSR);
	if (tx_status & (NSR_TX2END | NSR_TX1END)) {
		db->tx_pkt_cnt--;
		dev->stats.tx_packets++;
		if (netif_msg_tx_done(db))
			dev_dbg(db->dev, "tx done, NSR %02x\n", tx_status);
		if (db->tx_pkt_cnt > 0)
			dm9000_send_packet(dev, db->queue_ip_summed,
					   db->queue_pkt_len);
		netif_wake_queue(dev);
	}
}