Сведения о структуре nic_config_t
#include <hw/nicinfo.h>
typedef struct _nic_config {
_Uint32t revision;
_Uint32t flags;
_Int32t power_mode;
_Uint32t tx_csum_active;
_Uint32t rx_csum_active;
_Uint32t mtu;
_Uint32t mru;
_Uint32t verbose;
_Int32t lan;
_Uint8t permanent_address[8];
_Uint8t current_address[8];
_Uint32t mac_length;
_Uint32t connector;
_Int32t phy_addr;
_Uint32t media;
_Int32t media_rate;
_Int32t duplex;
_Uint32t bus_type;
_Uint32t vendor_id;
_Uint32t device_id;
_Uint32t device_index;
_Uint32t device_revision;
_Uint32t serial_number;
_Uint32t num_mem_windows;
_Uint32t num_io_windows;
_Uint32t num_irqs;
_Uint32t num_dma_channels;
_Uint64t mem_window_base[8];
_Uint64t mem_window_size[8];
_Uint64t io_window_base[8];
_Uint64t io_window_size[8];
_Uint64t rom_base;
_Uint64t rom_size;
_Uint32t irq[8];
_Uint32t dma_channel[8];
_Uint8t device_description[64];
_Uint8t uptype[16];
_Int32t iftype;
_Int32t priority;
_Uint32t rsvd[32];
} nic_config_t;
libnetdrvr
Структура nic_config_t
содержит информацию о конфигурации устройства и хранит данные, полученные из строки опций драйвера.
Структура включает следующие поля:
- revision
- Должен быть установлен в значение
NIC_CONFIG_REVISION
. - flags
- Допустимые значения определяются перечислением
nic_flags_t
в файле <hw/nicinfo.h>
. На данный момент определены следующие флаги: - NIC_FLAG_POWER_MANAGEMENT
- Включена поддержка управления питанием.
- NIC_FLAG_MULTICAST
- Включен прием мультикастовых пакетов.
- NIC_FLAG_PROMISCUOUS
- Устройство находится в режиме promiscuous.
- NIC_FLAG_BROADCAST
- Устройство может принимать широковещательные пакеты.
- NIC_FLAG_WIRELESS
- Устройство поддерживает беспроводной режим.
- NIC_FLAG_LINK_DOWN
- Связь отключена, в данный момент пакеты не могут передаваться или приниматься.
- power_mode
- Текущий режим питания, смотрите подробнее в
<sys/pm.h>
- tx_csum_active
- Включен ли подсчёт чексуммы TX пакетов. На данный момент определены следующие флаги:
- IFCAP_CSUM_IPv4
- Включён подсчёт IPv4 header чексуммы.
- IFCAP_CSUM_TCPv4
- Включён подсчёт IPv4/TCP чексуммы.
- IFCAP_CSUM_UDPv4
- Включён подсчёт IPv4/UDP чексуммы.
- IFCAP_CSUM_TCPv6
- Включён ли подсчёт IPv6/TCP чексуммы.
- IFCAP_CSUM_UDPv6
- Включён ли подсчёт IPv6/UDP чексуммы.
- rx_csum_active
- Включен ли подсчёт чексуммы RX пакетов. На данный момент определены следующие флаги:
- IFCAP_CSUM_IPv4
- Включён подсчёт IPv4 header чексуммы.
- IFCAP_CSUM_TCPv4
- Включён подсчёт IPv4/TCP чексуммы.
- IFCAP_CSUM_UDPv4
- Включён подсчёт IPv4/UDP чексуммы.
- IFCAP_CSUM_TCPv6
- Включён ли подсчёт IPv6/TCP чексуммы.
- IFCAP_CSUM_UDPv6
- Включён ли подсчёт IPv6/UDP чексуммы.
- mtu
- Максимальный размер пакета, который устройство может принять для передачи (включая заголовок Ethernet).
- mru
- Максимальный размер пакета, который устройство может успешно принять из сети (включая заголовок Ethernet).
- verbose
- Текущий уровень подробности. Чем выше уровень, тем больше отладочной информации драйвер будет выводить в системный логгер.
- lan
- Номер экземпляра (LAN) интерфейса.
- permanent_address[8]
- Уникальный адрес станции (MAC-адрес), присвоенный производителем устройства (обычно считывается из EEPROM драйвером).
- current_address[8]
- Адрес станции (MAC-адрес), который устройство в настоящее время использует. Обычно это тот же адрес, что и у устройства, но может отличаться.
- mac_length
- Длина MAC-адреса устройства в байтах. Для Ethernet устройства это значение равно
6
. - connector
- Тип физического разъема, используемого для подключения устройства к сети. Может быть одним из значений перечисления
nic_connector_types
, определенного в <hw/nicinfo.h>
. - phy_addr
- Адрес, используемый для связи с PHY-устройством с целью доступа к его внутренним регистрами.
- media
- Указывает тип носителя, через который устройство работает. Может быть одним из значений перечисления
nic_media_types
, определенного в <hw/nicinfo.h>
. - media_rate
- Текущая скорость передачи по носителю в Kбит/с. Если скорость неизвестна, следует установить значение в
-1
. - duplex
- Текущий режим дуплекса. Значение
0
— полудуплекс, 1
— полный дуплекс. Если режим дуплекса неизвестен, установите значение в -1
. - bus_type
- Тип шины, через которую устройство подключено к хост-системе. Описано в
<netdrvr/support.h>
и <drvr/common.h>
- vendor_id
- PCI Vendor ID для PCI-устройства, присвоенный производителем и читаемый из конфигурационного пространства PCI.
- device_id
- PCI Device ID для PCI-устройства, присвоенный производителем и читаемый из конфигурационного пространства PCI.
- device_index
- Для PCI-устройства — уникальный идентификатор конкретного экземпляра устройства, в сочетании с vendor_id и device_id.
- device_revision
- Ревизия устройства для PCI-устройства, читаемая из конфигурационного пространства PCI.
- serial_number
- Серийный номер устройства, который зависит от драйвера.
- num_mem_windows
- Количество окон памяти, используемых для доступа к устройству.
- num_io_windows
- Количество окон ввода-вывода, используемых для доступа к устройству.
- num_irqs
- Количество векторных номеров прерываний, к которым драйвер привязан для получения событий прерывания от устройства.
- num_dma_channels
- Количество каналов DMA, используемых для передачи данных между устройством и памятью.
- mem_window_base[8]
- Массив, содержащий физические базовые адреса окон памяти устройства.
- mem_window_size[8]
- Массив, содержащий размеры окон памяти устройства в байтах.
- io_window_base[8]
- Массив, содержащий базовые адреса окон ввода-вывода устройства.
- io_window_size[8]
- Массив, содержащий размеры окон ввода-вывода устройства в байтах.
- rom_base
- Если у устройства есть память ROM, отображенная в память, это поле содержит физический адрес ROM.
- rom_size
- Если у устройства есть память ROM, отображенная в память, это поле указывает размер ROM в байтах.
- irq[8]
- Массив, содержащий номера векторов прерываний, к которым драйвер привязан для получения событий прерывания от устройства.
- dma_channel[8]
- Массив, содержащий каналы DMA, через которые передаются данные между устройством и памятью.
- device_description[64]
- Строка, заканчивающаяся на
NULL
, которая описывает устройство. Она должна содержать информацию о модели устройства. - uptype[16]
- Строка, заканчивающаяся на
NULL
, которая описывает тип интерфейса устройства. - iftype
- Тип интерфейса, соответствующий одному из типов из
<net/if_types.h>
. Для Ethernet устройства должно быть установлено значение IFT_ETHER
. - priority
- Указывает приоритет, с которым будет работать поток обработки событий драйвера. Рекомендуемое значение по умолчанию —
21
.
ЗОСРВ «Нейтрино»
nicinfo
Предыдущий раздел: Библиотека разработки сетевых драйверов