sk98lin(4) драйвер Marvell/SysKonnect Gigabit Ethernet, версия 6.21

ОБЗОР

insmod sk98lin.o [Speed_A=i,j,...] [Speed_B=i,j,...] [AutoNeg_A=i,j,...] [AutoNeg_B=i,j,...] [DupCap_A=i,j,...] [DupCap_B=i,j,...] [FlowCtrl_A=i,j,...] [FlowCtrl_B=i,j,...] [Role_A=i,j,...] [Role_B=i,j,...] [ConType=i,j,...] [Moderation=i,j,...] [IntsPerSec=i,j,...] [PrefPort=i,j,...] [RlmtMode=i,j,...]

ОПИСАНИЕ

Замечание: Данный устаревший драйвер был удалён из ядра версии 2.6.26.

sk98lin — это драйвер Gigabit Ethernet для сетевых адаптеров Marvell и SysKonnect. Он поддерживает SysKonnect SK-98xx/SK-95xx-совместимые адаптеры Gigabit Ethernet и любые карты с Yukon-совместимым чипсетом.

При загрузке драйвера с помощью insmod, параметры сетевого адаптера можно указать в командной строке через запятую. Если, например, установлено два сетевых адаптера и AutoNegotiation на порту A первого адаптера нужно включить, а на порту A второго адаптера — выключить, то введите следующее:


   insmod sk98lin.o AutoNeg_A=On,Off

После того как sk98lin подхватит один или более адаптер и будет смонтирована файловая система /proc, будут созданы отдельные файлы статистики в каталоге /proc/net/sk98lin для каждого порта установленных сетевых адаптеров. Эти файлы будут называться eth[x], где x — номер интерфейса, который был назначен каждому порту в системе.

После завершения загрузки каждому eth[x] может быть назначен желаемый IP-адрес с помощью команды ifconfig(8). Это заставит адаптер подключиться к Ethernet и вывести сообщение на консоль: "ethx: network connection up using port y" с настроенными или определёнными параметрами подключения.

Драйвер sk98lin также поддерживает большие фреймы (также называемые jumbo фреймами). С помощью jumbo-фреймов можно очень сильно увеличить пропускную способность при передаче больших объёмов данных. Чтобы включить большие фреймы, нужно на интерфейсе установить большое значение MTU (максимальная единица передачи). Значение MTU по умолчанию равно 1500 и может быть увеличено до 9000 (байт). Установку размера MTU можно выполнить при назначении IP-адреса интерфейсу или позднее с помощью команды ifconfig(8) с параметром mtu. Если, например, eth0 нужно назначить IP-адрес и большой размер фрейма MTU, то это можно сделать с помощью следующих двух команд:


    ifconfig eth0 10.1.1.1
    ifconfig eth0 mtu 9000

Эти две команды можно объединить в одну:


    ifconfig eth0 10.1.1.1 mtu 9000

Заметим, что большие фреймы можно использовать только, если эта позволяет ваша сетевая инфраструктура. Это означает, что все коммутаторы сети Ethernet также должны поддерживать большие фреймы. Довольно много коммутаторов поддерживают большие фреймы, но для этого их нужно настроить. В большинстве случаев, в настройках по умолчанию используются только стандартные фреймы с размером MTU равным 1500 (байт). Помимо коммутатором сети, все используемые сетевые адаптеры также должны принимать jumbo-фреймы. Если адаптер не настроен для приёма больших фреймов, то он их просто отбрасывает.

Для переключения обратно к стандартному размеру фрейма Ethernet можно использовать такую команду ifconfig(8):


    ifconfig eth0 mtu 1500

Драйвер Marvell/SysKonnect Gigabit Ethernet для Linux поддерживает VLAN и объединение каналов в соответствии со стандартами IEEE 802.1, 802.1q и 802.3ad. Эти свойства доступны только после установки открытых модулей, которые можно найти в Интернет:

VLAN:
Link Aggregation:


Заметим, что Marvell/SysKonnect не предлагает поддержку этих открытых модулей и не несёт ответственности при отказах и проблемах, связанных с использованием этих модулей.

Параметры

Speed_A=i,j,...
Этот параметр используется для задания скорости порта A. Работает только для адаптеров Yukon с медным интерфейсом. Возможные значения: 10, 100, 1000 или Auto; по умолчанию задано Auto. Обычно, скорость согласуется между двумя портами во время установки связи. Если процедура завершается неудачно, то порт можно принудительно перевести на нужную скорость с помощью этого параметра.
Speed_B=i,j,...
Этот параметр используется для задания скорости порта B. Работает только для адаптеров Yukon с медным интерфейсом. Возможные значения: 10, 100, 1000 или Auto; по умолчанию задано Auto. Обычно, скорость согласуется между двумя портами во время установки связи. Если процедура завершается неудачно, то порт можно принудительно перевести на нужную скорость с помощью этого параметра.
AutoNeg_A=i,j,...
Включение или выключение автосогласования на порту A. Возможные значения: On, Off или Sense; по умолчанию задано On. В режиме Sense выполняется автоматическое обнаружение поддержки автосогласования у партнёра по связи.
AutoNeg_B=i,j,...
Включение или выключение автосогласования на порту B. Возможные значения: On, Off или Sense; по умолчанию задано On. В режиме Sense выполняется автоматическое обнаружение поддержки автосогласования у партнёра по связи.
DupCap_A=i,j,...
Этот параметр используется для задания режима дуплекса на порту A. Возможные значения: Half, Full или Both; по умолчанию задано Both. Этот параметр учитывается только, если AutoNeg_A для порта A не установлено в Sense. Если значение AutoNeg_A равно On, то может быть указано любое из трёх значений DupCap_A ( Half, Full или Both). Если AutoNeg_A равно Off, то значениями DupCap_A могут быть только Full и Half. Параметр DupCap_A полезен, если партнёр по связи не поддерживает все возможные комбинации дуплекса.
DupCap_B=i,j,...
Этот параметр используется для задания режима дуплекса на порту B. Возможные значения: Half, Full или Both; по умолчанию задано Both. Этот параметр учитывается только, если AutoNeg_B для порта B не установлено в Sense. Если значение AutoNeg_B равно On, то может быть указано любое из трёх значений DupCap_B ( Half, Full или Both). Если AutoNeg_B равно Off, то значениями DupCap_B могут быть только Full и Half. Параметр DupCap_B полезен, если партнёр по связи не поддерживает все возможные комбинации дуплекса.
FlowCtrl_A=i,j,...
Этот параметр используется для задания свойств управления потоком, которые анонсируются портом при автосогласовании. Возможные значения: Sym, SymOrRem, LocSend или None; по умолчанию задано SymOrRem. Назначение режимов:


Sym = Symmetric
 Оба партнёра по связи позволяют посылать фреймы PAUSE.
SymOrRem = SymmetricOrRemote
 Оба или только один партнёр по связи позволяет посылать фреймы PAUSE.
LocSend = LocalSend
 Только локальная связь партнёра позволяет посылать фреймы PAUSE.
None = None
  Партнёры по связи не позволяют посылать фреймы PAUSE.

Заметим, что этот параметр игнорируется, если значение AutoNeg_A равно Off.

FlowCtrl_B=i,j,...
Этот параметр используется для задания свойств управления потоком, которые анонсируются портом при автосогласовании. Возможные значения: Sym, SymOrRem, LocSend или None; по умолчанию задано SymOrRem. Назначение режимов:

Sym = Symmetric
 Оба партнёра по связи позволяют посылать фреймы PAUSE.
SymOrRem = SymmetricOrRemote
 Оба или только один партнёр по связи позволяет посылать фреймы PAUSE.
LocSend = LocalSend
 Только локальная связь партнёра позволяет посылать фреймы PAUSE.
None = None
  Партнёры по связи не позволяют посылать фреймы PAUSE.

Заметим, что этот параметр игнорируется, если значение AutoNeg_B равно Off.

Role_A=i,j,...
Этот параметр доступен только для адаптеров 1000Base-T. При организации связи между двумя портами 1000Base-T один должен играть роль основного (предоставлять синхронизацию), другой — подчинённого. Возможные значения: Auto, Master или Slave; по умолчанию задано Auto. Обычно, роль порта согласуется во время установления связи, но если этого достичь не удалось, с помощью этого параметра порту A можно принудительно назначить нужное значение.
Role_B=i,j,...
Этот параметр доступен только для адаптеров 1000Base-T. При организации связи между двумя портами 1000Base-T один должен играть роль основного (предоставлять синхронизацию), другой — подчинённого. Возможные значения: Auto, Master или Slave; по умолчанию задано Auto. Обычно, роль порта согласуется во время установления связи, но если этого достичь не удалось, с помощью этого параметра порту B можно принудительно назначить нужное значение.
ConType=i,j,...
Этот параметр представляет собой комбинацию всех пяти параметров порта. Он упрощает настройку обоих портов адаптера. Различные значения этой переменной отражают большую часть важных комбинаций параметров порта. Возможные значения и их соответствующие комбинации параметров портов:

ConType | DupCap   AutoNeg   FlowCtrl   Role   Speed
--------+-------------------------------------------
Auto    |  Both      On      SymOrRem   Auto   Auto

100FD | Full Off None Auto 100
100HD | Half Off None Auto 100
10FD | Full Off None Auto 10
10HD | Half Off None Auto 10
Задание любого другого параметра порта вместе с ConType приводит к объединению обеих настроек. Одиночные параметры порта (например, Speed_A) имеют больший приоритет чем значение переменной ConType.
Moderation=i,j,...
Регулирование прерываний используется для ограничения максимального количества прерываний, которое может обработать драйвер. То есть одно и более прерываний (которые означают обработку передачи или приёма пакета) ставится в очередь для ожидания обработки драйвером. Параметр IntsPerSec определяет когда обслуживается очередь (см. далее). Возможные режимы регулирования: None, Static или Dynamic; по умолчанию задано None. Назначение режимов:

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


Static Выполнять регулирование прерываний для адаптера. Все прерывания по передаче и приёму ставятся в очередь в ожидании завершения интервала регулирования. После окончания интервала все прерывания в очереди обрабатываются одним большим заданием без задержки. Термин Static отражает тот факт, что регулирование прерываний всегда включено, независимо от сетевой загрузки на определённом интерфейсе в данный момент. Кроме того, длительность интервала регулирования прерываний имеет постоянную величину, которая при работающем драйвере никогда не меняется.


Dynamic Регулирование прерываний может применяться к адаптеру в зависимости от загрузки системы. Если драйвер обнаруживает, что система очень загружена, то он попытается оградить систему от излишней сетевой нагрузки, включив регулирование прерываний. Если позднее нагрузка на ЦП снизится (или если сетевая загрузка станет очень маленькой), то регулирование прерываний будет автоматически выключено.

Регулирование прерываний должно использоваться, когда драйвер обрабатывает много трафика на одном или более интерфейсах, который, как следствие, также приводит большой нагрузке на ЦП. Применение регулирования при большой сетевой нагрузке на медленных компьютерах может понизить загрузку ЦП на 20-30%.

Заметим, что отрицательной стороной регулирования прерываний является увеличение времени на передачу и подтверждение (round-trip-time, RTT), так как постановка в очередь и обслуживание прерываний происходит только через определённые интервалы.

IntsPerSec=i,j,...
Этот параметр определяет длительность любого интервала регулирования прерываний. Предполагая, что используется регулирование прерываний, при значении параметра IntsPerSec равном 2000, получается интервал регулирования прерываний в 500 микросекунд. Возможные значения этого параметра находятся в диапазоне 30...40000 (прерываний в секунду). Значение по умолчанию равно 2000.

Этот параметр используется только, если для сетевого адаптера включено статическое или динамическое регулирование прерываний. Если регулирование не применяется, то параметр игнорируется.

Заметим, что длительность интервала регулирования прерываний нужно выбирать с осторожностью. На первый взгляд, выбор очень большой длительности (например, только 100 прерываний в секунду) кажется осмысленным, но это колоссально увеличит задержку в обработке. С другой стороны, выбор очень короткого интервала регулирования мог бы компенсировать использование любого применяемого регулирования.

PrefPort=i,j,...
Этот параметр используется для принудительного задания предпочтительного порта: A или B (на двухпортовых адаптерах). Предпочтительный порт будет использован когда оба порта, A и B, считаются полностью взаимозаменяемыми. Возможные значения: A или B; по умолчанию задано A.
RlmtMode=i,j,...
RLMT-слежение за состоянием порта. Если связь на активном порту пропадает, то RLMT сразу переключает работу на резервную связь. Виртуальная связь поддерживается так долго, пока есть не менее одной работающей «физической» связи. Этот параметр определяет как RLMT должен отслеживать состояние портов. Возможные значения: CheckLinkState, CheckLocalPort, CheckSeg или DualNet; по умолчанию задано CheckLinkState. Назначение режимов:

CheckLinkState Проверять только состояние связи: RLMT использует состояние связи, сообщаемое аппаратурой адаптера для каждого порта, для определения, можно ли использовать порт для передачи данных в сеть или нет.


CheckLocalPort В этом режиме RLMT отслеживает сетевой путь между двумя портами адаптера, периодически пересылая пакеты между ними. Для работы этого режима требуется настройка сети, при которой два порта смогли бы "видеть" друг друга (то есть, между ними не должно быть маршрутизатора).


CheckSeg Проверять локальный порт и сегментирование: Этот режим поддерживает те же функции что и CheckLocalPort и вдобавок проверяет сегментирование сети между портами. Поэтому этот режим может использоваться только, если в сети установлены коммутаторы Gigabit Ethernet, на которых настроен протокол Spanning Tree.


DualNet В этом режиме порты A и B используются как раздельные устройства. Если у вас адаптер с двумя портами, то порт A будет настроен как eth[x], а порт B как eth[x+1]. Оба порта можно использовать независимо с различающимися IP-адресами. Настройка выбора предпочтительного порта не используется. RLMT выключено.

Заметим, что RLMT-режимы CheckLocalPort и CheckLinkState предназначены для работы в условиях, где сетевой путь между портами существует на одном адаптере. Более того, они не работают, если адаптеры соединены друг с другом.

ФАЙЛЫ

/proc/net/sk98lin/eth[x]

Файлы статистики для определённого интерфейса адаптера. Содержит общую информацию о карте адаптера и подробную сводку по всем счётчикам передачи и приёма.
/usr/src/linux/Documentation/networking/sk98lin.txt

Это файл README от драйвера sk98lin. В нём содержится подробная инструкция по установке и описание всех параметров драйвера. Также отмечены общие проблемы и их решения.

ДЕФЕКТЫ

О дефектах сообщайте по адресу: [email protected]