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, он может отклонить передачу. Точное поведение в этом случае - тема для отдельного разговора.