diff options
-rw-r--r-- | drivers/net/e1000e/82571.c | 2 | ||||
-rw-r--r-- | drivers/net/e1000e/es2lan.c | 2 | ||||
-rw-r--r-- | drivers/net/e1000e/hw.h | 1 | ||||
-rw-r--r-- | drivers/net/e1000e/ich8lan.c | 2 | ||||
-rw-r--r-- | drivers/net/e1000e/lib.c | 14 |
5 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c index b979464091bb..02d67d047d96 100644 --- a/drivers/net/e1000e/82571.c +++ b/drivers/net/e1000e/82571.c | |||
@@ -237,6 +237,8 @@ static s32 e1000_init_mac_params_82571(struct e1000_adapter *adapter) | |||
237 | /* Set if manageability features are enabled. */ | 237 | /* Set if manageability features are enabled. */ |
238 | mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK) | 238 | mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK) |
239 | ? true : false; | 239 | ? true : false; |
240 | /* Adaptive IFS supported */ | ||
241 | mac->adaptive_ifs = true; | ||
240 | 242 | ||
241 | /* check for link */ | 243 | /* check for link */ |
242 | switch (hw->phy.media_type) { | 244 | switch (hw->phy.media_type) { |
diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/e1000e/es2lan.c index 3028f23da891..e2aa3b788564 100644 --- a/drivers/net/e1000e/es2lan.c +++ b/drivers/net/e1000e/es2lan.c | |||
@@ -224,6 +224,8 @@ static s32 e1000_init_mac_params_80003es2lan(struct e1000_adapter *adapter) | |||
224 | /* Set if manageability features are enabled. */ | 224 | /* Set if manageability features are enabled. */ |
225 | mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK) | 225 | mac->arc_subsystem_valid = (er32(FWSM) & E1000_FWSM_MODE_MASK) |
226 | ? true : false; | 226 | ? true : false; |
227 | /* Adaptive IFS not supported */ | ||
228 | mac->adaptive_ifs = false; | ||
227 | 229 | ||
228 | /* check for link */ | 230 | /* check for link */ |
229 | switch (hw->phy.media_type) { | 231 | switch (hw->phy.media_type) { |
diff --git a/drivers/net/e1000e/hw.h b/drivers/net/e1000e/hw.h index 2784cf44a6f3..eccf29b75c41 100644 --- a/drivers/net/e1000e/hw.h +++ b/drivers/net/e1000e/hw.h | |||
@@ -818,6 +818,7 @@ struct e1000_mac_info { | |||
818 | 818 | ||
819 | u8 forced_speed_duplex; | 819 | u8 forced_speed_duplex; |
820 | 820 | ||
821 | bool adaptive_ifs; | ||
821 | bool arc_subsystem_valid; | 822 | bool arc_subsystem_valid; |
822 | bool autoneg; | 823 | bool autoneg; |
823 | bool autoneg_failed; | 824 | bool autoneg_failed; |
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c index 9b09246af064..ad08cf3f40c0 100644 --- a/drivers/net/e1000e/ich8lan.c +++ b/drivers/net/e1000e/ich8lan.c | |||
@@ -454,6 +454,8 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_adapter *adapter) | |||
454 | mac->rar_entry_count--; | 454 | mac->rar_entry_count--; |
455 | /* Set if manageability features are enabled. */ | 455 | /* Set if manageability features are enabled. */ |
456 | mac->arc_subsystem_valid = true; | 456 | mac->arc_subsystem_valid = true; |
457 | /* Adaptive IFS supported */ | ||
458 | mac->adaptive_ifs = true; | ||
457 | 459 | ||
458 | /* LED operations */ | 460 | /* LED operations */ |
459 | switch (mac->type) { | 461 | switch (mac->type) { |
diff --git a/drivers/net/e1000e/lib.c b/drivers/net/e1000e/lib.c index a86c17548c1e..56b59e4a6871 100644 --- a/drivers/net/e1000e/lib.c +++ b/drivers/net/e1000e/lib.c | |||
@@ -1609,6 +1609,11 @@ void e1000e_reset_adaptive(struct e1000_hw *hw) | |||
1609 | { | 1609 | { |
1610 | struct e1000_mac_info *mac = &hw->mac; | 1610 | struct e1000_mac_info *mac = &hw->mac; |
1611 | 1611 | ||
1612 | if (!mac->adaptive_ifs) { | ||
1613 | e_dbg("Not in Adaptive IFS mode!\n"); | ||
1614 | goto out; | ||
1615 | } | ||
1616 | |||
1612 | mac->current_ifs_val = 0; | 1617 | mac->current_ifs_val = 0; |
1613 | mac->ifs_min_val = IFS_MIN; | 1618 | mac->ifs_min_val = IFS_MIN; |
1614 | mac->ifs_max_val = IFS_MAX; | 1619 | mac->ifs_max_val = IFS_MAX; |
@@ -1617,6 +1622,8 @@ void e1000e_reset_adaptive(struct e1000_hw *hw) | |||
1617 | 1622 | ||
1618 | mac->in_ifs_mode = false; | 1623 | mac->in_ifs_mode = false; |
1619 | ew32(AIT, 0); | 1624 | ew32(AIT, 0); |
1625 | out: | ||
1626 | return; | ||
1620 | } | 1627 | } |
1621 | 1628 | ||
1622 | /** | 1629 | /** |
@@ -1630,6 +1637,11 @@ void e1000e_update_adaptive(struct e1000_hw *hw) | |||
1630 | { | 1637 | { |
1631 | struct e1000_mac_info *mac = &hw->mac; | 1638 | struct e1000_mac_info *mac = &hw->mac; |
1632 | 1639 | ||
1640 | if (!mac->adaptive_ifs) { | ||
1641 | e_dbg("Not in Adaptive IFS mode!\n"); | ||
1642 | goto out; | ||
1643 | } | ||
1644 | |||
1633 | if ((mac->collision_delta * mac->ifs_ratio) > mac->tx_packet_delta) { | 1645 | if ((mac->collision_delta * mac->ifs_ratio) > mac->tx_packet_delta) { |
1634 | if (mac->tx_packet_delta > MIN_NUM_XMITS) { | 1646 | if (mac->tx_packet_delta > MIN_NUM_XMITS) { |
1635 | mac->in_ifs_mode = true; | 1647 | mac->in_ifs_mode = true; |
@@ -1650,6 +1662,8 @@ void e1000e_update_adaptive(struct e1000_hw *hw) | |||
1650 | ew32(AIT, 0); | 1662 | ew32(AIT, 0); |
1651 | } | 1663 | } |
1652 | } | 1664 | } |
1665 | out: | ||
1666 | return; | ||
1653 | } | 1667 | } |
1654 | 1668 | ||
1655 | /** | 1669 | /** |