在网卡驱动程序中通常需要实现suspend和resume函数来支持设备的挂起和恢复操作。
网络驱动程序可以用两个函数来告知网络子系统网络设备的挂起和恢复:
1】netif_device_attach
2】netif_device_detach
NETIF_DEVICE_ATTCH:
【作用】将net_device的state中的__LINK_STATE_PRESENT置位。同时开启发送队列。
NETIF_DEVICE_DETACH:
【作用】将net_device的state中的__LINK_STATE_PRESENT清位。同时关闭发送队列。
--------------源码实例---------------
static void rtl8169_net_suspend(struct net_device *dev)
{
____if (!netif_running(dev))
________return;
____netif_device_detach(dev);
____netif_stop_queue(dev);
}
static void __rtl8169_resume(struct net_device *dev)
{
____netif_device_attach(dev);
____rtl8169_schedule_work(dev, rtl8169_reset_task);
}