if (mp->tx_ring_skbs) mp->tx_ring_skbs--;
static void mv643xx_tx(struct net_device *dev){	struct mv643xx_private *mp = netdev_priv(dev);	struct pkt_info pkt_info;	while (eth_tx_return_desc(mp, &pkt_info) == ETH_OK) {		if (pkt_info.return_info) {			if (skb_shinfo(pkt_info.return_info)->nr_frags)				dma_unmap_page(NULL, pkt_info.buf_ptr,						pkt_info.byte_cnt,						DMA_TO_DEVICE);			else				dma_unmap_single(NULL, pkt_info.buf_ptr,						pkt_info.byte_cnt,						DMA_TO_DEVICE);			dev_kfree_skb_irq(pkt_info.return_info);			if (mp->tx_ring_skbs)				mp->tx_ring_skbs--;		} else			dma_unmap_page(NULL, pkt_info.buf_ptr,					pkt_info.byte_cnt, DMA_TO_DEVICE);	}	if (netif_queue_stopped(dev) &&			mp->tx_ring_size > mp->tx_ring_skbs + MAX_DESCS_PER_SKB)		netif_wake_queue(dev);}