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@us.ibm.com
===================================================
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_ */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Mon Jun 23 2003 - 22:00:19 EST