I just wonder about the semantics of netif_device_present(). If a device is in PCI D3 (e.g. being runtime-suspended), then it's not accessible. So is it present or not? The description of the function just mentions the obvious case that the device has been removed from the system.
Related is the following regarding ethtool: dev_ethtool() returns an error if device isn't marked as present. If device is runtime-suspended and in PCI D3, then the driver may still be able to provide quite some (cached) info about the device. Same applies for settings: Even if device is sleeping, the driver may store new settings and apply them once the device is awake again.