diff options
Diffstat (limited to 'drivers/net/ethernet/8390/axnet_cs.c')
| -rw-r--r-- | drivers/net/ethernet/8390/axnet_cs.c | 120 | 
1 files changed, 57 insertions, 63 deletions
diff --git a/drivers/net/ethernet/8390/axnet_cs.c b/drivers/net/ethernet/8390/axnet_cs.c index d801c1410fb..73c57a4a7b9 100644 --- a/drivers/net/ethernet/8390/axnet_cs.c +++ b/drivers/net/ethernet/8390/axnet_cs.c @@ -28,7 +28,6 @@  #include <linux/kernel.h>  #include <linux/module.h> -#include <linux/init.h>  #include <linux/ptrace.h>  #include <linux/string.h>  #include <linux/timer.h> @@ -105,6 +104,7 @@ static void AX88190_init(struct net_device *dev, int startp);  static int ax_open(struct net_device *dev);  static int ax_close(struct net_device *dev);  static irqreturn_t ax_interrupt(int irq, void *dev_id); +static u32 axnet_msg_enable;  /*====================================================================*/ @@ -152,6 +152,7 @@ static int axnet_probe(struct pcmcia_device *link)  	return -ENOMEM;      ei_local = netdev_priv(dev); +    ei_local->msg_enable = axnet_msg_enable;      spin_lock_init(&ei_local->page_lock);      info = PRIV(dev); @@ -650,11 +651,12 @@ static void block_input(struct net_device *dev, int count,  			struct sk_buff *skb, int ring_offset)  {      unsigned int nic_base = dev->base_addr; +    struct ei_device *ei_local = netdev_priv(dev);      int xfer_count = count;      char *buf = skb->data; -    if ((ei_debug > 4) && (count != 4)) -	    pr_debug("%s: [bi=%d]\n", dev->name, count+4); +    if ((netif_msg_rx_status(ei_local)) && (count != 4)) +	netdev_dbg(dev, "[bi=%d]\n", count+4);      outb_p(ring_offset & 0xff, nic_base + EN0_RSARLO);      outb_p(ring_offset >> 8, nic_base + EN0_RSARHI);      outb_p(E8390_RREAD+E8390_START, nic_base + AXNET_CMD); @@ -810,11 +812,6 @@ module_pcmcia_driver(axnet_cs_driver);  #define ei_block_input (ei_local->block_input)  #define ei_get_8390_hdr (ei_local->get_8390_hdr) -/* use 0 for production, 1 for verification, >2 for debug */ -#ifndef ei_debug -int ei_debug = 1; -#endif -  /* Index to functions. */  static void ei_tx_intr(struct net_device *dev);  static void ei_tx_err(struct net_device *dev); @@ -925,11 +922,10 @@ static void axnet_tx_timeout(struct net_device *dev)  	isr = inb(e8390_base+EN0_ISR);  	spin_unlock_irqrestore(&ei_local->page_lock, flags); -	netdev_printk(KERN_DEBUG, dev, -		      "Tx timed out, %s TSR=%#2x, ISR=%#2x, t=%d.\n", -		      (txsr & ENTSR_ABT) ? "excess collisions." : -		      (isr) ? "lost interrupt?" : "cable problem?", -		      txsr, isr, tickssofar); +	netdev_dbg(dev, "Tx timed out, %s TSR=%#2x, ISR=%#2x, t=%d.\n", +		   (txsr & ENTSR_ABT) ? "excess collisions." : +		   (isr) ? "lost interrupt?" : "cable problem?", +		   txsr, isr, tickssofar);  	if (!isr && !dev->stats.tx_packets)   	{ @@ -998,29 +994,30 @@ static netdev_tx_t axnet_start_xmit(struct sk_buff *skb,  	{  		output_page = ei_local->tx_start_page;  		ei_local->tx1 = send_length; -		if (ei_debug  &&  ei_local->tx2 > 0) -			netdev_printk(KERN_DEBUG, dev, -				      "idle transmitter tx2=%d, lasttx=%d, txing=%d\n", -				      ei_local->tx2, ei_local->lasttx, -				      ei_local->txing); +		if ((netif_msg_tx_queued(ei_local)) && +		    ei_local->tx2 > 0) +			netdev_dbg(dev, +				   "idle transmitter tx2=%d, lasttx=%d, txing=%d\n", +				   ei_local->tx2, ei_local->lasttx, +				   ei_local->txing);  	}  	else if (ei_local->tx2 == 0)   	{  		output_page = ei_local->tx_start_page + TX_PAGES/2;  		ei_local->tx2 = send_length; -		if (ei_debug  &&  ei_local->tx1 > 0) -			netdev_printk(KERN_DEBUG, dev, -				      "idle transmitter, tx1=%d, lasttx=%d, txing=%d\n", -				      ei_local->tx1, ei_local->lasttx, -				      ei_local->txing); +		if ((netif_msg_tx_queued(ei_local)) && +		    ei_local->tx1 > 0) +			netdev_dbg(dev, +				   "idle transmitter, tx1=%d, lasttx=%d, txing=%d\n", +				   ei_local->tx1, ei_local->lasttx, +				   ei_local->txing);  	}  	else  	{	/* We should never get here. */ -		if (ei_debug) -			netdev_printk(KERN_DEBUG, dev, -				      "No Tx buffers free! tx1=%d tx2=%d last=%d\n", -				      ei_local->tx1, ei_local->tx2, -				      ei_local->lasttx); +		netif_dbg(ei_local, tx_err, dev, +			  "No Tx buffers free! tx1=%d tx2=%d last=%d\n", +			  ei_local->tx1, ei_local->tx2, +			  ei_local->lasttx);  		ei_local->irqlock = 0;  		netif_stop_queue(dev);  		outb_p(ENISR_ALL, e8390_base + EN0_IMR); @@ -1124,10 +1121,9 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id)  		spin_unlock_irqrestore(&ei_local->page_lock, flags);  		return IRQ_NONE;  	} -     -	if (ei_debug > 3) -		netdev_printk(KERN_DEBUG, dev, "interrupt(isr=%#2.2x)\n", -			      inb_p(e8390_base + EN0_ISR)); + +	netif_dbg(ei_local, intr, dev, "interrupt(isr=%#2.2x)\n", +		  inb_p(e8390_base + EN0_ISR));  	outb_p(0x00, e8390_base + EN0_ISR);  	ei_local->irqlock = 1; @@ -1137,9 +1133,8 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id)  	       ++nr_serviced < MAX_SERVICE)  	{  		if (!netif_running(dev) || (interrupts == 0xff)) { -			if (ei_debug > 1) -				netdev_warn(dev, -					    "interrupt from stopped card\n"); +			netif_warn(ei_local, intr, dev, +				   "interrupt from stopped card\n");  			outb_p(interrupts, e8390_base + EN0_ISR);  			interrupts = 0;  			break; @@ -1175,14 +1170,15 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id)  		}  	} -	if (interrupts && ei_debug > 3)  +	if (interrupts && (netif_msg_intr(ei_local)))  	{  		handled = 1;  		if (nr_serviced >= MAX_SERVICE)   		{  			/* 0xFF is valid for a card removal */ -			if(interrupts!=0xFF) -				netdev_warn(dev, "Too much work at interrupt, status %#2.2x\n", +			if (interrupts != 0xFF) +				netdev_warn(dev, +					    "Too much work at interrupt, status %#2.2x\n",  					    interrupts);  			outb_p(ENISR_ALL, e8390_base + EN0_ISR); /* Ack. most intrs. */  		} else { @@ -1221,8 +1217,7 @@ static void ei_tx_err(struct net_device *dev)  	unsigned char tx_was_aborted = txsr & (ENTSR_ABT+ENTSR_FU);  #ifdef VERBOSE_ERROR_DUMP -	netdev_printk(KERN_DEBUG, dev, -		      "transmitter error (%#2x):", txsr); +	netdev_dbg(dev, "transmitter error (%#2x):", txsr);  	if (txsr & ENTSR_ABT)  		pr_cont(" excess-collisions");  	if (txsr & ENTSR_ND) @@ -1287,9 +1282,9 @@ static void ei_tx_intr(struct net_device *dev)  	else if (ei_local->tx2 < 0)   	{  		if (ei_local->lasttx != 2  &&  ei_local->lasttx != -2) -			netdev_info(dev, "%s: bogus last_tx_buffer %d, tx2=%d\n", -				    ei_local->name, ei_local->lasttx, -				    ei_local->tx2); +			netdev_err(dev, "%s: bogus last_tx_buffer %d, tx2=%d\n", +				   ei_local->name, ei_local->lasttx, +				   ei_local->tx2);  		ei_local->tx2 = 0;  		if (ei_local->tx1 > 0)   		{ @@ -1366,9 +1361,11 @@ static void ei_receive(struct net_device *dev)  		   Keep quiet if it looks like a card removal. One problem here  		   is that some clones crash in roughly the same way.  		 */ -		if (ei_debug > 0  &&  this_frame != ei_local->current_page && (this_frame!=0x0 || rxing_page!=0xFF)) -		    netdev_err(dev, "mismatched read page pointers %2x vs %2x\n", -			       this_frame, ei_local->current_page); +		if ((netif_msg_rx_err(ei_local)) && +		    this_frame != ei_local->current_page && +		    (this_frame != 0x0 || rxing_page != 0xFF)) +			netdev_err(dev, "mismatched read page pointers %2x vs %2x\n", +				   this_frame, ei_local->current_page);  		if (this_frame == rxing_page)	/* Read all the frames? */  			break;				/* Done for now */ @@ -1383,11 +1380,10 @@ static void ei_receive(struct net_device *dev)  		if (pkt_len < 60  ||  pkt_len > 1518)   		{ -			if (ei_debug) -				netdev_printk(KERN_DEBUG, dev, -					      "bogus packet size: %d, status=%#2x nxpg=%#2x\n", -					      rx_frame.count, rx_frame.status, -					      rx_frame.next); +			netif_err(ei_local, rx_err, dev, +				  "bogus packet size: %d, status=%#2x nxpg=%#2x\n", +				  rx_frame.count, rx_frame.status, +				  rx_frame.next);  			dev->stats.rx_errors++;  			dev->stats.rx_length_errors++;  		} @@ -1398,10 +1394,9 @@ static void ei_receive(struct net_device *dev)  			skb = netdev_alloc_skb(dev, pkt_len + 2);  			if (skb == NULL)   			{ -				if (ei_debug > 1) -					netdev_printk(KERN_DEBUG, dev, -						      "Couldn't allocate a sk_buff of size %d\n", -						      pkt_len); +				netif_err(ei_local, rx_err, dev, +					  "Couldn't allocate a sk_buff of size %d\n", +					  pkt_len);  				dev->stats.rx_dropped++;  				break;  			} @@ -1420,11 +1415,10 @@ static void ei_receive(struct net_device *dev)  		}   		else   		{ -			if (ei_debug) -				netdev_printk(KERN_DEBUG, dev, -					      "bogus packet: status=%#2x nxpg=%#2x size=%d\n", -					      rx_frame.status, rx_frame.next, -					      rx_frame.count); +			netif_err(ei_local, rx_err, dev, +				  "bogus packet: status=%#2x nxpg=%#2x size=%d\n", +				  rx_frame.status, rx_frame.next, +				  rx_frame.count);  			dev->stats.rx_errors++;  			/* NB: The NIC counts CRC, frame and missed errors. */  			if (pkt_stat & ENRSR_FO) @@ -1461,6 +1455,7 @@ static void ei_rx_overrun(struct net_device *dev)  	axnet_dev_t *info = PRIV(dev);  	long e8390_base = dev->base_addr;  	unsigned char was_txing, must_resend = 0; +	struct ei_device *ei_local = netdev_priv(dev);  	/*  	 * Record whether a Tx was in progress and then issue the @@ -1468,9 +1463,8 @@ static void ei_rx_overrun(struct net_device *dev)  	 */  	was_txing = inb_p(e8390_base+E8390_CMD) & E8390_TRANS;  	outb_p(E8390_NODMA+E8390_PAGE0+E8390_STOP, e8390_base+E8390_CMD); -     -	if (ei_debug > 1) -		netdev_printk(KERN_DEBUG, dev, "Receiver overrun\n"); + +	netif_dbg(ei_local, rx_err, dev, "Receiver overrun\n");  	dev->stats.rx_over_errors++;  	/*   | 
