Как заставить WakeOnLAN работать, когда мой сетевой контроллер использует модуль sky2?

У меня есть материнская плата Aopen i945GMM-HL. Он по-прежнему работает нормально, и BIOS настроен на то, чтобы WakeOnLAN мог включить питание устройства, но поскольку последнее обновление ОС этих волшебных пакетов просто больше не работает.

Вот вывод lspci -v для сетевого адаптера:

03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22) Subsystem: AOPEN Inc. Device 0607 Flags: bus master, fast devsel, latency 0, IRQ 43 Memory at fdefc000 (64-bit, non-prefetchable) [size=16K] I/O ports at ce00 [size=256] [virtual] Expansion ROM at fdd00000 [disabled] [size=128K] Capabilities: [48] Power Management version 2 Capabilities: [50] Vital Product Data Capabilities: [5c] MSI: Enable+ Count=1/2 Maskable- 64bit+ Capabilities: [e0] Express Legacy Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Kernel driver in use: sky2 

работает ver. 3.4.6-1 ядра.

Ниже приведена информация от ОП, поскольку он не может ответить на свой вопрос еще на 7 часов.

Решение этой проблемы было довольно простым. Видимо, когда ядро, которое я использовал, было сделано, параметры управления питанием никогда не читались из BIOS. Все это изменилось, но некоторые BIOS сообщают о своих данных некорректно, что приводит к поломке некоторых функций управления питанием для некоторых пользователей. Обходные пути были отправлены в список рассылки Linux Kernel в виде патчей, но было решено добавить вариант модуля.

Так. Если вам нелегко заставить wakeonlan работать с вашей системой, несмотря на то, что говорит ethtool и ваши настройки BIOS, попробуйте поместить это в .conf-файл (например, sky2.conf) в /etc/modprobe.d/

 options sky2 legacy_pme=1 

FYI, если вы разгрузите модуль sky2, чтобы попробовать его с помощью параметра legacy_pme самостоятельно, обязательно установите wakeonlan обратно с помощью

 sudo ethtool -s eth0 wol g 

перед включением системы

Я хотел поделиться некоторой информацией – это может помочь с вашей проблемой wakeonlan (WOL) с устройством Marvell.

У меня есть устройство Shuttle с Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 12). Я запускал Ubuntu 10.04 LTS и XBMC, с драйвером Sky2 v1.25. WOL работает очень хорошо в этой настройке.

Недавно мне пришлось обновить до 12,04 LTS в рамках другой истории, и я столкнулся с проблемой WOL, которая больше не работает с Sky2 v1.30

Драйвер Sky2 выходит из строя из-за обработки параметров Y2_HW_WOL_ON и Y2_HW_WOL_OFF и регистр записывает во время функции sky2_wol_init .

Я отнюдь не разработчик Linux, но используя комбинацию команд lspci и setpci , я setpci регистры в устройстве Marvell, которые были установлены драйвером v1.25 и драйвером v1.30, и теперь устанавливают регистр вручную с setpci при запуске драйвера v1.30. Wakeonlan снова работает с 12.04 LTS и v1.30 без перекомпиляции!

Регистр (в моей системе) имеет значение 0x41 и ему нужно установить значение 0x80 . Мой чип Marvell находится на шине PCI в 02:00.0 , найденный с использованием lspci .

Я добавил эту команду в тот же сценарий запуска, который использовался для запуска последовательности ethtool:

 setpci -s 02:00 41.b=80 

Итак, неприятный взлом, но отлично работает. Я бы sky2.c драйвер sky2.c если бы знал, как построить драйвер ядра в моей системе …