Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
My e1000 driver seems to enter a sleep state after a minute of two of not receiving any packets. If I disconnect and reconnect the network cable from the box I see the link go down/up and everything works great until this mysterious timer puts it to sleep again.
I've tried everything I could find in the manual to disable powersave:
e1000_reg_set(e, E1000_REG_ECTRL, E1000_REG_ECTRL_PHY_PWRMGT); //disable power management
e1000_reg_set(e, E1000_REG_WAKEUP_CTRL, E1000_REG_WAKEUP_CTRL_APME); //enable advanced management for filters
e1000_reg_set(e, E1000_REG_WAKEUP_FILTER, E1000_REG_WAKEUP_FILTER_EX |
E1000_REG_WAKEUP_FILTER_MC | E1000_REG_WAKEUP_FILTER_BC
| E1000_REG_WAKEUP_FILTER_ARP); //set it to wakeup on just about everything
If I leave multicast promiscuous mode enabled it works great, not surprising because it's always seeing packets, but I'd like to filter these out.
Yes I was tinkering with those, but to no avil. Leaving it in promiscuous works for a while, until even those go quite. I'm trying to understand mapping in the phy memory, the intel docs are confusing as always. I believe this is a separate mem space from even the flash for configuring how the card behaves? So all those addresses are relative to where its mapped, but can't quite seem to pin down how/where the phy base is located.