Commit 167fb284 authored by Jeff Garzik's avatar Jeff Garzik

e1000: omit stats for broken counter in 82543

The 82543 chip does not count tx_carrier_errors properly in FD mode;
report zeros instead of garbage.

Originally from Jesse Brandeburg <jesse.brandeburg@intel.com>, rewritten
to use feature flags by me.
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent bd2371eb
...@@ -442,6 +442,12 @@ e1000_set_mac_type(struct e1000_hw *hw) ...@@ -442,6 +442,12 @@ e1000_set_mac_type(struct e1000_hw *hw)
break; break;
} }
/* The 82543 chip does not count tx_carrier_errors properly in
* FD mode
*/
if (hw->mac_type == e1000_82543)
hw->bad_tx_carr_stats_fd = TRUE;
return E1000_SUCCESS; return E1000_SUCCESS;
} }
......
...@@ -1460,6 +1460,7 @@ struct e1000_hw { ...@@ -1460,6 +1460,7 @@ struct e1000_hw {
boolean_t mng_reg_access_disabled; boolean_t mng_reg_access_disabled;
boolean_t leave_av_bit_off; boolean_t leave_av_bit_off;
boolean_t kmrn_lock_loss_workaround_disabled; boolean_t kmrn_lock_loss_workaround_disabled;
boolean_t bad_tx_carr_stats_fd;
}; };
......
...@@ -3581,6 +3581,11 @@ e1000_update_stats(struct e1000_adapter *adapter) ...@@ -3581,6 +3581,11 @@ e1000_update_stats(struct e1000_adapter *adapter)
adapter->net_stats.tx_aborted_errors = adapter->stats.ecol; adapter->net_stats.tx_aborted_errors = adapter->stats.ecol;
adapter->net_stats.tx_window_errors = adapter->stats.latecol; adapter->net_stats.tx_window_errors = adapter->stats.latecol;
adapter->net_stats.tx_carrier_errors = adapter->stats.tncrs; adapter->net_stats.tx_carrier_errors = adapter->stats.tncrs;
if (adapter->hw.bad_tx_carr_stats_fd &&
adapter->link_duplex == FULL_DUPLEX) {
adapter->net_stats.tx_carrier_errors = 0;
adapter->stats.tncrs = 0;
}
/* Tx Dropped needs to be maintained elsewhere */ /* Tx Dropped needs to be maintained elsewhere */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment