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