aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2009-07-23 14:07:40 -0400
committerDavid S. Miller <davem@davemloft.net>2009-07-26 12:46:42 -0400
commit099e1cb700da6359b784ac7fb65099091b7b961e (patch)
tree406c583a91978cad2de9d7ada171b98c7be30a63 /drivers/net/igb
parentdcc3ae9a5252ea4ffe65b43cdc09ec2654b48000 (diff)
igb: make serdes power down available for 82575 in addition to 82576 parts
There was a serdes power down workaround that was originally added for 82576 fiber. However it has also been found that this workaround is needed for serdes connections as well. In addition it is also needed for 82575 serdes so we we need to remove the checks restricting it to 82576. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/igb')
-rw-r--r--drivers/net/igb/e1000_82575.c7
-rw-r--r--drivers/net/igb/e1000_82575.h5
-rw-r--r--drivers/net/igb/e1000_mac.c14
3 files changed, 17 insertions, 9 deletions
diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/igb/e1000_82575.c
index bd3efdb95c64..fa4a76299e00 100644
--- a/drivers/net/igb/e1000_82575.c
+++ b/drivers/net/igb/e1000_82575.c
@@ -866,8 +866,7 @@ void igb_shutdown_fiber_serdes_link_82575(struct e1000_hw *hw)
866{ 866{
867 u32 reg; 867 u32 reg;
868 868
869 if (hw->mac.type != e1000_82576 || 869 if (hw->phy.media_type != e1000_media_type_internal_serdes)
870 hw->phy.media_type != e1000_media_type_internal_serdes)
871 return; 870 return;
872 871
873 /* if the management interface is not enabled, then power down */ 872 /* if the management interface is not enabled, then power down */
@@ -1228,10 +1227,6 @@ out:
1228static bool igb_sgmii_active_82575(struct e1000_hw *hw) 1227static bool igb_sgmii_active_82575(struct e1000_hw *hw)
1229{ 1228{
1230 struct e1000_dev_spec_82575 *dev_spec = &hw->dev_spec._82575; 1229 struct e1000_dev_spec_82575 *dev_spec = &hw->dev_spec._82575;
1231
1232 if (hw->mac.type != e1000_82575 && hw->mac.type != e1000_82576)
1233 return false;
1234
1235 return dev_spec->sgmii_active; 1230 return dev_spec->sgmii_active;
1236} 1231}
1237 1232
diff --git a/drivers/net/igb/e1000_82575.h b/drivers/net/igb/e1000_82575.h
index 0f16abab2565..b674417ae06d 100644
--- a/drivers/net/igb/e1000_82575.h
+++ b/drivers/net/igb/e1000_82575.h
@@ -32,6 +32,11 @@ void igb_update_mc_addr_list(struct e1000_hw*, u8*, u32, u32, u32);
32extern void igb_shutdown_fiber_serdes_link_82575(struct e1000_hw *hw); 32extern void igb_shutdown_fiber_serdes_link_82575(struct e1000_hw *hw);
33extern void igb_rx_fifo_flush_82575(struct e1000_hw *hw); 33extern void igb_rx_fifo_flush_82575(struct e1000_hw *hw);
34 34
35#define ID_LED_DEFAULT_82575_SERDES ((ID_LED_DEF1_DEF2 << 12) | \
36 (ID_LED_DEF1_DEF2 << 8) | \
37 (ID_LED_DEF1_DEF2 << 4) | \
38 (ID_LED_OFF1_ON2))
39
35#define E1000_RAR_ENTRIES_82575 16 40#define E1000_RAR_ENTRIES_82575 16
36#define E1000_RAR_ENTRIES_82576 24 41#define E1000_RAR_ENTRIES_82576 24
37 42
diff --git a/drivers/net/igb/e1000_mac.c b/drivers/net/igb/e1000_mac.c
index 37706d9981e8..34f1a370b068 100644
--- a/drivers/net/igb/e1000_mac.c
+++ b/drivers/net/igb/e1000_mac.c
@@ -1064,9 +1064,17 @@ static s32 igb_valid_led_default(struct e1000_hw *hw, u16 *data)
1064 goto out; 1064 goto out;
1065 } 1065 }
1066 1066
1067 if (*data == ID_LED_RESERVED_0000 || *data == ID_LED_RESERVED_FFFF) 1067 if (*data == ID_LED_RESERVED_0000 || *data == ID_LED_RESERVED_FFFF) {
1068 *data = ID_LED_DEFAULT; 1068 switch(hw->phy.media_type) {
1069 1069 case e1000_media_type_internal_serdes:
1070 *data = ID_LED_DEFAULT_82575_SERDES;
1071 break;
1072 case e1000_media_type_copper:
1073 default:
1074 *data = ID_LED_DEFAULT;
1075 break;
1076 }
1077 }
1070out: 1078out:
1071 return ret_val; 1079 return ret_val;
1072} 1080}