Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 17.9. Changes in Link State

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

17.9. Изменение состояния связи

hardorsoft 26.10.10 в 03:11

0

Сетевые соединения, по определению, служат для связи локальной
системы с внешним миром. Поэтому она находятся под влиянием внешних
событий. Сетевая подсистема должна знать, когда есть соединение, а
когда нет. Драйверу предоставляются функции, которые уведомляют
систему об этом.

hardorsoft 26.10.10 в 03:11

0

Большинство сетевых технологий использует для определения
состояния физического соединения – сигнал carrier (несущая).
Определение присутствия сигнала carrier в передающей среде,
реализовано аппаратно. Например, адаптер Ethernet отслеживает сигнал
carrier в кабели. Если пользователь отключает кабель, сигнал пропадает,
и соединение отключается. По умолчанию, сетевые устройства считают,
что сигнал carrier присутствует. Для изменения этого состояния драйвер
может использовать функции:

hardorsoft 26.10.10 в 03:11

0

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

hardorsoft 26.10.10 в 03:11

0

Если ваш драйвер обнаружил отсутствие carrier на устройстве, он
должен вызвать функцию netif_carrier_off, для информирования ядра.
Когда carrier снова появляется, вызывается netif_carrier_on. Так же
netif_carrier_off вызывается при важном изменении конфигурации
(таком как например, изменение типа среды), после окончания
изменений снова проверяется наличие carrier, и работа возобновляется.

hardorsoft 26.10.10 в 03:11

0

Имеется еще одна функция:

hardorsoft 26.10.10 в 03:12

0

int netif_carrier_ok(struct net_device *dev);

hardorsoft 26.10.10 в 03:12

0

Используется для проверки текущего состояния carrier.

hardorsoft 26.10.10 в 03:12

0
Минутку...