All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dale Farnsworth" <dale@farnsworth.org>
To: Netdev <netdev@oss.sgi.com>, Jeff Garzik <jgarzik@pobox.com>
Cc: Ralf Baechle <ralf@linux-mips.org>,
	Manish Lachwani <mlachwani@mvista.com>,
	Brian Waite <brian@waitefamily.us>,
	"Steven J. Hill" <sjhill@realitydiluted.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	James Chapman <jchapman@katalix.com>
Subject: mv643xx(8/20): remove ETH_FUNC_RET_STATUS and unused ETH_TARGET enums
Date: Mon, 28 Mar 2005 16:48:28 -0700	[thread overview]
Message-ID: <20050328234827.GH29098@xyzzy> (raw)
In-Reply-To: <20050328233807.GA28423@xyzzy>

The ETH_FUNC_RET_STATUS enum makes the driver code look more complex
than it needs to be so remove it. The ETH_TARGET enum was no longer
used so that goes as well.

Signed-off-by: James Chapman <jchapman@katalix.com>
Acked-by: Dale Farnsworth <dale@farnsworth.org>

Index: linux-2.5-enet/drivers/net/mv643xx_eth.h
===================================================================
--- linux-2.5-enet.orig/drivers/net/mv643xx_eth.h
+++ linux-2.5-enet/drivers/net/mv643xx_eth.h
@@ -385,25 +385,6 @@
 #define ETH_TX_ENABLE_INTERRUPT			(BIT23)
 #define ETH_AUTO_MODE				(BIT30)
 
-/* typedefs */
-
-typedef enum _eth_func_ret_status {
-	ETH_OK,			/* Returned as expected.		*/
-	ETH_ERROR,		/* Fundamental error.			*/
-	ETH_RETRY,		/* Could not process request. Try later.*/
-	ETH_END_OF_JOB,		/* Ring has nothing to process.		*/
-	ETH_QUEUE_FULL,		/* Ring resource error.			*/
-	ETH_QUEUE_LAST_RESOURCE	/* Ring resources about to exhaust.	*/
-} ETH_FUNC_RET_STATUS;
-
-typedef enum _eth_target {
-	ETH_TARGET_DRAM,
-	ETH_TARGET_DEVICE,
-	ETH_TARGET_CBS,
-	ETH_TARGET_PCI0,
-	ETH_TARGET_PCI1
-} ETH_TARGET;
-
 /* These are for big-endian machines.  Little endian needs different
  * definitions.
  */
Index: linux-2.5-enet/drivers/net/mv643xx_eth.c
===================================================================
--- linux-2.5-enet.orig/drivers/net/mv643xx_eth.c
+++ linux-2.5-enet/drivers/net/mv643xx_eth.c
@@ -117,14 +117,14 @@
 static void eth_clear_mib_counters(unsigned int eth_port_num);
 
 /* Port data flow control routines */
-static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
-					 struct pkt_info *p_pkt_info);
-static ETH_FUNC_RET_STATUS eth_tx_return_desc(struct mv643xx_private *mp,
-					      struct pkt_info *p_pkt_info);
-static ETH_FUNC_RET_STATUS eth_port_receive(struct mv643xx_private *mp,
-					    struct pkt_info *p_pkt_info);
-static ETH_FUNC_RET_STATUS eth_rx_return_buff(struct mv643xx_private *mp,
-					      struct pkt_info *p_pkt_info);
+static int eth_port_send(struct mv643xx_private *mp,
+			 struct pkt_info *p_pkt_info);
+static int eth_tx_return_desc(struct mv643xx_private *mp,
+			      struct pkt_info *p_pkt_info);
+static int eth_port_receive(struct mv643xx_private *mp,
+			    struct pkt_info *p_pkt_info);
+static void eth_rx_return_buff(struct mv643xx_private *mp,
+			       struct pkt_info *p_pkt_info);
 
 static char mv643xx_driver_name[] = "mv643xx_eth";
 static char mv643xx_driver_version[] = "1.0";
@@ -220,11 +220,7 @@
 		pkt_info.buf_ptr = dma_map_single(NULL, skb->data, RX_SKB_SIZE,
 							DMA_FROM_DEVICE);
 		pkt_info.return_info = skb;
-		if (eth_rx_return_buff(mp, &pkt_info) != ETH_OK) {
-			printk(KERN_ERR
-				"%s: Error allocating RX Ring\n", dev->name);
-			break;
-		}
+		eth_rx_return_buff(mp, &pkt_info);
 		skb_reserve(skb, 2);
 	}
 	clear_bit(0, &mp->rx_task_busy);
@@ -384,7 +380,7 @@
 	spin_lock(&mp->lock);
 
 	/* Check only queue 0 */
-	while (eth_tx_return_desc(mp, &pkt_info) == ETH_OK) {
+	while (eth_tx_return_desc(mp, &pkt_info) == 0) {
 		if (pkt_info.cmd_sts & BIT0) {
 			if (netif_msg_tx_err(mp))
 				printk(KERN_WARNING "%s: Error in TX: cmd_sts=%08x\n",
@@ -453,9 +449,9 @@
 	struct pkt_info pkt_info;
 
 #ifdef MV643XX_NAPI
-	while (eth_port_receive(mp, &pkt_info) == ETH_OK && budget > 0) {
+	while (eth_port_receive(mp, &pkt_info) == 0 && budget > 0) {
 #else
-	while (eth_port_receive(mp, &pkt_info) == ETH_OK) {
+	while (eth_port_receive(mp, &pkt_info) == 0) {
 #endif
 		mp->rx_ring_skbs--;
 		received_packets++;
@@ -1204,7 +1200,7 @@
 	struct mv643xx_private *mp = netdev_priv(dev);
 	struct pkt_info pkt_info;
 
-	while (eth_tx_return_desc(mp, &pkt_info) == ETH_OK) {
+	while (eth_tx_return_desc(mp, &pkt_info) == 0) {
 		if (pkt_info.return_info) {
 			if (skb_shinfo(pkt_info.return_info)->nr_frags)
 				dma_unmap_page(NULL, pkt_info.buf_ptr,
@@ -1294,7 +1290,7 @@
 {
 	struct mv643xx_private *mp = netdev_priv(dev);
 	struct net_device_stats *stats = &mp->stats;
-	ETH_FUNC_RET_STATUS status;
+	int status;
 	unsigned long flags;
 	struct pkt_info pkt_info;
 
@@ -1356,10 +1352,9 @@
 		pkt_info.return_info = skb;
 		mp->tx_ring_skbs++;
 		status = eth_port_send(mp, &pkt_info);
-		if ((status == ETH_ERROR) || (status == ETH_QUEUE_FULL))
-			if (netif_msg_tx_err(mp))
-				printk(KERN_WARNING "%s: Error on transmitting "
-				       "packet\n", dev->name);
+		if (status < 0)
+			goto out;
+
 		stats->tx_bytes += pkt_info.byte_cnt;
 	} else {
 		unsigned int frag;
@@ -1415,19 +1410,9 @@
 		}
 
 		status = eth_port_send(mp, &pkt_info);
-		if (status != ETH_OK) {
-			if ((status == ETH_ERROR))
-				printk(KERN_WARNING "%s: Error on "
-					       "transmitting packet\n",
-					       dev->name);
-			if (status == ETH_QUEUE_FULL)
-				printk(KERN_WARNING "%s: Error on "
-					       "Queue Full\n",
-					       dev->name);
-			if (status == ETH_QUEUE_LAST_RESOURCE)
-				printk(KERN_WARNING "%s: Tx resource error\n",
-					       dev->name);
-		}
+		if (status < 0)
+			goto out;
+
 		stats->tx_bytes += pkt_info.byte_cnt;
 
 		/* Check for the remaining frags */
@@ -1454,24 +1439,9 @@
 							DMA_TO_DEVICE);
 
 			status = eth_port_send(mp, &pkt_info);
+			if (status < 0)
+				goto out;
 
-			if (status != ETH_OK) {
-				if ((status == ETH_ERROR))
-					if (netif_msg_tx_err(mp))
-						printk(KERN_WARNING "%s: Error on "
-						       "transmitting packet\n",
-						       dev->name);
-
-				if (status == ETH_QUEUE_LAST_RESOURCE)
-					if (netif_msg_tx_err(mp))
-						printk(KERN_WARNING "%s: Tx resource "
-						       "error\n", dev->name);
-
-				if (status == ETH_QUEUE_FULL)
-					if (netif_msg_tx_err(mp))
-						printk(KERN_WARNING "%s: Queue is full\n",
-						       dev->name);
-			}
 			stats->tx_bytes += pkt_info.byte_cnt;
 		}
 	}
@@ -1485,10 +1455,8 @@
 	pkt_info.return_info = skb;
 	mp->tx_ring_skbs++;
 	status = eth_port_send(mp, &pkt_info);
-	if ((status == ETH_ERROR) || (status == ETH_QUEUE_FULL))
-		if (netif_msg_tx_err(mp))
-			printk(KERN_WARNING "%s: Error on transmitting packet\n",
-			       dev->name);
+	if (status == 0)
+		goto out;
 
 	stats->tx_bytes += pkt_info.byte_cnt;
 #endif
@@ -1508,6 +1476,7 @@
 	stats->tx_packets++;
 	dev->trans_start = jiffies;
 
+out:
 	spin_unlock_irqrestore(&mp->lock, flags);
 
 	return 0;		/* success */
@@ -2713,17 +2682,20 @@
 /*
  * Modified to include the first descriptor pointer in case of SG
  */
-static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
-					 struct pkt_info *p_pkt_info)
+static int eth_port_send(struct mv643xx_private *mp,
+			 struct pkt_info *p_pkt_info)
 {
 	int tx_desc_curr, tx_desc_used, tx_first_desc, tx_next_desc;
 	struct eth_tx_desc *current_descriptor;
 	struct eth_tx_desc *first_descriptor;
 	u32 command;
+	int status;
 
 	/* Do not process Tx ring in case of Tx ring resource error */
-	if (mp->tx_resource_err)
-		return ETH_QUEUE_FULL;
+	if (mp->tx_resource_err) {
+		status = -ENOBUFS;
+		goto out;
+	}
 
 	/*
 	 * The hardware requires that each buffer that is <= 8 bytes
@@ -2732,7 +2704,8 @@
 	if (p_pkt_info->byte_cnt <= 8 && p_pkt_info->buf_ptr & 0x7) {
 		printk(KERN_ERR "%s: packet size <= 8 (%d) problem\n",
 		       dev->name, p_pkt_info->byte_cnt);
-		return ETH_ERROR;
+		status = -EIO;
+		goto out;
 	}
 
 	/* Get the Tx Desc ring indexes */
@@ -2787,26 +2760,34 @@
 	if (tx_next_desc == tx_desc_used) {
 		mp->tx_resource_err = 1;
 		mp->tx_curr_desc_q = tx_first_desc;
-
-		return ETH_QUEUE_LAST_RESOURCE;
+		result = -ENOBUFS;
+		goto out;
 	}
 
 	mp->tx_curr_desc_q = tx_next_desc;
+	status = 0;
+
+out:
+	if (status == -ENOBUFS)
+		printk(KERN_ERR "%s: Tx queue full\n", dev->name);
 
-	return ETH_OK;
+	return status;
 }
 #else
-static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
-					 struct pkt_info *p_pkt_info)
+static int eth_port_send(struct mv643xx_private *mp,
+			 struct pkt_info *p_pkt_info)
 {
 	int tx_desc_curr;
 	int tx_desc_used;
 	struct eth_tx_desc *current_descriptor;
 	unsigned int command_status;
+	int status;
 
 	/* Do not process Tx ring in case of Tx ring resource error */
-	if (mp->tx_resource_err)
-		return ETH_QUEUE_FULL;
+	if (mp->tx_resource_err) {
+		status = -ENOBUFS;
+		goto out;
+	}
 
 	/* Get the Tx Desc ring indexes */
 	tx_desc_curr = mp->tx_curr_desc_q;
@@ -2842,10 +2823,17 @@
 	/* Check for ring index overlap in the Tx desc ring */
 	if (tx_desc_curr == tx_desc_used) {
 		mp->tx_resource_err = 1;
-		return ETH_QUEUE_LAST_RESOURCE;
+		status = -ENOBUFS;
+		goto out;
 	}
 
-	return ETH_OK;
+	status = 0;
+
+out:
+	if (status == -ENOBUFS)
+		printk(KERN_ERR "%s: Error on Queue Full\n", mp->netdev->name);
+
+	return status;
 }
 #endif
 
@@ -2873,8 +2861,8 @@
  *	ETH_OK otherwise.
  *
  */
-static ETH_FUNC_RET_STATUS eth_tx_return_desc(struct mv643xx_private *mp,
-						struct pkt_info *p_pkt_info)
+static int eth_tx_return_desc(struct mv643xx_private *mp,
+			      struct pkt_info *p_pkt_info)
 {
 	int tx_desc_used;
 #ifdef MV643XX_CHECKSUM_OFFLOAD_TX
@@ -2892,17 +2880,17 @@
 
 	/* Sanity check */
 	if (p_tx_desc_used == NULL)
-		return ETH_ERROR;
+		return -EBADMSG;
 
 	/* Stop release. About to overlap the current available Tx descriptor */
 	if (tx_desc_used == tx_busy_desc && !mp->tx_resource_err)
-		return ETH_END_OF_JOB;
+		return -ENOMSG;
 
 	command_status = p_tx_desc_used->cmd_sts;
 
 	/* Still transmitting... */
 	if (command_status & (ETH_BUFFER_OWNED_BY_DMA))
-		return ETH_RETRY;
+		return -EBUSY;
 
 	/* Pass the packet information to the caller */
 	p_pkt_info->cmd_sts = command_status;
@@ -2915,7 +2903,7 @@
 	/* Any Tx return cancels the Tx resource error status */
 	mp->tx_resource_err = 0;
 
-	return ETH_OK;
+	return 0;
 }
 
 /*
@@ -2941,7 +2929,7 @@
  *	ETH_END_OF_JOB if there is no received data.
  *	ETH_OK otherwise.
  */
-static ETH_FUNC_RET_STATUS eth_port_receive(struct mv643xx_private *mp,
+static int eth_port_receive(struct mv643xx_private *mp,
 						struct pkt_info *p_pkt_info)
 {
 	int rx_next_curr_desc, rx_curr_desc, rx_used_desc;
@@ -2950,7 +2938,7 @@
 
 	/* Do not process Rx ring in case of Rx ring resource error */
 	if (mp->rx_resource_err)
-		return ETH_QUEUE_FULL;
+		return -ENOBUFS;
 
 	/* Get the Rx Desc ring 'curr and 'used' indexes */
 	rx_curr_desc = mp->rx_curr_desc_q;
@@ -2964,7 +2952,7 @@
 
 	/* Nothing to receive... */
 	if (command_status & (ETH_BUFFER_OWNED_BY_DMA))
-		return ETH_END_OF_JOB;
+		return -ENOMSG;
 
 	p_pkt_info->byte_cnt = (p_rx_desc->byte_cnt) - RX_BUF_OFFSET;
 	p_pkt_info->cmd_sts = command_status;
@@ -2991,7 +2979,7 @@
 	if (rx_next_curr_desc == rx_used_desc)
 		mp->rx_resource_err = 1;
 
-	return ETH_OK;
+	return 0;
 }
 
 /*
@@ -3014,8 +3002,8 @@
  *	ETH_ERROR in case the routine can not access Rx desc ring.
  *	ETH_OK otherwise.
  */
-static ETH_FUNC_RET_STATUS eth_rx_return_buff(struct mv643xx_private *mp,
-						struct pkt_info *p_pkt_info)
+static void eth_rx_return_buff(struct mv643xx_private *mp,
+			       struct pkt_info *p_pkt_info)
 {
 	int used_rx_desc;	/* Where to return Rx resource */
 	volatile struct eth_rx_desc *p_used_rx_desc;
@@ -3046,8 +3034,6 @@
 
 	/* Any Rx return cancels the Rx resource error status */
 	mp->rx_resource_err = 0;
-
-	return ETH_OK;
 }
 
 /************* Begin ethtool support *************************/

  parent reply	other threads:[~2005-03-28 23:48 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-28 23:38 [PATCH: 2.6.12-rc1] mv643xx: ethernet driver updates Dale Farnsworth
2005-03-28 23:40 ` mv643xx(1/20): Add mv643xx_enet support for PPC Pegasos platform Dale Farnsworth
2005-03-28 23:42 ` mv643xx(2/20): use MII library for PHY management Dale Farnsworth
2005-08-24  0:34   ` Mark Huth
2005-08-24  0:33     ` Benjamin Herrenschmidt
2005-03-28 23:43 ` mv643xx(3/20): use MII library for ethtool functions Dale Farnsworth
2005-03-28 23:44 ` mv643xx(4/20): Update the Artesyn katana mv643xx ethernet platform data Dale Farnsworth
2005-03-28 23:45 ` mv643xx(5/20): update ppc7d platform for new mv643xx_eth " Dale Farnsworth
2005-03-28 23:46 ` mv643xx(6/20): use netif_msg_xxx() to control log messages where appropriate Dale Farnsworth
2005-03-28 23:47 ` mv643xx(7/20): move static prototypes from header file into driver C file Dale Farnsworth
2005-03-28 23:48 ` Dale Farnsworth [this message]
2005-03-28 23:49 ` mv643xx(9/20): make internal functions take device pointer param consistently Dale Farnsworth
2005-03-28 23:49 ` mv643xx(10/20): compile fix for non-NAPI case Dale Farnsworth
2005-03-28 23:51 ` mv643xx(11/20): rename all functions to have a common mv643xx_eth prefix Dale Farnsworth
2005-03-28 23:55 ` mv643xx(12/20): reorder code to avoid prototype function declarations Dale Farnsworth
2005-03-28 23:55 ` mv643xx(13/20): remove useless function header block comments Dale Farnsworth
2005-03-28 23:56 ` mv643xx(14/20): whitespace and indentation cleanup Dale Farnsworth
2005-03-28 23:57 ` mv643xx(15/20): Add James Chapman to copyright statement and author list Dale Farnsworth
2005-03-28 23:57 ` mv643xx(16/20): Limit MTU to 1500 bytes unless connected at GigE speed Dale Farnsworth
2005-03-30 20:09   ` Jeff Garzik
2005-03-30 21:46     ` Dale Farnsworth
2005-03-28 23:58 ` mv643xx(17/20): Reset the PHY only at driver open time Dale Farnsworth
2005-03-28 23:59 ` mv643xx(18/20): Isolate the PHY at device close Dale Farnsworth
2005-03-29  0:00 ` mv643xx(19/20): Ensure NAPI poll routine only clears IRQs it handles Dale Farnsworth
2005-03-29  0:01 ` mv643xx(20/20): Fix promiscuous mode handling Dale Farnsworth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050328234827.GH29098@xyzzy \
    --to=dale@farnsworth.org \
    --cc=benh@kernel.crashing.org \
    --cc=brian@waitefamily.us \
    --cc=jchapman@katalix.com \
    --cc=jgarzik@pobox.com \
    --cc=mlachwani@mvista.com \
    --cc=netdev@oss.sgi.com \
    --cc=ralf@linux-mips.org \
    --cc=sjhill@realitydiluted.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.