LINUX.ORG.RU

Где в linux прописан максимальный размер MTU

 ,


0

2

Возникла необходимость поднять user mode linux. Но, когда я пытаюсь прописать mtu на интерфейс больше чем 1500, то полячаю:

eth0: mtu greater than device maximum
Я нашёл, что за максимальный размер MTU интерфейса отвечает переменная ETH_MAX_PACKET в файле arch/um/include/shared/net_user.h. После этого mtu по умолчанию изменился. Но, когда я пытаюсь его изменить с помощью команд, то получаю эту же ошибку.
У меня вопрос, где прописано ограничение на изменение MTU в tap интерфейсе user mode linux?

★★★★★

Ответ на: комментарий от ne-vlezay

Это очепятка? Или рассказывай давай про ядра которые запускаются в юзерспейс.

По теме - может так обрабатывается код ошибки при попытке установить mtu которое драйвер устройства отвергает или сама железка?

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Это очепятка? Или рассказывай давай про ядра которые запускаются в юзерспейс.

И это 5 звёзд :facepalm:

anonymous
()

Если драйвер у своего net_device не меняет max_mtu, то по-умолчанию он равен ETH_DATA_LEN (include/linux/if_vlan.р).

mv ★★★★★
()
Ответ на: комментарий от anonymous

Специалистом во всем быть нереально. Особенно если не говёным. Бросьте этот юношеский максимализм товарищ аноним. Но потом. Не сейчас.

pon4ik ★★★★★
()
Ответ на: комментарий от anonymous

Необходимо уточнить, что ни в коем случае не следует рассматривать рейтинг как показатель некой личной крутизны. Это лишь показатель активности человека на форуме.

https://www.linux.org.ru/help/rules.md

SevikL ★★★★★
()
Последнее исправление: SevikL (всего исправлений: 1)
Ответ на: комментарий от ne-vlezay

тэкс, мне нестыдно признать - я сейчас немножечко прифигел от ядра в юзерспейсе и уже минут 15 пытаюсь найти ченить на тему и пока ничего дельного. ткните носом плиз?

genryRar ★★
()

Железо должно уметь.

targitaj ★★★★★
()

arch/um/os-Linux/drivers/tuntap_user.c (linux 5.1.15)

структура

const struct net_user_info tuntap_user_info = {
        .init           = tuntap_user_init,
        .open           = tuntap_open,
        .close          = tuntap_close,
        .remove         = NULL,
        .add_address    = tuntap_add_addr,
        .delete_address = tuntap_del_addr,
        .mtu            = ETH_MAX_PACKET,
        .max_packet     = ETH_MAX_PACKET + ETH_HEADER_OTHER,
};

возможно замена значения .max_packet поможет.

dhampire ★★★
()
Ответ на: комментарий от dhampire

Я так делал. При загрузке mtu становится таким, каким укажишь в переменной ETH_MAX_PACKET. Но, если mtu попытаться изменить через ip link set dev mtu <НАШ MTU> то, выдаёт вышеуказанную ошибку. Также, если установить mtu на интерфейс 1500 байт, то обратно его уже вернуть не получится.

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ne-vlezay

Возможно ядро в принципе не умеет в процессе работы увеличить MTU свыше ETH_MAX_PACKET ?

cvs-255 ★★★★★
()
Ответ на: комментарий от ne-vlezay

Сделай поиск по ядру и посмотри, где идет сравнение желаемого MTU с ETH_MAX_PACKET.

cvs-255 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.