diff options
author | jfv <jfv@FreeBSD.org> | 2010-09-28 00:13:15 +0000 |
---|---|---|
committer | jfv <jfv@FreeBSD.org> | 2010-09-28 00:13:15 +0000 |
commit | 6e3a6af4dca11cb0ff57310539129574a52697ec (patch) | |
tree | 21280311b19d0a44f429c7a43c6e9ff933e22698 /sys/dev/e1000/e1000_phy.c | |
parent | 0d99f2e43e7ec663501399402dc10f4d73b985d4 (diff) | |
download | FreeBSD-src-6e3a6af4dca11cb0ff57310539129574a52697ec.zip FreeBSD-src-6e3a6af4dca11cb0ff57310539129574a52697ec.tar.gz |
Update code from Intel:
- Sync shared code with Intel internal
- New client chipset support added
- em driver - fixes to 82574, limit queues to 1 but use MSIX
- em driver - large changes in TX checksum offload and tso
code, thanks to yongari.
- some small changes for watchdog issues.
- igb driver - local timer watchdog code was missing locking
this and a couple other watchdog related fixes.
- bug in rx discard found by Andrew Boyer, check for null pointer
MFC: a week
Diffstat (limited to 'sys/dev/e1000/e1000_phy.c')
-rw-r--r-- | sys/dev/e1000/e1000_phy.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/sys/dev/e1000/e1000_phy.c b/sys/dev/e1000/e1000_phy.c index 24ca36f..fb66623 100644 --- a/sys/dev/e1000/e1000_phy.c +++ b/sys/dev/e1000/e1000_phy.c @@ -281,6 +281,13 @@ s32 e1000_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data) goto out; } *data = (u16) mdic; + + /* + * Allow some time after each MDIC transaction to avoid + * reading duplicate data in the next MDIC transaction. + */ + if (hw->mac.type == e1000_pch2lan) + usec_delay(100); out: return ret_val; @@ -345,6 +352,13 @@ s32 e1000_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data) goto out; } + /* + * Allow some time after each MDIC transaction to avoid + * reading duplicate data in the next MDIC transaction. + */ + if (hw->mac.type == e1000_pch2lan) + usec_delay(100); + out: return ret_val; } @@ -868,9 +882,10 @@ s32 e1000_copper_link_setup_m88(struct e1000_hw *hw) if (ret_val) goto out; + phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX; /* For BM PHY this bit is downshift enable */ - if (phy->type != e1000_phy_bm) - phy_data |= M88E1000_PSCR_ASSERT_CRS_ON_TX; + if (phy->type == e1000_phy_bm) + phy_data &= ~M88E1000_PSCR_ASSERT_CRS_ON_TX; /* * Options: @@ -2618,6 +2633,9 @@ enum e1000_phy_type e1000_get_phy_type_from_id(u32 phy_id) case I82577_E_PHY_ID: phy_type = e1000_phy_82577; break; + case I82579_E_PHY_ID: + phy_type = e1000_phy_82579; + break; case I82580_I_PHY_ID: phy_type = e1000_phy_82580; break; |