diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-15 12:40:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-15 12:40:05 -0400 |
commit | 2ed0e21b30b53d3a94e204196e523e6c8f732b56 (patch) | |
tree | de2635426477d86338a9469ce09ba0626052288f /drivers/net/e1000e/lib.c | |
parent | 0fa213310cd8fa7a51071cdcf130e26fa56e9549 (diff) | |
parent | 9cbc1cb8cd46ce1f7645b9de249b2ce8460129bb (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1244 commits)
pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US
ipv4: Fix fib_trie rebalancing
Bluetooth: Fix issue with uninitialized nsh.type in DTL-1 driver
Bluetooth: Fix Kconfig issue with RFKILL integration
PIM-SM: namespace changes
ipv4: update ARPD help text
net: use a deferred timer in rt_check_expire
ieee802154: fix kconfig bool/tristate muckup
bonding: initialization rework
bonding: use is_zero_ether_addr
bonding: network device names are case sensative
bonding: elminate bad refcount code
bonding: fix style issues
bonding: fix destructor
bonding: remove bonding read/write semaphore
bonding: initialize before registration
bonding: bond_create always called with default parameters
x_tables: Convert printk to pr_err
netfilter: conntrack: optional reliable conntrack event delivery
list_nulls: add hlist_nulls_add_head and hlist_nulls_del
...
Diffstat (limited to 'drivers/net/e1000e/lib.c')
-rw-r--r-- | drivers/net/e1000e/lib.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/net/e1000e/lib.c b/drivers/net/e1000e/lib.c index 18a4f5902f3b..be6d9e990374 100644 --- a/drivers/net/e1000e/lib.c +++ b/drivers/net/e1000e/lib.c | |||
@@ -378,6 +378,12 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw) | |||
378 | 378 | ||
379 | mac->get_link_status = 0; | 379 | mac->get_link_status = 0; |
380 | 380 | ||
381 | if (hw->phy.type == e1000_phy_82578) { | ||
382 | ret_val = e1000_link_stall_workaround_hv(hw); | ||
383 | if (ret_val) | ||
384 | return ret_val; | ||
385 | } | ||
386 | |||
381 | /* | 387 | /* |
382 | * Check if there was DownShift, must be checked | 388 | * Check if there was DownShift, must be checked |
383 | * immediately after link-up | 389 | * immediately after link-up |
@@ -1406,6 +1412,38 @@ s32 e1000e_id_led_init(struct e1000_hw *hw) | |||
1406 | } | 1412 | } |
1407 | 1413 | ||
1408 | /** | 1414 | /** |
1415 | * e1000e_setup_led_generic - Configures SW controllable LED | ||
1416 | * @hw: pointer to the HW structure | ||
1417 | * | ||
1418 | * This prepares the SW controllable LED for use and saves the current state | ||
1419 | * of the LED so it can be later restored. | ||
1420 | **/ | ||
1421 | s32 e1000e_setup_led_generic(struct e1000_hw *hw) | ||
1422 | { | ||
1423 | u32 ledctl; | ||
1424 | |||
1425 | if (hw->mac.ops.setup_led != e1000e_setup_led_generic) { | ||
1426 | return -E1000_ERR_CONFIG; | ||
1427 | } | ||
1428 | |||
1429 | if (hw->phy.media_type == e1000_media_type_fiber) { | ||
1430 | ledctl = er32(LEDCTL); | ||
1431 | hw->mac.ledctl_default = ledctl; | ||
1432 | /* Turn off LED0 */ | ||
1433 | ledctl &= ~(E1000_LEDCTL_LED0_IVRT | | ||
1434 | E1000_LEDCTL_LED0_BLINK | | ||
1435 | E1000_LEDCTL_LED0_MODE_MASK); | ||
1436 | ledctl |= (E1000_LEDCTL_MODE_LED_OFF << | ||
1437 | E1000_LEDCTL_LED0_MODE_SHIFT); | ||
1438 | ew32(LEDCTL, ledctl); | ||
1439 | } else if (hw->phy.media_type == e1000_media_type_copper) { | ||
1440 | ew32(LEDCTL, hw->mac.ledctl_mode1); | ||
1441 | } | ||
1442 | |||
1443 | return 0; | ||
1444 | } | ||
1445 | |||
1446 | /** | ||
1409 | * e1000e_cleanup_led_generic - Set LED config to default operation | 1447 | * e1000e_cleanup_led_generic - Set LED config to default operation |
1410 | * @hw: pointer to the HW structure | 1448 | * @hw: pointer to the HW structure |
1411 | * | 1449 | * |