netdev
[Top] [All Lists]

patch for common networking error messages

To: linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
Subject: patch for common networking error messages
From: Janice M Girouard <janiceg@xxxxxxxxxx>
Date: Mon, 16 Jun 2003 15:30:22 -0500
Cc: stekloff@xxxxxxxxxx, girouard@xxxxxxxxxx, lkessler@xxxxxxxxxx, kenistonj@xxxxxxxxxx, Jeff Garzik <jgarzik@xxxxxxxxx>, davem@xxxxxxxxxx
Organization: IBM Linux Technology Center - Network Device Drivers
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.2) Gecko/20030208 Netscape/7.02

Below is a patch that demonstrates standard messages for ethernet device drivers. I would like your feedback on the concept of standard network messages, and any suggestions for messages to include.
The intent of the standard message change is to:
1) Ensure key events are communicated to user space in a predictable way, enabling automated diagnostic systems or error log analysis, 2) Reduce the number of puzzling messages that are logged -- in this case, by replacing them with standard messages, and/or
3) Identify the device (or driver name) that is responsible for the error.

The patch includes changes for two drivers, the e1000 and tg3, to provide a concrete example of the concept. Below is a snapshot of an error log, with the new messages:

Jun 4 14:54:06 dyn95394175 kernel: e1000: Intel(R) PRO/1000 Network Driver - version 5.0.43-k3 Jun 4 14:54:06 dyn95394175 kernel: Copyright (c) 1999-2003 Intel Corporation. Jun 4 14:54:06 dyn95394175 kernel: eth2: Intel(R) PRO/1000 Network Connection
Jun  4 14:54:06 dyn95394175 kernel: eth2: scatter/gather I/O enabled
Jun 4 14:54:06 dyn95394175 kernel: eth2: all IP checksums on transmit enabled Jun 4 14:54:06 dyn95394175 kernel: eth3: Intel(R) PRO/1000 Network Connection
Jun  4 14:54:06 dyn95394175 kernel: eth3: scatter/gather I/O enabled
Jun 4 14:54:06 dyn95394175 kernel: eth3: all IP checksums on transmit enabled
...
Jun 4 14:54:06 dyn95394175 kernel: tg3: Broadcom Tigon3 ethernet driver - version 1.5
...

Below is the text for the most basic standard messages:

EMSG_NET_LINK_FAIL "%s: transient problem: link error detected - MII status %x\n"
EMSG_NET_LINK_UP     "%s: state change: link up, %d Mbps, %s-duplex\n"
EMSG_NET_HUNG        "%s: software failure: ethernet controller hung\n"
EMSG_NET_RX_ERR "%s: transient problem: packet receive error, rx_errors = %ld\n" EMSG_NET_TX_ERR "%s: transient problem: packet transmit error, tx_errors = %ld\n"
EMSG_NET_START_QUEUE "%s: performance event: (re)starting netdev queue\n"
EMSG_NET_STOP_QUEUE  "%s: performance event: stopping netdev queue\n"
EMSG_NET_SGATHER     "%s: scatter/gather I/O enabled\n"
EMSG_NET_NO_SGATHER "%s: performance event: scatter/gather I/O disabled\n" EMSG_NET_HW_CSUMS "%s: all IP checksums on transmit enabled\n" EMSG_NET_CSUMS "%s: TCP/UDP over IPv6 checksums on transmit enabled\n" EMSG_NET_NO_CSUMS "%s: performance event: IP checksums on transmit disabled\n"

Janice Girouard
janiceg@xxxxxxxxxx
===================================================

diff -Naur linux-2.5.69.orig/drivers/net/e1000/e1000_hw.c linux-2.5.69.newMsgs/drivers/net/e1000/e1000_hw.c --- linux-2.5.69.orig/drivers/net/e1000/e1000_hw.c 2003-06-04 13:24:46.000000000 -0500 +++ linux-2.5.69.newMsgs/drivers/net/e1000/e1000_hw.c 2003-06-04 13:14:58.000000000 -0500
@@ -31,6 +31,7 @@
 */

#include "e1000_hw.h"
+#include <linux/stdmsgs.h>

static int32_t e1000_set_phy_type(struct e1000_hw *hw);
static void e1000_phy_init_script(struct e1000_hw *hw);
@@ -468,7 +469,7 @@
     * be initialized based on a value in the EEPROM.
     */
if(e1000_read_eeprom(hw, EEPROM_INIT_CONTROL2_REG, 1, &eeprom_data) < 0) {
-        DEBUGOUT("EEPROM Read Error\n");
+        DEBUGOUT1(EMSG_DEV_EEPROM_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_EEPROM;
    }

@@ -666,7 +667,11 @@
            hw->autoneg_failed = 1;
            ret_val = e1000_check_for_link(hw);
            if(ret_val < 0) {
+        uint16_t mii_status_reg;
                DEBUGOUT("Error while checking for link\n");
+                e1000_read_phy_reg( hw, PHY_STATUS, &mii_status_reg);
+            DEBUGOUT1(EMSG_NET_LINK_FAIL, hw->back->adapter->netdev->name,
+                mii_status_reg);
                return ret_val;
            }
            hw->autoneg_failed = 0;
@@ -730,7 +735,7 @@
        msec_delay(15);

if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0000) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -746,29 +751,29 @@
            /* Disable SmartSpeed */
            if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
                                  &phy_data) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
            phy_data &= ~IGP01E1000_PSCFR_SMART_SPEED;
            if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CONFIG,
                                   phy_data) < 0) {
-                DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
            /* Set auto Master/Slave resolution process */
            if(e1000_read_phy_reg(hw, PHY_1000T_CTRL, &phy_data) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
            phy_data &= ~CR_1000T_MS_ENABLE;
            if(e1000_write_phy_reg(hw, PHY_1000T_CTRL, phy_data) < 0) {
-                DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
        }

if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -779,14 +784,14 @@
        hw->mdix = 1;

if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, phy_data) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

    } else {
        /* Enable CRS on TX. This must be set for half-duplex operation. */
        if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX;
@@ -826,7 +831,7 @@
        if(hw->disable_polarity_correction == 1)
            phy_data |= M88E1000_PSCR_POLARITY_REVERSAL;
        if(e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -834,7 +839,7 @@
         * to 25MHz clock.
         */
if(e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        phy_data |= M88E1000_EPSCR_TX_CLK_25;
@@ -847,7 +852,7 @@
                         M88E1000_EPSCR_SLAVE_DOWNSHIFT_1X);
            if(e1000_write_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL,
                                   phy_data) < 0) {
-                DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
        }
@@ -855,7 +860,7 @@
        /* SW Reset the PHY so all changes take effect */
        ret_val = e1000_phy_reset(hw);
        if(ret_val < 0) {
-            DEBUGOUT("Error Resetting the PHY\n");
+            DEBUGOUT1(EMSG_DEV_SW_RESET, hw->back->adapter->netdev->name);
            return ret_val;
        }
    }
@@ -899,12 +904,12 @@
         * the Auto Neg Restart bit in the PHY control register.
         */
        if(e1000_read_phy_reg(hw, PHY_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        phy_data |= (MII_CR_AUTO_NEG_EN | MII_CR_RESTART_AUTO_NEG);
        if(e1000_write_phy_reg(hw, PHY_CTRL, phy_data) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -933,11 +938,11 @@
     */
    for(i = 0; i < 10; i++) {
        if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(phy_data & MII_SR_LINK_STATUS) {
@@ -988,13 +993,13 @@

    /* Read the MII Auto-Neg Advertisement Register (Address 4). */
    if(e1000_read_phy_reg(hw, PHY_AUTONEG_ADV, &mii_autoneg_adv_reg) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }

    /* Read the MII 1000Base-T Control Register (Address 9). */
    if(e1000_read_phy_reg(hw, PHY_1000T_CTRL, &mii_1000t_ctrl_reg) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }

@@ -1103,14 +1108,14 @@
    }

    if(e1000_write_phy_reg(hw, PHY_AUTONEG_ADV, mii_autoneg_adv_reg) < 0) {
-        DEBUGOUT("PHY Write Error\n");
+           DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }

    DEBUGOUT1("Auto-Neg Advertising %x\n", mii_autoneg_adv_reg);

    if(e1000_write_phy_reg(hw, PHY_1000T_CTRL, mii_1000t_ctrl_reg) < 0) {
-        DEBUGOUT("PHY Write Error\n");
+           DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    return 0;
@@ -1150,7 +1155,7 @@

    /* Read the MII Control Register. */
    if(e1000_read_phy_reg(hw, PHY_CTRL, &mii_ctrl_reg) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }

@@ -1199,7 +1204,7 @@

    if (hw->phy_type == e1000_phy_m88) {
        if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -1208,7 +1213,7 @@
         */
        phy_data &= ~M88E1000_PSCR_AUTO_X_MODE;
        if(e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        DEBUGOUT1("M88E1000 PSCR: %x \n", phy_data);
@@ -1220,7 +1225,7 @@
         * forced whenever speed or duplex are forced.
         */
if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -1228,14 +1233,14 @@
        phy_data &= ~IGP01E1000_PSCR_FORCE_MDI_MDIX;

if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PORT_CTRL, phy_data) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
    }

    /* Write back the modified PHY MII control register. */
    if(e1000_write_phy_reg(hw, PHY_CTRL, mii_ctrl_reg) < 0) {
-        DEBUGOUT("PHY Write Error\n");
+           DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    udelay(1);
@@ -1258,11 +1263,11 @@
             * to be set.
             */
            if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
            if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
            if(mii_status_reg & MII_SR_LINK_STATUS) break;
@@ -1285,11 +1290,11 @@
             * to be set.
             */
            if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
            if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
        }
@@ -1301,12 +1306,12 @@
         * defaults back to a 2.5MHz clock when the PHY is reset.
         */
if(e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        phy_data |= M88E1000_EPSCR_TX_CLK_25;
if(e1000_write_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, phy_data) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -1314,12 +1319,12 @@
         * TX.  This must be set for both full and half duplex operation.
         */
        if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX;
        if(e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_data) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
    }
@@ -1379,7 +1384,7 @@
     */
    if (hw->phy_type == e1000_phy_igp) {
if(e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(phy_data & IGP01E1000_PSSR_FULL_DUPLEX) ctrl |= E1000_CTRL_FD;
@@ -1398,7 +1403,7 @@
            ctrl |= E1000_CTRL_SPD_100;
    } else {
if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(phy_data & M88E1000_PSSR_DPLX) ctrl |= E1000_CTRL_FD;
@@ -1533,11 +1538,11 @@
         * some "sticky" (latched) bits.
         */
        if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) {
-            DEBUGOUT("PHY Read Error \n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(e1000_read_phy_reg(hw, PHY_STATUS, &mii_status_reg) < 0) {
-            DEBUGOUT("PHY Read Error \n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -1549,11 +1554,11 @@
             * negotiated.
             */
if(e1000_read_phy_reg(hw, PHY_AUTONEG_ADV, &mii_nway_adv_reg) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
if(e1000_read_phy_reg(hw, PHY_LP_ABILITY, &mii_nway_lp_ability_reg) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }

@@ -1735,11 +1740,11 @@
         * Read the register twice since the link bit is sticky.
         */
        if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }

@@ -1798,7 +1803,7 @@
         */
        if(hw->tbi_compatibility_en) {
if(e1000_read_phy_reg(hw, PHY_LP_ABILITY, &lp_capability) < 0) {
-                DEBUGOUT("PHY Read Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
                return -E1000_ERR_PHY;
            }
            if(lp_capability & (NWAY_LPAR_10T_HD_CAPS |
@@ -1941,11 +1946,11 @@
         * Complete bit to be set.
         */
        if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        if(phy_data & MII_SR_AUTONEG_COMPLETE) {
@@ -2286,7 +2291,7 @@

    if((hw->mac_type == e1000_82541) || (hw->mac_type == e1000_82547)) {
if(e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0000) < 0) {
-            DEBUGOUT("PHY Write Error\n");
+ DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
            return;
        }

@@ -2315,12 +2320,12 @@
    DEBUGFUNC("e1000_phy_reset");

    if(e1000_read_phy_reg(hw, PHY_CTRL, &phy_data) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    phy_data |= MII_CR_RESET;
    if(e1000_write_phy_reg(hw, PHY_CTRL, phy_data) < 0) {
-        DEBUGOUT("PHY Write Error\n");
+           DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    udelay(1);
@@ -2346,13 +2351,13 @@

    /* Read the PHY ID Registers to identify which PHY is onboard. */
    if(e1000_read_phy_reg(hw, PHY_ID1, &phy_id_high) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    hw->phy_id = (uint32_t) (phy_id_high << 16);
    udelay(20);
    if(e1000_read_phy_reg(hw, PHY_ID2, &phy_id_low) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    hw->phy_id |= (uint32_t) (phy_id_low & PHY_REVISION_MASK);
@@ -2406,7 +2411,7 @@
        ret_val = 0;
    } while(0);

-    if(ret_val < 0) DEBUGOUT("PHY Write Error\n");
+ if(ret_val < 0) DEBUGOUT1(EMSG_DEV_PHY_WRITE, hw->back->adapter->netdev->name);
    return ret_val;
}

@@ -2566,11 +2571,11 @@
    }

    if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    if(e1000_read_phy_reg(hw, PHY_STATUS, &phy_data) < 0) {
-        DEBUGOUT("PHY Read Error\n");
+        DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_PHY;
    }
    if((phy_data & MII_SR_LINK_STATUS) != MII_SR_LINK_STATUS) {
@@ -3121,7 +3126,7 @@

    for(i = 0; i < (EEPROM_CHECKSUM_REG + 1); i++) {
        if(e1000_read_eeprom(hw, i, 1, &eeprom_data) < 0) {
-            DEBUGOUT("EEPROM Read Error\n");
+ DEBUGOUT1(EMSG_DEV_EEPROM_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_EEPROM;
        }
        checksum += eeprom_data;
@@ -3153,14 +3158,14 @@

    for(i = 0; i < EEPROM_CHECKSUM_REG; i++) {
        if(e1000_read_eeprom(hw, i, 1, &eeprom_data) < 0) {
-            DEBUGOUT("EEPROM Read Error\n");
+ DEBUGOUT1(EMSG_DEV_EEPROM_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_EEPROM;
        }
        checksum += eeprom_data;
    }
    checksum = (uint16_t) EEPROM_SUM - checksum;
    if(e1000_write_eeprom(hw, EEPROM_CHECKSUM_REG, 1, &checksum) < 0) {
-        DEBUGOUT("EEPROM Write Error\n");
+        DEBUGOUT1(EMSG_DEV_EEPROM_WRITE, hw->back->adapter->netdev->name);
        return -E1000_ERR_EEPROM;
    }
    return 0;
@@ -3381,7 +3386,7 @@

    /* Get word 0 from EEPROM */
    if(e1000_read_eeprom(hw, offset, 1, &eeprom_data) < 0) {
-        DEBUGOUT("EEPROM Read Error\n");
+        DEBUGOUT1(EMSG_DEV_EEPROM_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_EEPROM;
    }
    /* Save word 0 in upper half of part_num */
@@ -3389,7 +3394,7 @@

    /* Get word 1 from EEPROM */
    if(e1000_read_eeprom(hw, ++offset, 1, &eeprom_data) < 0) {
-        DEBUGOUT("EEPROM Read Error\n");
+        DEBUGOUT1(EMSG_DEV_EEPROM_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_EEPROM;
    }
    /* Save word 1 in lower half of part_num */
@@ -3415,7 +3420,7 @@
    for(i = 0; i < NODE_ADDRESS_SIZE; i += 2) {
        offset = i >> 1;
        if(e1000_read_eeprom(hw, offset, 1, &eeprom_data) < 0) {
-            DEBUGOUT("EEPROM Read Error\n");
+ DEBUGOUT1(EMSG_DEV_EEPROM_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_EEPROM;
        }
        hw->perm_mac_addr[i] = (uint8_t) (eeprom_data & 0x00FF);
@@ -3715,7 +3720,7 @@
    hw->ledctl_mode2 = hw->ledctl_default;

if(e1000_read_eeprom(hw, EEPROM_ID_LED_SETTINGS, 1, &eeprom_data) < 0) {
-        DEBUGOUT("EEPROM Read Error\n");
+        DEBUGOUT1(EMSG_DEV_EEPROM_READ, hw->back->adapter->netdev->name);
        return -E1000_ERR_EEPROM;
    }
    if((eeprom_data== ID_LED_RESERVED_0000) ||
@@ -3807,7 +3812,7 @@
        E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode1);
        break;
    default:
-        DEBUGOUT("Invalid device ID\n");
+        DEBUGOUT1(EMSG_PCI_BAD_ID, hw->back->adapter->netdev->name);
        return -E1000_ERR_CONFIG;
    }
    return 0;
@@ -3849,7 +3854,7 @@
        E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_default);
        break;
    default:
-        DEBUGOUT("Invalid device ID\n");
+        DEBUGOUT1(EMSG_PCI_BAD_ID, hw->back->adapter->netdev->name);
        return -E1000_ERR_CONFIG;
    }
    return 0;
@@ -3902,7 +3907,7 @@
        E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode2);
        break;
    default:
-        DEBUGOUT("Invalid device ID\n");
+        DEBUGOUT1(EMSG_PCI_BAD_ID, hw->back->adapter->netdev->name);
        return -E1000_ERR_CONFIG;
    }
    return 0;
@@ -3955,7 +3960,7 @@
        E1000_WRITE_REG(hw, LEDCTL, hw->ledctl_mode1);
        break;
    default:
-        DEBUGOUT("Invalid device ID\n");
+        DEBUGOUT1(EMSG_PCI_BAD_ID, hw->back->adapter->netdev->name);
        return -E1000_ERR_CONFIG;
    }
    return 0;
@@ -4468,14 +4473,14 @@

    if(hw->phy_type == e1000_phy_igp) {
if(e1000_read_phy_reg(hw, IGP01E1000_PHY_LINK_HEALTH, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
hw->speed_downgraded = (phy_data & IGP01E1000_PLHR_SS_DOWNGRADE) ? 1 : 0;
    }
    else if(hw->phy_type == e1000_phy_m88) {
if(e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data) < 0) {
-            DEBUGOUT("PHY Read Error\n");
+            DEBUGOUT1(EMSG_DEV_PHY_READ, hw->back->adapter->netdev->name);
            return -E1000_ERR_PHY;
        }
        hw->speed_downgraded = (phy_data & M88E1000_PSSR_DOWNSHIFT) >>
diff -Naur linux-2.5.69.orig/drivers/net/e1000/e1000_main.c linux-2.5.69.newMsgs/drivers/net/e1000/e1000_main.c --- linux-2.5.69.orig/drivers/net/e1000/e1000_main.c 2003-06-04 13:24:46.000000000 -0500 +++ linux-2.5.69.newMsgs/drivers/net/e1000/e1000_main.c 2003-06-04 13:14:58.000000000 -0500
@@ -27,6 +27,7 @@
*******************************************************************************/

#include "e1000.h"
+#include <linux/stdmsgs.h>

/* Change Log
 *
@@ -228,10 +229,11 @@
e1000_init_module(void)
{
    int ret;
-    printk(KERN_INFO "%s - version %s\n",
-           e1000_driver_string, e1000_driver_version);

-    printk(KERN_INFO "%s\n", e1000_copyright);
+    printk(KERN_INFO EMSG_BASICS, e1000_driver_name ,
+            e1000_driver_string , e1000_driver_version);
+
+    printk(KERN_INFO "       %s\n", e1000_copyright);

    ret = pci_module_init(&e1000_driver);
    if(ret >= 0)
@@ -508,6 +510,22 @@
    netif_stop_queue(netdev);

    printk(KERN_INFO "%s: %s\n", netdev->name, adapter->id_string);
+
+    if (netdev->features & NETIF_F_SG)
+        printk(KERN_INFO EMSG_NET_SGATHER, netdev->name);
+    else
+        printk(KERN_INFO EMSG_NET_NO_SGATHER, netdev->name);
+
+    if (netdev->features & NETIF_F_HW_CSUM) {
+        printk(KERN_INFO EMSG_NET_HW_CSUMS, netdev->name);
+    } else {
+      if (netdev->features & NETIF_F_IP_CSUM)
+        printk(KERN_INFO EMSG_NET_CSUMS, netdev->name);
+      else
+        printk(KERN_INFO EMSG_NET_NO_CSUMS, netdev->name);
+    }
+
+
    e1000_check_options(adapter);

    /* Initial Wake on LAN setting
@@ -597,9 +615,11 @@
    hw->subsystem_vendor_id = pdev->subsystem_vendor;
    hw->subsystem_id = pdev->subsystem_device;

-    pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
+    if (pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id))
+        printk(KERN_ERR EMSG_PCI_READ, netdev->name);

-    pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word);
+    if (pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word))
+        printk(KERN_ERR EMSG_PCI_READ, netdev->name);

    adapter->rx_buffer_len = E1000_RXBUFFER_2048;
    hw->max_frame_size = netdev->mtu +
@@ -1334,6 +1354,7 @@

            adapter->tx_fifo_head = 0;
            atomic_set(&adapter->tx_fifo_stall, 0);
+            printk(KERN_INFO EMSG_NET_START_QUEUE,  netdev->name );
            netif_wake_queue(netdev);
        } else {
            mod_timer(&adapter->tx_fifo_stall_timer, jiffies + 1);
@@ -1361,13 +1382,10 @@
            e1000_get_speed_and_duplex(&adapter->hw,
                                       &adapter->link_speed,
                                       &adapter->link_duplex);
-
-            printk(KERN_INFO
-                   "e1000: %s NIC Link is Up %d Mbps %s\n",
+            printk(KERN_INFO EMSG_NET_LINK_UP,
                   netdev->name, adapter->link_speed,
                   adapter->link_duplex == FULL_DUPLEX ?
-                   "Full Duplex" : "Half Duplex");
-
+                   "full" : "half");
            netif_carrier_on(netdev);
            netif_wake_queue(netdev);
            mod_timer(&adapter->phy_info_timer, jiffies + 2 * HZ);
@@ -1375,13 +1393,14 @@
        }
    } else {
        if(netif_carrier_ok(netdev)) {
+            uint16_t mii_status_reg;
            adapter->link_speed = 0;
            adapter->link_duplex = 0;
-            printk(KERN_INFO
-                   "e1000: %s NIC Link is Down\n",
-                   netdev->name);
+            e1000_read_phy_reg(&adapter->hw, PHY_STATUS,
+                              &mii_status_reg);
+            printk(KERN_INFO EMSG_NET_LINK_FAIL,
+                   netdev->name, mii_status_reg);
            netif_carrier_off(netdev);
-            netif_stop_queue(netdev);
            mod_timer(&adapter->phy_info_timer, jiffies + 2 * HZ);
        }

@@ -1420,9 +1439,21 @@
    i = txdr->next_to_clean;
    if(txdr->buffer_info[i].dma &&
       time_after(jiffies, txdr->buffer_info[i].time_stamp + HZ) &&
-       !(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF))
+       !(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF)) {
+        printk(KERN_INFO EMSG_NET_HUNG, netdev->name );
        netif_stop_queue(netdev);
+    }

+       /*
+    * Need to add some code here to see if an individual tx has timed out.
+    * Right now we only look for hangs when the entire tx buffer fills up
+    * and there is nowhere to put an in-bound transmit packet.  Then we
+    * could log the following error:
+    *
+    * netdev_err(netdev, EMSG_NET_TX_ERR);
+    *
+    */
+ /* Reset the timer */
    mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ);
}
@@ -1697,12 +1728,14 @@
    }

    if(E1000_DESC_UNUSED(&adapter->tx_ring) < DESC_NEEDED) {
+        printk(KERN_INFO EMSG_NET_STOP_QUEUE,  netdev->name );
        netif_stop_queue(netdev);
        return 1;
    }

    if(adapter->hw.mac_type == e1000_82547) {
        if(e1000_82547_fifo_workaround(adapter, skb)) {
+            printk(KERN_INFO EMSG_NET_STOP_QUEUE,  netdev->name );
            netif_stop_queue(netdev);
            mod_timer(&adapter->tx_fifo_stall_timer, jiffies);
            return 1;
@@ -1828,6 +1861,8 @@
    struct e1000_hw *hw = &adapter->hw;
    unsigned long flags;
    uint16_t phy_tmp;
+    unsigned long rx_errors;
+    unsigned long tx_errors;

#define PHY_IDLE_ERROR_COUNT_MASK 0x00FF

@@ -1920,10 +1955,14 @@

    /* Rx Errors */

+    rx_errors = adapter->net_stats.rx_errors;
    adapter->net_stats.rx_errors = adapter->stats.rxerrc +
        adapter->stats.crcerrs + adapter->stats.algnerrc +
        adapter->stats.rlec + adapter->stats.rnbc +
        adapter->stats.mpc + adapter->stats.cexterr;
+    if (rx_errors != adapter->net_stats.rx_errors)
+        printk(KERN_INFO EMSG_NET_RX_ERR, adapter->ifname,
+                adapter->net_stats.rx_errors);
    adapter->net_stats.rx_dropped = adapter->stats.rnbc;
    adapter->net_stats.rx_length_errors = adapter->stats.rlec;
    adapter->net_stats.rx_crc_errors = adapter->stats.crcerrs;
@@ -1933,8 +1972,12 @@

    /* Tx Errors */

+    tx_errors = adapter->net_stats.tx_errors;
    adapter->net_stats.tx_errors = adapter->stats.ecol +
                                   adapter->stats.latecol;
+    if ( tx_errors != adapter->net_stats.tx_errors)
+        printk(KERN_INFO EMSG_NET_TX_ERR, adapter->ifname,
+                adapter->net_stats.tx_errors);
    adapter->net_stats.tx_aborted_errors = adapter->stats.ecol;
    adapter->net_stats.tx_window_errors = adapter->stats.latecol;
    adapter->net_stats.tx_carrier_errors = adapter->stats.tncrs;
@@ -2105,8 +2148,10 @@

    tx_ring->next_to_clean = i;

-    if(cleaned && netif_queue_stopped(netdev) && netif_carrier_ok(netdev))
+ if(cleaned && netif_queue_stopped(netdev) && netif_carrier_ok(netdev)) {
+        printk(KERN_INFO EMSG_NET_START_QUEUE,  netdev->name );
        netif_wake_queue(netdev);
+    }

    return cleaned;
}
@@ -2516,7 +2561,8 @@
{
    struct e1000_adapter *adapter = hw->back;

-    pci_read_config_word(adapter->pdev, reg, value);
+    if (pci_read_config_word(adapter->pdev, reg, value))
+        printk(KERN_ERR EMSG_PCI_READ, adapter->netdev->name);
}

void
@@ -2524,7 +2570,8 @@
{
    struct e1000_adapter *adapter = hw->back;

-    pci_write_config_word(adapter->pdev, reg, *value);
+    if (pci_write_config_word(adapter->pdev, reg, *value))
+        printk(KERN_ERR EMSG_PCI_WRITE, adapter->netdev->name);
}

uint32_t
diff -Naur linux-2.5.69.orig/drivers/net/e1000/e1000_param.c linux-2.5.69.newMsgs/drivers/net/e1000/e1000_param.c --- linux-2.5.69.orig/drivers/net/e1000/e1000_param.c 2003-06-04 13:24:46.000000000 -0500 +++ linux-2.5.69.newMsgs/drivers/net/e1000/e1000_param.c 2003-06-04 13:14:58.000000000 -0500
@@ -27,6 +27,7 @@
*******************************************************************************/

#include "e1000.h"
+#include <linux/stdmsgs.h>

/* This is the only thing that needs to be changed to adjust the
 * maximum number of ports that the driver can manage.
@@ -244,7 +245,8 @@
};

static int __devinit
-e1000_validate_option(int *value, struct e1000_option *opt)
+e1000_validate_option(struct e1000_adapter *adapter, int *value,
+        struct e1000_option *opt)
{
    if(*value == OPTION_UNSET) {
        *value = opt->def;
@@ -255,16 +257,19 @@
    case enable_option:
        switch (*value) {
        case OPTION_ENABLED:
-            printk(KERN_INFO "%s Enabled\n", opt->name);
+            printk(KERN_INFO EMSG_DEV_CFG_ENABLED,
+                    adapter->netdev->name, opt->name);
            return 0;
        case OPTION_DISABLED:
-            printk(KERN_INFO "%s Disabled\n", opt->name);
+            printk(KERN_INFO EMSG_DEV_CFG_DISABLED,
+                    adapter->netdev->name, opt->name);
            return 0;
        }
        break;
    case range_option:
        if(*value >= opt->arg.r.min && *value <= opt->arg.r.max) {
-            printk(KERN_INFO "%s set to %i\n", opt->name, *value);
+            printk(KERN_INFO EMSG_DEV_CFG_ISET,
+                    adapter->netdev->name, opt->name, *value);
            return 0;
        }
        break;
@@ -330,7 +335,7 @@
            MAX_TXD : MAX_82544_TXD;

        tx_ring->count = TxDescriptors[bd];
-        e1000_validate_option(&tx_ring->count, &opt);
+        e1000_validate_option(adapter, &tx_ring->count, &opt);
        E1000_ROUNDUP(tx_ring->count, REQ_TX_DESCRIPTOR_MULTIPLE);
    }
    { /* Receive Descriptor Count */
@@ -346,7 +351,7 @@
        opt.arg.r.max = mac_type < e1000_82544 ? MAX_RXD : MAX_82544_RXD;

        rx_ring->count = RxDescriptors[bd];
-        e1000_validate_option(&rx_ring->count, &opt);
+        e1000_validate_option(adapter, &rx_ring->count, &opt);
        E1000_ROUNDUP(rx_ring->count, REQ_RX_DESCRIPTOR_MULTIPLE);
    }
    { /* Checksum Offload Enable/Disable */
@@ -358,7 +363,7 @@
        };

        int rx_csum = XsumRX[bd];
-        e1000_validate_option(&rx_csum, &opt);
+        e1000_validate_option(adapter, &rx_csum, &opt);
        adapter->rx_csum = rx_csum;
    }
    { /* Flow Control */
@@ -380,7 +385,7 @@
        };

        int fc = FlowControl[bd];
-        e1000_validate_option(&fc, &opt);
+        e1000_validate_option(adapter, &fc, &opt);
        adapter->hw.fc = adapter->hw.original_fc = fc;
    }
    { /* Transmit Interrupt Delay */
@@ -394,7 +399,7 @@
        };

        adapter->tx_int_delay = TxIntDelay[bd];
-        e1000_validate_option(&adapter->tx_int_delay, &opt);
+        e1000_validate_option(adapter, &adapter->tx_int_delay, &opt);
    }
    { /* Transmit Absolute Interrupt Delay */
        struct e1000_option opt = {
@@ -407,7 +412,7 @@
        };

        adapter->tx_abs_int_delay = TxAbsIntDelay[bd];
-        e1000_validate_option(&adapter->tx_abs_int_delay, &opt);
+        e1000_validate_option(adapter, &adapter->tx_abs_int_delay, &opt);
    }
    { /* Receive Interrupt Delay */
        struct e1000_option opt = {
@@ -420,7 +425,7 @@
        };

        adapter->rx_int_delay = RxIntDelay[bd];
-        e1000_validate_option(&adapter->rx_int_delay, &opt);
+        e1000_validate_option(adapter, &adapter->rx_int_delay, &opt);
    }
    { /* Receive Absolute Interrupt Delay */
        struct e1000_option opt = {
@@ -433,7 +438,7 @@
        };

        adapter->rx_abs_int_delay = RxAbsIntDelay[bd];
-        e1000_validate_option(&adapter->rx_abs_int_delay, &opt);
+        e1000_validate_option(adapter, &adapter->rx_abs_int_delay, &opt);
    }
    { /* Interrupt Throttling Rate */
        struct e1000_option opt = {
@@ -452,7 +457,7 @@
            /* Dynamic mode */
            adapter->itr = 1;
        } else {
-            e1000_validate_option(&adapter->itr, &opt);
+            e1000_validate_option(adapter, &adapter->itr, &opt);
        }
    }

@@ -525,7 +530,7 @@
        };

        speed = Speed[bd];
-        e1000_validate_option(&speed, &opt);
+        e1000_validate_option(adapter, &speed, &opt);
    }
    { /* Duplex */
        struct e1000_opt_list dplx_list[] = {{           0, "" },
@@ -542,7 +547,7 @@
        };

        dplx = Duplex[bd];
-        e1000_validate_option(&dplx, &opt);
+        e1000_validate_option(adapter, &dplx, &opt);
    }

    if(AutoNeg[bd] != OPTION_UNSET && (speed != 0 || dplx != 0)) {
@@ -595,7 +600,7 @@
        };

        int an = AutoNeg[bd];
-        e1000_validate_option(&an, &opt);
+        e1000_validate_option(adapter, &an, &opt);
        adapter->hw.autoneg_advertised = an;
    }

diff -Naur linux-2.5.69.orig/drivers/net/tg3.c linux-2.5.69.newMsgs/drivers/net/tg3.c --- linux-2.5.69.orig/drivers/net/tg3.c 2003-06-04 13:24:35.000000000 -0500 +++ linux-2.5.69.newMsgs/drivers/net/tg3.c 2003-06-04 13:15:45.000000000 -0500
@@ -26,6 +26,7 @@
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/workqueue.h>
+#include <linux/stdmsgs.h>

#include <asm/system.h>
#include <asm/io.h>
@@ -347,6 +348,7 @@
        udelay(40);
    }

+    if (ret) printk(KERN_ERR EMSG_DEV_PHY_READ, tp->dev->name);
    return ret;
}

@@ -393,6 +395,7 @@
        udelay(40);
    }

+    if (ret) printk(KERN_ERR EMSG_DEV_PHY_WRITE, tp->dev->name);
    return ret;
}

@@ -634,9 +637,11 @@
static void tg3_link_report(struct tg3 *tp)
{
    if (!netif_carrier_ok(tp->dev)) {
-        printk(KERN_INFO PFX "%s: Link is down.\n", tp->dev->name);
+        u32 mii_regval;
+        tg3_readphy(tp, MII_TG3_PHY_STAT, &mii_regval);
+        printk(KERN_INFO EMSG_NET_LINK_FAIL, tp->dev->name, mii_regval);
    } else {
-        printk(KERN_INFO PFX "%s: Link is up at %d Mbps, %s duplex.\n",
+        printk(KERN_INFO  EMSG_NET_LINK_UP,
               tp->dev->name,
               (tp->link_config.active_speed == SPEED_1000 ?
            1000 :
@@ -1780,8 +1785,10 @@
    tp->tx_cons = sw_idx;

    if (netif_queue_stopped(tp->dev) &&
-        (TX_BUFFS_AVAIL(tp) > TG3_TX_WAKEUP_THRESH))
+        (TX_BUFFS_AVAIL(tp) > TG3_TX_WAKEUP_THRESH)) {
+        printk(KERN_INFO EMSG_NET_START_QUEUE, tp->dev->name);
        netif_wake_queue(tp->dev);
+    }
}

/* Returns size of skb allocated or < 0 on error.
@@ -2580,8 +2587,10 @@
    }

    tp->tx_prod = entry;
-    if (TX_BUFFS_AVAIL(tp) <= (MAX_SKB_FRAGS + 1))
+    if (TX_BUFFS_AVAIL(tp) <= (MAX_SKB_FRAGS + 1)) {
+        printk(KERN_INFO EMSG_NET_STOP_QUEUE, dev->name);
        netif_stop_queue(dev);
+    }

out_unlock:
    spin_unlock_irqrestore(&tp->tx_lock, flags);
@@ -2727,8 +2736,10 @@
    }

    tp->tx_prod = entry;
-    if (TX_BUFFS_AVAIL(tp) <= (MAX_SKB_FRAGS + 1))
+    if (TX_BUFFS_AVAIL(tp) <= (MAX_SKB_FRAGS + 1)) {
+        printk(KERN_INFO EMSG_NET_STOP_QUEUE, dev->name);
        netif_stop_queue(dev);
+    }

    spin_unlock_irqrestore(&tp->tx_lock, flags);

@@ -3436,10 +3447,7 @@
    }

    if (i >= 10000) {
-        printk(KERN_ERR PFX "tg3_reset_cpu timed out for %s, "
-               "and %s CPU\n",
-               tp->dev->name,
-               (offset == RX_CPU_BASE ? "RX" : "TX"));
+        printk(KERN_ERR EMSG_DEV_SW_RESET, tp->dev->name);
        return -ENODEV;
    }
    return 0;
@@ -4462,7 +4470,7 @@
    tw32(TG3PCI_MEM_WIN_BASE_ADDR, 0);

    err = tg3_reset_hw(tp);
-
+    if (err) printk( KERN_ERR EMSG_DEV_SW_RESET, tp->dev->name);
out:
    return err;
}
@@ -4963,11 +4971,15 @@

    stats->rx_errors = old_stats->rx_errors +
        get_stat64(&hw_stats->rx_errors);
+    if (stats->rx_errors != old_stats->rx_errors)
+        printk(KERN_INFO EMSG_NET_RX_ERR, dev->name, stats->rx_errors);
    stats->tx_errors = old_stats->tx_errors +
        get_stat64(&hw_stats->tx_errors) +
        get_stat64(&hw_stats->tx_mac_errors) +
        get_stat64(&hw_stats->tx_carrier_sense_errors) +
        get_stat64(&hw_stats->tx_discards);
+    if (stats->tx_errors != old_stats->tx_errors)
+        printk(KERN_INFO EMSG_NET_TX_ERR, dev->name, stats->tx_errors);

    stats->multicast = old_stats->multicast +
        get_stat64(&hw_stats->rx_mcast_packets);
@@ -5661,8 +5673,10 @@
    int i;

    if (offset > EEPROM_ADDR_ADDR_MASK ||
-        (offset % 4) != 0)
+        (offset % 4) != 0) {
+        printk(KERN_ERR EMSG_DEV_EEPROM_READ, tp->dev->name);
        return -EINVAL;
+    }

    tmp = tr32(GRC_EEPROM_ADDR) & ~(EEPROM_ADDR_ADDR_MASK |
                    EEPROM_ADDR_DEVID_MASK |
@@ -5681,8 +5695,10 @@
            break;
        udelay(100);
    }
-    if (!(tmp & EEPROM_ADDR_COMPLETE))
+    if (!(tmp & EEPROM_ADDR_COMPLETE)) {
+        printk(KERN_ERR EMSG_NET_HUNG, tp->dev->name);
        return -EBUSY;
+    }

    *val = tr32(GRC_EEPROM_DATA);
    return 0;
@@ -5875,8 +5891,10 @@
         */
        if (tp->phy_id == PHY_ID_INVALID) {
            if (!eeprom_signature_found ||
-                !KNOWN_PHY_ID(eeprom_phy_id & PHY_ID_MASK))
+                !KNOWN_PHY_ID(eeprom_phy_id & PHY_ID_MASK)) {
+                printk(KERN_ERR EMSG_PCI_BAD_ID, tp->dev->name);
                return -ENODEV;
+            }
            tp->phy_id = eeprom_phy_id;
        }
    }
@@ -5953,6 +5971,7 @@
            ~(ADVERTISED_1000baseT_Half |
              ADVERTISED_1000baseT_Full);

+    if (err) printk(KERN_ERR EMSG_DEV_PHY_READ, tp->dev->name);
    return err;
}

@@ -6046,9 +6065,11 @@
     * workaround but turns MWI off all the times so never uses
     * it.  This seems to suggest that the workaround is insufficient.
     */
-    pci_read_config_word(tp->pdev, PCI_COMMAND, &pci_cmd);
+    if (pci_read_config_word(tp->pdev, PCI_COMMAND, &pci_cmd))
+        printk(KERN_ERR EMSG_PCI_READ, tp->dev->name);
    pci_cmd &= ~PCI_COMMAND_INVALIDATE;
-    pci_write_config_word(tp->pdev, PCI_COMMAND, pci_cmd);
+    if (pci_write_config_word(tp->pdev, PCI_COMMAND, pci_cmd))
+        printk(KERN_ERR EMSG_PCI_WRITE, tp->dev->name);

    /* It is absolutely critical that TG3PCI_MISC_HOST_CTRL
     * has the register indirect write enable bit set before
@@ -6056,8 +6077,9 @@
     * critical that the PCI-X hw workaround situation is decided
     * before that as well.
     */
-    pci_read_config_dword(tp->pdev, TG3PCI_MISC_HOST_CTRL,
-                  &misc_ctrl_reg);
+    if (pci_read_config_dword(tp->pdev, TG3PCI_MISC_HOST_CTRL,
+                  &misc_ctrl_reg))
+        printk(KERN_ERR EMSG_PCI_READ, tp->dev->name);

    tp->pci_chip_rev_id = (misc_ctrl_reg >>
                   MISC_HOST_CTRL_CHIPREV_SHIFT);
@@ -6870,6 +6892,20 @@
    } else
        tp->tg3_flags &= ~TG3_FLAG_RX_CHECKSUMS;

+    if (dev->features & NETIF_F_SG)
+        printk(KERN_INFO EMSG_NET_SGATHER, dev->name);
+    else
+        printk(KERN_INFO EMSG_NET_NO_SGATHER, dev->name);
+
+    if (dev->features & NETIF_F_HW_CSUM) {
+        printk(KERN_INFO EMSG_NET_HW_CSUMS, dev->name);
+    } else {
+        if (dev->features & NETIF_F_IP_CSUM)
+                   printk(KERN_INFO EMSG_NET_CSUMS, dev->name);
+        else
+            printk(KERN_INFO EMSG_NET_NO_CSUMS, dev->name);
+    }
+
#if TG3_DO_TSO != 0
    if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 ||
        (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701 &&
@@ -7027,6 +7063,8 @@

static int __init tg3_init(void)
{
+        printk(KERN_INFO EMSG_BASICS, DRV_MODULE_NAME,
+        "Broadcom Tigon3 ethernet driver" , DRV_MODULE_VERSION);
    return pci_module_init(&tg3_driver);
}

diff -Naur linux-2.5.69.orig/drivers/net/tg3.h linux-2.5.69.newMsgs/drivers/net/tg3.h --- linux-2.5.69.orig/drivers/net/tg3.h 2003-06-04 13:24:35.000000000 -0500 +++ linux-2.5.69.newMsgs/drivers/net/tg3.h 2003-06-04 13:15:45.000000000 -0500
@@ -1319,6 +1319,8 @@
/* Tigon3 specific PHY MII registers. */
#define  TG3_BMCR_SPEED1000        0x0040

+#define MII_TG3_PHY_STAT        0x01 /* Status Register*/
+
#define MII_TG3_CTRL            0x09 /* 1000-baseT control register */
#define  MII_TG3_CTRL_ADV_1000_HALF    0x0100
#define  MII_TG3_CTRL_ADV_1000_FULL    0x0200
diff -Naur linux-2.5.69.orig/include/linux/stdmsgs.h linux-2.5.69.newMsgs/include/linux/stdmsgs.h --- linux-2.5.69.orig/include/linux/stdmsgs.h 1969-12-31 18:00:00.000000000 -0600 +++ linux-2.5.69.newMsgs/include/linux/stdmsgs.h 2003-06-10 10:44:12.000000000 -0500
@@ -0,0 +1,57 @@
+#ifndef _STDMSGS_
+#define _STDMSGS_
+
+/*
+ * Some common error messages for logging.
+ *
+ * Note: the "%s:" text preceeding each message
+ *       is used to describe the device name for
+ *       messages unique to a specific piece of h/w,
+ *       or the device driver name otherwise.
+ *
+
+/*********************************************************
+ * common system errors/msgs
+ */
+#define EMSG_BASICS        "%s: %s - version %s\n"
+#define EMGS_NOMEM
+
+
+/*********************************************************
+ * device errors/msgs
+ */
+#define EMSG_DEV_EEPROM_READ    "%s: hardware failure: EEPROM read error\n"
+#define EMSG_DEV_EEPROM_WRITE "%s: hardware failure: EEPROM write error\n" +#define EMSG_DEV_PHY_READ "%s: hardware failure: read error on physical interface\n" +#define EMSG_DEV_PHY_WRITE "%s: hardware failure: write error on physical interface\n" +#define EMSG_DEV_SW_RESET "%s: software failure: unable to reset device \n"
+#define EMSG_DEV_CFG_ENABLED    "%s: configuration note: %s enabled\n"
+#define EMSG_DEV_CFG_DISABLED    "%s: configuration note: %s disabled\n"
+#define EMSG_DEV_CFG_ISET    "%s: configuration note: %s set to %i\n"
+
+
+
+/*********************************************************
+ * network errors/msgs
+ */
+#define EMSG_NET_LINK_FAIL "%s: transient problem: link error detected - MII status %x\n" +#define EMSG_NET_LINK_UP "%s: state change: link up, %d Mbps, %s-duplex\n" +#define EMSG_NET_HUNG "%s: software failure: ethernet controller hung\n" +#define EMSG_NET_RX_ERR "%s: transient problem: packet receive error, rx_errors = %ld\n" +#define EMSG_NET_TX_ERR "%s: transient problem: packet transmit error, tx_errors = %ld\n" +#define EMSG_NET_START_QUEUE "%s: performance event: (re)starting netdev queue\n" +#define EMSG_NET_STOP_QUEUE "%s: performance event: stopping netdev queue\n"
+#define EMSG_NET_SGATHER    "%s: scatter/gather I/O enabled\n"
+#define EMSG_NET_NO_SGATHER "%s: performance event: scatter/gather I/O disabled\n" +#define EMSG_NET_HW_CSUMS "%s: all IP checksums on transmit enabled\n" +#define EMSG_NET_CSUMS "%s: TCP/UDP over IPv6 checksums on transmit enabled\n" +#define EMSG_NET_NO_CSUMS "%s: performance event: IP checksums on transmit disabled\n"
+
+/*********************************************************
+ * PCI device errors/msgs
+ */
+#define EMSG_PCI_BAD_ID "%s: invalid device ID in PCI config header\n"
+#define EMSG_PCI_READ        "%s: hardware failure: PCI read error \n"
+#define EMSG_PCI_WRITE      "%s: hardware failure: PCI write error \n"
+
+#endif /* _STDMSGS_ */






<Prev in Thread] Current Thread [Next in Thread>