Gianfar Linux Kernel Driver Максимальный размер приема / передачи

Я пытался понять код для драйвера gianfar linux ethernet, и мне было трудно разобраться с фрагментированными страницами. Я понимаю, что максимальный размер передачи составляет 9600 байт, но включает ли это фрагменты?

Можно ли отправлять и получать передачи большего размера (например, 14000 байт), если они разделены между несколькими фракциями?

заранее спасибо

1 ответ

Решение

9600 максимальный размер большого кадра Максимальный размер MTU ("jumbo MTU") составляет 9600 - 14 = 9586 байт. Кроме того, если я правильно помню, MTU никогда не включает 4-байтовую FCS.

Так, 9586 должен быть просто максимальный размер Ethernet "полезной нагрузки", который может быть подключен к сети. Это ограничение в отношении одного кадра Ethernet. Таким образом, если у вас большой кусок данных ("передача"), вы можете "разрезать" его и создать из него несколько кадров Ethernet (точнее, несколько независимых). skb-с), каждый соответствует размеру MTU. Таким образом, в этом случае у вас будет несколько независимых кадров Ethernet, которые будут переданы сетевому драйверу. Взаимосвязь между этими кадрами будет обнаруживаться только на уровне заголовка IP, т. Е. Если вы посмотрите на заголовок IP 1-го кадра, вы сможете увидеть флаг "больше фрагментов", указывающий, что следующий кадр содержит IP-пакет, который является следующий фрагмент исходного (большого) куска данных. Но с точки зрения водителя такие кадры должны оставаться независимыми.

Однако, если вы имеете в видуskb фрагменты ", а не"IP-фрагменты ", а затем помещают 14000-байтовый кадр в несколько фрагментов (" фрагментов данных ") одного skb может не быть полезным в отношении MTU (скажем, вы настроили jumbo MTU на интерфейсе). Потому что эти фрагменты являются просто меньшими порциями непрерывной памяти, содержащей разные части одного и того же кадра Ethernet. А драйвер просто создает несколько дескрипторов, указывающих на эти куски памяти. Аппаратные средства подберут их для отправки одного кадра. И если HW видит, что общая длина кадра больше, чем максимальный MTU, он может отклонить передачу. Точное поведение в этом случае - тема для отдельного разговора.

Другие вопросы по тегам