Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -442,6 +442,12 @@ e1000_set_mac_type(struct e1000_hw *hw)
		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;
}

+1 −0
Original line number Diff line number Diff line
@@ -1460,6 +1460,7 @@ struct e1000_hw {
	boolean_t		mng_reg_access_disabled;
	boolean_t		leave_av_bit_off;
	boolean_t		kmrn_lock_loss_workaround_disabled;
	boolean_t		bad_tx_carr_stats_fd;
};


+5 −0
Original line number Diff line number Diff line
@@ -3581,6 +3581,11 @@ e1000_update_stats(struct e1000_adapter *adapter)
	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;
	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 */