Изменение состояния соединения |
Предыдущая Содержание Следующая |
Сетевые подключения, по определению, имеют дело с внешним миром за пределами локальной системы. Поэтому они часто подвержены внешним событиям и они могут быть временными обстоятельствами. Сетевая подсистема должна знать, когда сетевые соединения устанавливаются или пропадают, и она предоставляет несколько функций, которые драйвер может использовать, чтобы передать эту информацию.
Большинство сетевых технологий, связанных с настоящим, физическим соединением предоставляют состояние несущей (carrier); присутствии несущей означает, что оборудование присутствует и готово функционировать. Ethernet адаптеры, например, считывают несущий сигнал на проводе; когда пользователь спотыкается о кабель, эта несущая пропадает и связь пропадает. По умолчанию сетевыми устройствами предполагается, что несущий сигнал присутствует. Однако, драйвер может изменить это состояние явным образом с помощью этих функций:
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);
Она может быть использована для проверки текущего состояния несущей (как это отражено в структуре устройства). |
Предыдущая Содержание Следующая |