Vascom пишет:А почему не используешь драйвер, идущий в ядре?
Ну и без логов сказать что-то конкретное нельзя.
С логами - отказать, потому что повторять попытку буду не скоро... Сервер в промышленной эксплуатации и времени на эксперименты с ним у меня весьма мало.
Почему не "ядерный" драйвер - так сложилось исторически. Сервер был проинсталлирован и, главное, настроен на одном железе (весьма древнем). Потом произведена модернизация железа, когда от компьютера остались только корпус и винчестер с настроенной осью. Тот драйвер, что стоял в оси (если не изменяет склероз - r8169) на гигабит скорости выходить не захотел. Мало того, что не захотел, так и вообще вскоре (опять же, после очередного обновления ядра) интерфейс перестал подниматься при пеерезагрузке.
Покурив интернет - вычитал, что это фича и лечится она установкой драйвера r8168 от Realtec'а. Поставил, вылечилось. После чего (сегодня) снова обновил ось. Приехало новое ядро с новыми хедерами и то, что компилировалось на старом ядре (kernel /vmlinuz-2.6.42.12-1.fc15.i686.PAE) компилироваться на новом (kernel /vmlinuz-2.6.43.2-6.fc15.i686.PAE) штатной процедурой отказалось.
Ошибки я сказал - не определен целый ряд объектов. Очень похоже на то, что нужный файл xxxx.h есть, директива #include <xxxxx.h> отрабатывает без ошибок, а вот в самом этом файле - пустота вместо определения этих объектов. Отсюда и ошибки. Скомпилировать драйвер невозможно. В результате - при наличии "старого", не перекомпилированного, драйвера в новом ядре сетевой интерфейс не поднимается как класс. На том сервере есть еще пара сетевых интерфейсов - они поднимаются правильно. А вот проблема - с интегрированным гигабитником. Не хочет он дружить с "ядерным" драйвером.
ps. Я бы откатился на "ядерный" драйвер (время найду), но не знаю как это сделать (точнее - как он называется? modprobe что?)
======================
В спойлере лог компиляции драйвера. Получен путем грубой замены штатных заголовков ядра на заголовки ядра нового:
# make modules
make -C src/ modules
make[1]: Вход в каталог `/usr/src/r8168-8.029.00/src'
make -C /lib/modules/2.6.42.12-1.fc15.i686.PAE/build SUBDIRS=/usr/src/r8168-8.029.00/src modules
make[2]: Вход в каталог `/usr/src/kernels/2.6.42.12-1.fc15.i686.PAE'
CC [M] /usr/src/r8168-8.029.00/src/r8168_n.o
/usr/src/r8168-8.029.00/src/r8168_n.c:2232:2: ошибка: неизвестное поле «get_rx_csum» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2232:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2232:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_ethtool_ops.nway_reset») [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2233:2: ошибка: неизвестное поле «set_rx_csum» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2233:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2233:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_ethtool_ops.get_link») [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2234:2: ошибка: неизвестное поле «get_tx_csum» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2234:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2234:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_ethtool_ops.get_eeprom_len») [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2235:2: ошибка: неизвестное поле «set_tx_csum» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2235:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2235:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_ethtool_ops.get_eeprom») [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2236:2: ошибка: неизвестное поле «get_sg» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2236:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2236:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_ethtool_ops.set_eeprom») [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2237:2: ошибка: неизвестное поле «set_sg» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2237:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2237:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_ethtool_ops.get_coalesce») [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:2239:2: ошибка: неизвестное поле «get_tso» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2239:14: ошибка: «ethtool_op_get_tso» undeclared here (not in a function)
/usr/src/r8168-8.029.00/src/r8168_n.c:2240:2: ошибка: неизвестное поле «set_tso» в инициализаторе
/usr/src/r8168-8.029.00/src/r8168_n.c:2240:14: ошибка: «ethtool_op_set_tso» undeclared here (not in a function)
/usr/src/r8168-8.029.00/src/r8168_n.c:12807:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:12807:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_netdev_ops.ndo_fix_features») [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:12808:2: предупреждение: несовместимый тип указателя в инициализации [по умолчанию включена]
/usr/src/r8168-8.029.00/src/r8168_n.c:12808:2: предупреждение: (где-то рядом с инициализацией для «rtl8168_netdev_ops.ndo_set_features») [по умолчанию включена]
make[3]: *** [/usr/src/r8168-8.029.00/src/r8168_n.o] Ошибка 1
make[2]: *** [_module_/usr/src/r8168-8.029.00/src] Ошибка 2
make[2]: Выход из каталога `/usr/src/kernels/2.6.42.12-1.fc15.i686.PAE'
make[1]: *** [modules] Ошибка 2
make[1]: Выход из каталога `/usr/src/r8168-8.029.00/src'
make: *** [modules] Ошибка 2
если вернуть старые заголовки на штатное место - компиляция проходит без ошибок.
Итак, вот где собака зарылась:
Версия предыдущая, рабочая:
2.6.42.12-1.fc15.i686.PAE]# grep -R get_rx_csum *
include/linux/ethtool.h: * @get_rx_csum: Deprecated in favour of the netdev feature %NETIF_F_RXCSUM.
include/linux/ethtool.h: u32 (*get_rx_csum)(struct net_device *);
include/linux/netdevice.h:static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
include/linux/netdevice.h: if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum)
include/linux/netdevice.h: return dev->ethtool_ops->get_rx_csum(dev);
System.map:c0871e20 t __ethtool_get_rx_csum_oldbug
2.6.42.12-1.fc15.i686.PAE]#
Версия последняя, подлая:
2.6.43.2-6.fc15.i686.PAE]# grep -R get_rx_csum *
[2.6.43.2-6.fc15.i686.PAE]#
И чо делать? Кому бить морды?