Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
17.15. Ещё несколько подробностей
hardorsoft
26.10.10 в 05:37
|
|
Этот подраздел рассматривает еще несколько тем, которые могут быть интересны разработчикам сетевых драйверов. Здесь мы попытаемся только указать вам нужное направление. Для получение полной информации по каждой темы, вам потребуется потратить некоторое время на анализ исходных кодов ядра.
hardorsoft
26.10.10 в 05:37
|
|
17.15.1. Поддержка независимого от среды интерфейса.
hardorsoft
26.10.10 в 05:37
|
|
Независимый от передающей среды интерфейс (Media Independent Interface – MII) описывается стандартом IEEE 802.3 как Ethernet – приемо- передающий интерфейс с контроллером сети. Многие продающиеся продукты совместимы с этим интерфейсом. Если вы пишите драйвер для MII-совместимого контролера, имейте ввиду, что ядро экспортирует уровень общей MII-поддержки, который может облегчить вашу жизнь.
hardorsoft
26.10.10 в 05:37
|
|
Для использования этого уровня, вы должны подключить файл <"linux/mii.h">. Вам необходимо занести в структуру mii_if_info идентификатор физического приемопередатчика, признак является ли он полнодуплексным, и т.д. Для этой структуры также необходимы 2 метода:
hardorsoft
26.10.10 в 05:38
|
|
int (*mdio_read) (struct net_device *dev, int phy_id, int location); void (*mdio_write) (struct net_device *dev, int phy_id, int location, int val);
hardorsoft
26.10.10 в 05:38
|
|
Как вы могли ожидать, эти методы реализуют коммуникацию с вашим MII интерфейсом.
hardorsoft
26.10.10 в 05:38
|
|
Общий MII-код предоставляет множество функций для запросов и изменений текущего режима приемопередатчика. Многие из них предназначены для работы с утилитой ethtool. Для более глубокого ознакомления смотрите файлы <"linux/mii.h"> и drivers/net/mii.c.
hardorsoft
26.10.10 в 05:39
|
|
17.15.2. Поддержка Ethtool
hardorsoft
26.10.10 в 05:39
|
|
Ethtool – утилита, которая дает системным администраторам возможность управлять сетевым интерфейсом. С утилитой, можно контролировать различные параметры, включая скорость, тип передающей среды, дуплексные операции, настройки ПДП, аппаратное вычисление контрольной суммы, выход из спящего режима (wake-on-LAN) и т.д. Все это возможно, только если ethtool поддерживается драйвером. Ethtool можно получить по адресу http://sf.net/projects/gkernel/.
hardorsoft
26.10.10 в 05:39
|
|
Объявления, необходимые ethtool, могут быть найдены в файле <linux></linux>ethtool.h>. Центральное место занимает структура ethtool_ops, которая содержит 24 метода для поддержки ethtool. Смотрите файл <linux></linux>ethtool.h>, для получения более полной информации. Если ваш драйвер использует уровень MII, вы можете использовать mii_ethtool_gset и mii_ethtool_sset, для реализации методов get_settings и set_settings.
hardorsoft
26.10.10 в 05:40
|
|
Для работы ethtool с вашим устройством, вы должны разместить указатель на ethtool_ops в структуре net_device. Для этого должен использоваться макрос SET_ETHTOOL_OPS, определенный в <linux></linux>netdevice.h>. Имейте в виду, что ваши методы ethtool могут быть вызваны, при выключенном интерфейсе.
hardorsoft
26.10.10 в 05:40
|
|
|
|
|
Относительно позднее добавление (2.6.5) к сетевому стеку. Предназначено для того, чтобы ядро могло принимать и посылать пакеты, когда сетевая подсистема и подсистема ввода-вывода могут быть недоступны. Используется для сетевых консолей и удаленной отладки ядра. Поддержка netpoll в вашем драйвере не обязательна, но может сделать ваше устройство полезнее в некоторых ситуациях. Поддержка netpoll, как правило, относительно проста.
hardorsoft
26.10.10 в 05:40
|
|
Для поддержки netpoll драйвер должен реализовать метод poll_controller. Работа метода не должна прерываться, а это может произойти при возникновении прерывания. Почти все методы poll_controller выглядят так:
hardorsoft
26.10.10 в 05:40
|
|
void my_poll_controller(struct net_device *dev) { disable_device_interrupts(dev); call_interrupt_handler(dev->irq, dev, NULL); reenable_device_interrupts(dev); }
hardorsoft
26.10.10 в 05:41
|
|
В сущности, метод poll_controller прерывания устройства.
hardorsoft
26.10.10 в 05:41
|
|