Как заставить работать 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

бегущая версия 3.4.6-1 ядра.

2 ответа

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

У меня есть устройство Shuttle с Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (версия 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 В командах я обнаружил регистры в устройстве 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 драйвер, если бы я знал, как построить драйвер ядра в моей системе...

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

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

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

options sky2 legacy_pme=1

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

sudo ethtool -s eth0 wol g

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

Другие вопросы по тегам