Skip to content

Commit

Permalink
igb: remove adaptive IFS from driver
Browse files Browse the repository at this point in the history
Adaptive IFS support has been included in the igb driver since its
initial release, but it is not a feature on any igb NICs. This patch
removes it from the driver.

Signed-off-by: Nicholas Nunley <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
Nick Nunley authored and davem330 committed Feb 17, 2010
1 parent 3025a44 commit 2d0b0f6
Show file tree
Hide file tree
Showing 5 changed files with 2 additions and 93 deletions.
6 changes: 0 additions & 6 deletions drivers/net/igb/e1000_defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -313,12 +313,6 @@
#define E1000_PBA_34K 0x0022
#define E1000_PBA_64K 0x0040 /* 64KB */

#define IFS_MAX 80
#define IFS_MIN 40
#define IFS_RATIO 4
#define IFS_STEP 10
#define MIN_NUM_XMITS 1000

/* SW Semaphore Register */
#define E1000_SWSM_SMBI 0x00000001 /* Driver Semaphore bit */
#define E1000_SWSM_SWESMBI 0x00000002 /* FW Semaphore bit */
Expand Down
7 changes: 0 additions & 7 deletions drivers/net/igb/e1000_hw.h
Original file line number Diff line number Diff line change
Expand Up @@ -339,19 +339,12 @@ struct e1000_mac_info {

enum e1000_mac_type type;

u32 collision_delta;
u32 ledctl_default;
u32 ledctl_mode1;
u32 ledctl_mode2;
u32 mc_filter_type;
u32 tx_packet_delta;
u32 txcw;

u16 current_ifs_val;
u16 ifs_max_val;
u16 ifs_min_val;
u16 ifs_ratio;
u16 ifs_step_size;
u16 mta_reg_count;
u16 uta_reg_count;

Expand Down
70 changes: 0 additions & 70 deletions drivers/net/igb/e1000_mac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1303,76 +1303,6 @@ s32 igb_disable_pcie_master(struct e1000_hw *hw)
return ret_val;
}

/**
* igb_reset_adaptive - Reset Adaptive Interframe Spacing
* @hw: pointer to the HW structure
*
* Reset the Adaptive Interframe Spacing throttle to default values.
**/
void igb_reset_adaptive(struct e1000_hw *hw)
{
struct e1000_mac_info *mac = &hw->mac;

if (!mac->adaptive_ifs) {
hw_dbg("Not in Adaptive IFS mode!\n");
goto out;
}

if (!mac->ifs_params_forced) {
mac->current_ifs_val = 0;
mac->ifs_min_val = IFS_MIN;
mac->ifs_max_val = IFS_MAX;
mac->ifs_step_size = IFS_STEP;
mac->ifs_ratio = IFS_RATIO;
}

mac->in_ifs_mode = false;
wr32(E1000_AIT, 0);
out:
return;
}

/**
* igb_update_adaptive - Update Adaptive Interframe Spacing
* @hw: pointer to the HW structure
*
* Update the Adaptive Interframe Spacing Throttle value based on the
* time between transmitted packets and time between collisions.
**/
void igb_update_adaptive(struct e1000_hw *hw)
{
struct e1000_mac_info *mac = &hw->mac;

if (!mac->adaptive_ifs) {
hw_dbg("Not in Adaptive IFS mode!\n");
goto out;
}

if ((mac->collision_delta * mac->ifs_ratio) > mac->tx_packet_delta) {
if (mac->tx_packet_delta > MIN_NUM_XMITS) {
mac->in_ifs_mode = true;
if (mac->current_ifs_val < mac->ifs_max_val) {
if (!mac->current_ifs_val)
mac->current_ifs_val = mac->ifs_min_val;
else
mac->current_ifs_val +=
mac->ifs_step_size;
wr32(E1000_AIT,
mac->current_ifs_val);
}
}
} else {
if (mac->in_ifs_mode &&
(mac->tx_packet_delta <= MIN_NUM_XMITS)) {
mac->current_ifs_val = 0;
mac->in_ifs_mode = false;
wr32(E1000_AIT, 0);
}
}
out:
return;
}

/**
* igb_validate_mdi_setting - Verify MDI/MDIx settings
* @hw: pointer to the HW structure
Expand Down
2 changes: 0 additions & 2 deletions drivers/net/igb/e1000_mac.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ void igb_mta_set(struct e1000_hw *hw, u32 hash_value);
void igb_put_hw_semaphore(struct e1000_hw *hw);
void igb_rar_set(struct e1000_hw *hw, u8 *addr, u32 index);
s32 igb_check_alt_mac_addr(struct e1000_hw *hw);
void igb_reset_adaptive(struct e1000_hw *hw);
void igb_update_adaptive(struct e1000_hw *hw);

bool igb_enable_mng_pass_thru(struct e1000_hw *hw);

Expand Down
10 changes: 2 additions & 8 deletions drivers/net/igb/igb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1365,7 +1365,6 @@ void igb_reset(struct igb_adapter *adapter)
/* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
wr32(E1000_VET, ETHERNET_IEEE_VLAN_TYPE);

igb_reset_adaptive(hw);
igb_get_phy_info(hw);
}

Expand Down Expand Up @@ -1508,7 +1507,6 @@ static int __devinit igb_probe(struct pci_dev *pdev,
igb_get_bus_info_pcie(hw);

hw->phy.autoneg_wait_to_complete = false;
hw->mac.adaptive_ifs = true;

/* Copper options */
if (hw->phy.media_type == e1000_media_type_copper) {
Expand Down Expand Up @@ -3159,7 +3157,6 @@ static void igb_watchdog_task(struct work_struct *work)
}

igb_update_stats(adapter);
igb_update_adaptive(hw);

for (i = 0; i < adapter->num_tx_queues; i++) {
struct igb_ring *tx_ring = adapter->tx_ring[i];
Expand Down Expand Up @@ -4064,11 +4061,8 @@ void igb_update_stats(struct igb_adapter *adapter)
adapter->stats.mptc += rd32(E1000_MPTC);
adapter->stats.bptc += rd32(E1000_BPTC);

/* used for adaptive IFS */
hw->mac.tx_packet_delta = rd32(E1000_TPT);
adapter->stats.tpt += hw->mac.tx_packet_delta;
hw->mac.collision_delta = rd32(E1000_COLC);
adapter->stats.colc += hw->mac.collision_delta;
adapter->stats.tpt += rd32(E1000_TPT);
adapter->stats.colc += rd32(E1000_COLC);

adapter->stats.algnerrc += rd32(E1000_ALGNERRC);
adapter->stats.rxerrc += rd32(E1000_RXERRC);
Expand Down

0 comments on commit 2d0b0f6

Please sign in to comment.