There are two different problems:
1) Behavior seems to be different depending on device driver
author. We should document the expected semantics better.
IMHO:
When device is down, it should:
a) use as few resources as possible:
- not grab memory for buffers
- not assign IRQ unless it could get one
- turn off all power consumption possible
b) allow setting parameters like speed/duplex/autonegotiation,
ring buffers, ... with ethtool, and remember the state
c) not accept data coming in, and drop packets queued