I notice that the interface not up in your test. If you ifconfig it up does it detect that it has lost link? The driver isn't really running anymore when you bring the link down -- interrupts are disabled, for example, so it will never get a link down interrupt.