Приветствую, русское сообщество :)<br><br>По работе стало необходимо получать/отправлять пакеты 1530 байт (соответственно, 1548 и больше байт ethernet кадры) на моем ноутбуке. Карточка следующая:<br><div style="margin-left:40px">
03:00.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)<br></div><br>В драйвере b44.c жестко прописаны макросы:<br><div style="margin-left:40px">#define B44_MAX_MTU               1500<br></div><div style="margin-left:40px">
#define RX_PKT_BUF_SZ           (1536 + RX_PKT_OFFSET)<br></div>и проверка в функции приема кадра:<br><div style="margin-left:40px">if ((len &gt; (RX_PKT_BUF_SZ - RX_PKT_OFFSET)) ...<br></div><div style="margin-left:80px">
drop_it:<br><br></div>Из этого вижу, что можно уставить максимум MTU 1500 и принять ethernet кадр до 1536 байт.<br><br>Вопрос второстепенный: может ли кто-то объяснить, почему по умолчанию выделяется 1536 байт? Понятно, что предусматриваются теги 802.1Q, MPLS метки и тп. Но подобный функционал зашит во множество сетевого оборудования и это критично для сети провайдера. Просто хочется понять...<br>
<br><br>Мною были выполнены следующие действия:<br><ul><li>B44_MAX_MTU увеличено до 1530</li><li>RX_PKT_BUF_SZ увеличено до (1548 + RX_PKT_OFFSET)</li></ul>После этого сетевуха работает нормально с пакетами 1530 байт по обычной ethernet сети. <br>
Теперь основной вопрос: есть ли какие-то подводные камни подобного решения (пока рассматриваю заголовок ethernet 18байт) и, если все работает, почему в ядре стоит жесткое ограничение на 1500 байт?<br><br>Буду рад услышать ответы/мнения/предположения.<br>
Спасибо.<br>