Dear Dave,
> When a system with an i217 is idle, the interconnect between the MAC and the > PHY (Kumeran) enters a power-saving state (K1). It takes approximately 15us > to exit this state. There are examples of disabling the K1 state in the > driver, and should be a relatively simple modification for you to try out and > see if this fixes your problem. It took me quite a while to figure out the init sequence of the driver and I ended up adding: @@ -963,6 +969,17 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw) return ret_val; } + { + int ret; + pr_info("Checking for link: mac.type=%d, phy.type=%d, phy.media_type=%d\n", + hw->mac.type, hw->phy.type, hw->phy.media_type); + pr_info("Trying to disable K1 state.\n"); + hw->phy.ops.acquire(hw); + ret = e1000_configure_k1_ich8lan(hw, 0); + hw->phy.ops.release(hw); + pr_info("e1000_configure_k1_ich8lan: %d\n", ret); + } + /* When connected at 10Mbps half-duplex, 82579 parts are excessively * aggressive resulting in many collisions. To avoid this, increase * the IPG and reduce Rx latency in the PHY. > Hope this helps, It indeed does help, but not by the expected 15 µs. It is rather 8 µs. The read/write sequence therefore still takes 14 µs longer than a 82574L and the realtime deadline of my application is still missed occasionally. Of course, it is a vast improvement over the K1-enabled case and I'm very grateful for the tip. The main difficulty for double-checking the correct operation of the patch is that the i217 architecture isn't very clear to me. The Kumeran register is mentioned in the datasheet (v2.3) but the explanation is simply missing, so I'm not really sure what I'm actually doing when issuing e1000_configure_k1_ich8lan() into a e1000_pch_lpt MAC instead of a e1000_pchlan. Any way I can check ? To summarize, the time measurements for (tx queue update) -> (tx data on wire) at 100 Mb: 82574L: 6µs, I217-LM (K1 enabled): 20.5µs, I217-LM (K1 disabled): 12.5µs. The times for (rx data on wire) -> (rx descriptor updated) are about the same. Payload size is 64 bytes, Should you have any other ideas... Thanks for the help, Jeroen. ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired