Linux 设备驱动 (第三版)第 17 章 网络驱动17.9. 连接状态的改变

17.9. 连接状态的改变

17.9. 连接状态的改变

网络连接, 根据定义, 打交道本地系统之外的世界. 因此, 它们常常受外界事件的影响, 并且它们可能是短暂的东西. 网络子系统需要知道网络连接的上或下, 它提供了几个驱动可用来传达这种信息的函数.

大部分涉及实际的物理连接的网络技术提供有一个载波状态; 载波存在说明硬件存在并准备好. 以太网适配器, 例如, 在电线上感知载波信号; 当一个用户绊倒一根电缆, 载波消失, 连接断开. 缺省地, 网络设备假设有载波信号存在. 驱动可以明确改变这个状态, 但是, 使用这些函数:


void netif_carrier_off(struct net_device *dev);
void netif_carrier_on(struct net_device *dev);

如果你的驱动检测到它的一个设备载波丢失, 它应当调用 netif_carrier_off 来通知内核这个改变. 当载波回来时, 应当调用 netif_carrier_on. 一些驱动也调用 netif_carrier_off 当进行大的配置改变时(例如媒介类型); 一旦适配器已经完成复位它自身, 新载波被检测并且恢复流量.

一个整数函数也存在:


int netif_carrier_ok(struct net_device *dev);

它可用于测试当前载波状态( 如同设备结构中所反映的 );