I don't like the polling/interrupt setup part:
- for a nic driver, there is no irq line that could be requested by
- if the mii bus driver uses it's own timers, then locking within the
nics will be more difficult.
Could you make that part optional? For a nic driver, I would prefer if I
could just call the ->startup part without the request_irq. If the nic
irq handler notices that the nic got an event, then it would call an
appropriate mii_bus function.
This also applies for something like /dev/phy/xy: With natsemi, it would
be very tricky to add proper locking. The nic as an internal phy and an
external mii bus. The internal phy is partially visible on the external
bus and any accesses to the phy id of the internal phy on the external
bus cause lockups. No big deal, I just move the internal phy around [the
phy id doesn't matter], but I would prefer if I have to do that just for
ethtool, not for multiple interfaces.