LINUX.ORG.RU
ФорумAdmin

Не хочет работать jumbo-frame на r8192

 ,


1

2

Всем привет!

Решил попробовать поиграться с Jumbo-frame. Но не тут то было.
Имею 2 машинки с Lunux Ubuntu 16.04 и сетевухи PCIx

02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
        Subsystem: TP-LINK Technologies Co., Ltd. TG-3468 Gigabit PCI Express Network Adapter [7470:3468]
        Kernel driver in use: r8168
        Kernel modules: r8168

06:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 01)
        Subsystem: Gigabyte Technology Co., Ltd Onboard Ethernet [1458:e000]
        Kernel driver in use: r8168
        Kernel modules: r8168

Если верить драйверу, то должны уметь до 4к пакет (из-за того, что одна из них rev 01).

cat /proc/net/r8168/eth0/driver_var | grep chipset_name
chipset_name    RTL8168E/8111E

cat /proc/net/r8168/eth0/driver_var | grep chipset_name
chipset_name    RTL8168B/8111B


Вырезка из драйвера:
rtl_chip_info[] = {
        _R("RTL8168B/8111B",
        CFG_METHOD_1,
        (Reserved2_data << Reserved2_shift) | (RX_DMA_BURST << RxCfgDMAShift),
        0xff7e1880,
        Jumbo_Frame_4k),
        _R("RTL8168E/8111E",
        CFG_METHOD_14,
        RxCfg_128_int_en | (RX_DMA_BURST << RxCfgDMAShift),
        0xff7e1880,
        Jumbo_Frame_9k)
}

Но вот незадача. Результат выполнения
ifconfig eth0 mtu 4096 (любое 1500>mtu<=4096)
SIOCSIFMTU: Недопустимый аргумент
eth0: Invalid MTU 4096 requested, hw max 1500

Как так то? Что я делаю не так?
Драйвер брал и из ядра и собирал с сайта realtek.

Ну, он же вам прямо пишет «eth0: Invalid MTU 4096 requested, hw max 1500» — Не поддерживает ваше железо больше 1500.

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

zuzzas
хм! А так работает! Спасибо. А что это было? :)

viewizard
Дык обязана. По даташиту на чип - обязана. По драйверу тоже вроде как обязана.

Spider55
() автор топика
Ответ на: комментарий от Spider55

Отлично!

Ну, чтобы истинную причину узнать, нужно понять, как сетевая часть ядра и конкретный драйвер общаются с собой, однако, в общем, программы из пакета iproute2 взаимодействуют с ядром совершенно по-другому. ifconfig использует системный вызов ioctl, а ip link, например, использует сокет NETLINK.

Весь новый сетевой функционал ядра управляется через NETLINK, например, network namespaces, поэтому крайне рекомендую забыть про ifconfig навсегда.

К большому сожалению, NETLINK не очень хорошо задокументирован, как и многие API ядра, поэтому для написания своей программы, возможно, придётся смотреть на имплементацию других.

zuzzas
()
Ответ на: комментарий от Spider55

А что это было? :)

ifconfig deprecate уже лет 10 как.
То, что его до сих пор везде таскают не причина им пользоваться.

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