Re: [PATCH] [1/11] pasemi_mac: basic error checking

2007-10-03 Thread Jeff Garzik

Olof Johansson wrote:

pasemi_mac: basic error checking

Add some rudimentary error checking to pasemi_mac.

Signed-off-by: Olof Johansson [EMAIL PROTECTED]


applied 1-10


-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [1/11] pasemi_mac: basic error checking

2007-10-02 Thread Olof Johansson
pasemi_mac: basic error checking

Add some rudimentary error checking to pasemi_mac.

Signed-off-by: Olof Johansson [EMAIL PROTECTED]

Index: k.org/drivers/net/pasemi_mac.c
===
--- k.org.orig/drivers/net/pasemi_mac.c
+++ k.org/drivers/net/pasemi_mac.c
@@ -445,6 +445,38 @@ static void pasemi_mac_restart_tx_intr(s
 }
 
 
+static inline void pasemi_mac_rx_error(struct pasemi_mac *mac, u64 macrx)
+{
+   unsigned int rcmdsta, ccmdsta;
+
+   if (!netif_msg_rx_err(mac))
+   return;
+
+   rcmdsta = read_dma_reg(mac, PAS_DMA_RXINT_RCMDSTA(mac-dma_if));
+   ccmdsta = read_dma_reg(mac, PAS_DMA_RXCHAN_CCMDSTA(mac-dma_rxch));
+
+   printk(KERN_ERR pasemi_mac: rx error. macrx %016lx, rx status %lx\n,
+   macrx, *mac-rx_status);
+
+   printk(KERN_ERR pasemi_mac: rcmdsta %08x ccmdsta %08x\n,
+   rcmdsta, ccmdsta);
+}
+
+static inline void pasemi_mac_tx_error(struct pasemi_mac *mac, u64 mactx)
+{
+   unsigned int cmdsta;
+
+   if (!netif_msg_tx_err(mac))
+   return;
+
+   cmdsta = read_dma_reg(mac, PAS_DMA_TXCHAN_TCMDSTA(mac-dma_txch));
+
+   printk(KERN_ERR pasemi_mac: tx error. mactx 0x%016lx, \
+   tx status 0x%016lx\n, mactx, *mac-tx_status);
+
+   printk(KERN_ERR pasemi_mac: tcmdsta 0x%08x\n, cmdsta);
+}
+
 static int pasemi_mac_clean_rx(struct pasemi_mac *mac, int limit)
 {
unsigned int n;
@@ -468,10 +500,13 @@ static int pasemi_mac_clean_rx(struct pa
prefetchw(dp);
macrx = dp-macrx;
 
+   if ((macrx  XCT_MACRX_E) ||
+   (*mac-rx_status  PAS_STATUS_ERROR))
+   pasemi_mac_rx_error(mac, macrx);
+
if (!(macrx  XCT_MACRX_O))
break;
 
-
info = NULL;
 
/* We have to scan for our skb since there's no way
@@ -563,6 +598,10 @@ restart:
for (i = start; i  limit; i++) {
dp = TX_DESC(mac, i);
 
+   if ((dp-mactx  XCT_MACTX_E) ||
+   (*mac-tx_status  PAS_STATUS_ERROR))
+   pasemi_mac_tx_error(mac, dp-mactx);
+
if (unlikely(dp-mactx  XCT_MACTX_O))
/* Not yet transmitted */
break;
@@ -607,9 +646,6 @@ static irqreturn_t pasemi_mac_rx_intr(in
if (!(*mac-rx_status  PAS_STATUS_CAUSE_M))
return IRQ_NONE;
 
-   if (*mac-rx_status  PAS_STATUS_ERROR)
-   printk(rx_status reported error\n);
-
/* Don't reset packet count so it won't fire again but clear
 * all others.
 */
@@ -1230,7 +1266,7 @@ pasemi_mac_probe(struct pci_dev *pdev, c
dev_err(mac-pdev-dev, register_netdev failed with error 
%d\n,
err);
goto out;
-   } else
+   } else if netif_msg_probe(mac)
printk(KERN_INFO %s: PA Semi %s: intf %d, txch %d, rxch %d, 
   hw addr %s\n,
   dev-name, mac-type == MAC_TYPE_GMAC ? GMAC : XAUI,
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html