Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по технике.docx
Скачиваний:
5
Добавлен:
15.12.2018
Размер:
1.94 Mб
Скачать

Режим мониторинга

Регистр настроек приема (RCR) используется вместе с физическими и групповыми адресами для определения пакетов, которые должны быть приняты и помещены в буферную память. RCR определяет возможность принятия пакетов с физическими, групповыми и широковещательными адресами или переводит контроллер в “беспорядочный” режим для приема пакетов с любыми физическими адресами. Если установлен MON бит RCR регистра, контроллер переводится в режим мониторинга, то есть контроллер продолжает проверять адреса входящих пакетов на соответствие с приемными фильтрами, но пакеты не помещаются в буферную память, а только влияют на сетевую статистику.

Режим приема пакетов длиной менее 64 байт

Минимальная длина пакета в 802.3 сетях равна 64 байтам. Пакеты длиной менее 64 байт в нормальном режиме отбрасываются. Зачастую, в некоторых приложениях может быть полезно принимать подобные пакеты. Это возможно установкой AR бита RCR регистра в единицу.

Режим приема пакетов с ошибками

В целях диагностики может возникнуть необходимость принимать пакеты, при приеме которых возникли какие-либо ошибки. При установкее SEP бита RCR регистра в единицу, подобные пакеты сохраняются и перемещаются в память.

Буферная память

После приема пакеты помещаются в буферную память, и после обработки удаляются из нее. Буферная память представляет собой кольцевой буфер, который выделяется при начальной инициализации контроллера. После выделения NIC котроллер берет на себя все операции с буферной памятью и работает с ней через указатели, расположенные в нем самом.

Для перемещения данных меду буферной памятью и очередью (FIFO) используются специальные DMA каналы, которые могут работать со скоростью до 10 мегабайт в секунду.

Для перемещения данных между буферной памятью и системной памятью используются дополнительные внешние DMA каналы.

Используемая схема работы с буферной памятью эффективно работает как FIFO очередь для больших пакетов и хорошо подходит для большинства сетевых приложений в связи с тем, что пакеты обрабатываются в том же порядке, в котором были получены.

Для управления кольцевым буфером используются четыре указателя:

  • PSTART указатели на начальную страницу (page start, PSTART)

  • PSTOP указатели на конечную страницу (page stop, PSTOP) определяют размер кольцевого буфера;

  • CURR указатель на текущую страницу (current page, CURR) определяет адрес, с которого следующий пакет будет загружен;

  • BNRY и адрес границы (boundary pointer, BNRY) определяет адрес, с которого будут происходить следующая выгрузка пакета. После приема пакета, текущий указатель перемещается вперед к граничному указателю по кругу. Адреса начальной и конечной страницы в процессе работы с буферной памятью не изменяются.

Кольцевая буферная память состоит из набора 256-байтных областей, и эти области могут быть объединены вместе для приема пакетов, превышающих 256 байт. Может быть объединено одновременно до 256 подобных областей, т.е. размер максимальной области, которую можно выделить в буферной памяти, равен 64-ем килобайтам. Это ограничение объясняется тем, что все регистры контроллера имеет размер, равный 8 битам, и указатели, используемые при работе с буферной памятью, не могут адресовать свыше 256 областей.

При приеме, пакет помещается в кольцевой буфер начиная с текущего адреса (CURR) + смещение в четыре байта. Пакет последовательно помещается из очереди контроллера (FIFO) в кольцевой буфер через локальный DMA канал, в соответствии с накоплением в очереди контроллера определенного количества байт (threshold). При необходимости 256-байтные области объединяются вместе в процессе приема пакета. После окончания передачи, значение RCR регистра, указатель на следующий пакет, и длина принятого пакета в байтах записываются в зарезервированное ранее 4-байтное смещение.

Если при приеме пакета возникли ошибки (FAE, CRC), текущий указатель (CURR) не изменяется, то есть следующий пакет перезаписывает предыдущий плохой пакет. Эта особенность может быть отключена установкой SEP бита RCR регистра для получения возможности изучения ошибочных пакетов.

Если кольцевой буфер полностью заполнен и при операции по локальному DMA каналу достигается адрес границы (boundary pointer), контроллер прерывает прием пакета. Таким образом, предыдущие принятые и все еще находящиеся в буферной памяти пакеты не повреждаются. При переполнении буферной памяти устанавливается OVW бит регистра состояния прерывания. Для корректной обработки переполнения

3

4