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: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
bd2371ebcc
commit
167fb28416
3 changed files with 12 additions and 0 deletions
|
@ -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 {
|
||||||
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)
|
||||||
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 */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue