* [e1000 2.6 1/4] flow control updates
@ 2003-09-26 5:46 Feldman, Scott
2003-09-27 9:57 ` Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Feldman, Scott @ 2003-09-26 5:46 UTC (permalink / raw)
To: Jeff Garzik; +Cc: netdev, Feldman, Scott
* handle ethtool force flow control
* correctly set flow control hi/low watermarks based on size of Rx FIFO
area. The size can change if doing Jumbo Frames or, in the case of
82547, is smaller to start with.
* was not properly forcing flow control settings to fc_none if using
strict IEEE flow control override.
---------------
diff -Naurp net-drivers-2.5/drivers/net/e1000/e1000_ethtool.c net-drivers-2.5/drivers/net/e1000.mod/e1000_ethtool.c
--- net-drivers-2.5/drivers/net/e1000/e1000_ethtool.c 2003-09-24 21:16:04.000000000 -0700
+++ net-drivers-2.5/drivers/net/e1000.mod/e1000_ethtool.c 2003-09-24 21:18:26.000000000 -0700
@@ -230,11 +230,15 @@ e1000_ethtool_spause(struct e1000_adapte
hw->original_fc = hw->fc;
- if(netif_running(adapter->netdev)) {
- e1000_down(adapter);
- e1000_up(adapter);
- } else
- e1000_reset(adapter);
+ if(adapter->fc_autoneg == AUTONEG_ENABLE) {
+ if(netif_running(adapter->netdev)) {
+ e1000_down(adapter);
+ e1000_up(adapter);
+ } else
+ e1000_reset(adapter);
+ }
+ else
+ return e1000_force_mac_fc(hw);
return 0;
}
diff -Naurp net-drivers-2.5/drivers/net/e1000/e1000.h net-drivers-2.5/drivers/net/e1000.mod/e1000.h
--- net-drivers-2.5/drivers/net/e1000/e1000.h 2003-09-24 21:16:04.000000000 -0700
+++ net-drivers-2.5/drivers/net/e1000.mod/e1000.h 2003-09-24 21:18:34.000000000 -0700
@@ -107,11 +107,11 @@ struct e1000_adapter;
#define E1000_TX_HEAD_ADDR_SHIFT 7
#define E1000_PBA_TX_MASK 0xFFFF0000
-/* Flow Control High-Watermark: 43464 bytes */
-#define E1000_FC_HIGH_THRESH 0xA9C8
+/* Flow Control High-Watermark: 5688 bytes below Rx FIFO size */
+#define E1000_FC_HIGH_DIFF 0x1638
-/* Flow Control Low-Watermark: 43456 bytes */
-#define E1000_FC_LOW_THRESH 0xA9C0
+/* Flow Control Low-Watermark: 5696 bytes below Rx FIFO size */
+#define E1000_FC_LOW_DIFF 0x1640
/* Flow Control Pause Time: 858 usec */
#define E1000_FC_PAUSE_TIME 0x0680
diff -Naurp net-drivers-2.5/drivers/net/e1000/e1000_hw.c net-drivers-2.5/drivers/net/e1000.mod/e1000_hw.c
--- net-drivers-2.5/drivers/net/e1000/e1000_hw.c 2003-09-24 21:16:04.000000000 -0700
+++ net-drivers-2.5/drivers/net/e1000.mod/e1000_hw.c 2003-09-24 21:19:21.000000000 -0700
@@ -1865,11 +1865,12 @@ e1000_config_fc_after_link_up(struct e10
* be asked to delay transmission of packets than asking
* our link partner to pause transmission of frames.
*/
- else if(hw->original_fc == e1000_fc_none ||
- hw->original_fc == e1000_fc_tx_pause) {
+ else if((hw->original_fc == e1000_fc_none ||
+ hw->original_fc == e1000_fc_tx_pause) ||
+ hw->fc_strict_ieee) {
hw->fc = e1000_fc_none;
DEBUGOUT("Flow Control = NONE.\r\n");
- } else if(!hw->fc_strict_ieee) {
+ } else {
hw->fc = e1000_fc_rx_pause;
DEBUGOUT("Flow Control = RX PAUSE frames only.\r\n");
}
diff -Naurp net-drivers-2.5/drivers/net/e1000/e1000_main.c net-drivers-2.5/drivers/net/e1000.mod/e1000_main.c
--- net-drivers-2.5/drivers/net/e1000/e1000_main.c 2003-09-24 21:16:04.000000000 -0700
+++ net-drivers-2.5/drivers/net/e1000.mod/e1000_main.c 2003-09-24 21:20:12.000000000 -0700
@@ -318,7 +318,13 @@ e1000_reset(struct e1000_adapter *adapte
}
E1000_WRITE_REG(&adapter->hw, PBA, pba);
+ /* flow control settings */
+ adapter->hw.fc_high_water = pba - E1000_FC_HIGH_DIFF;
+ adapter->hw.fc_low_water = pba - E1000_FC_LOW_DIFF;
+ adapter->hw.fc_pause_time = E1000_FC_PAUSE_TIME;
+ adapter->hw.fc_send_xon = 1;
adapter->hw.fc = adapter->hw.original_fc;
+
e1000_reset_hw(&adapter->hw);
if(adapter->hw.mac_type >= e1000_82544)
E1000_WRITE_REG(&adapter->hw, WUC, 0);
@@ -621,13 +627,6 @@ e1000_sw_init(struct e1000_adapter *adap
e1000_init_eeprom_params(hw);
- /* flow control settings */
-
- hw->fc_high_water = E1000_FC_HIGH_THRESH;
- hw->fc_low_water = E1000_FC_LOW_THRESH;
- hw->fc_pause_time = E1000_FC_PAUSE_TIME;
- hw->fc_send_xon = 1;
-
if((hw->mac_type == e1000_82541) ||
(hw->mac_type == e1000_82547) ||
(hw->mac_type == e1000_82541_rev_2) ||
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [e1000 2.6 1/4] flow control updates
2003-09-26 5:46 [e1000 2.6 1/4] flow control updates Feldman, Scott
@ 2003-09-27 9:57 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2003-09-27 9:57 UTC (permalink / raw)
To: Feldman, Scott; +Cc: netdev
all four patches applied to 2.6.x
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-09-27 9:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-09-26 5:46 [e1000 2.6 1/4] flow control updates Feldman, Scott
2003-09-27 9:57 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).