Skip to content


r8169: после выхода из спящего режима не работает сеть

На ноутбуке Dell Vostro 5470 с Fedora 21 на борту наблюдалась очень неприятная проблема – после выхода из спящего режима переставала работать сеть через медный интерфейс. После перезагрузки опять работала. Но а поскольку это все же ноут, то очень хотелось проблему побороть, так как заряд батареи нужно экономить и без спящего режима ну никак не обойтись.

Сетевая карта там вот такая:

# lspci -vvv | sed -r '/Ethernet/,/module/ !d' | grep -E "Ethernet|module"
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
        Kernel modules: r8169

В процессе танцев с бубном в том числе запускался и tcpdump дла анализа проблемы. Ну и между делом случайно заметил, что если ноут уходит в спячку с запущенным tcpdump-ом, то после пробуждения вышеописанная проблема не возникает. Это навело на мысль, что, возможно, promiscuous режим работы сетевого интерфейса как-то помогает ему проснуться в добром здравии и в адекватном рабочем состоянии. Гипотеза подтвердилась после нескольких тестов.

Поскольку в Fedora 21 всем рулит systemd, то далее пришлось погуглить ответ на вопрос "Как выполнить мой скрипт при пробуждении". Ответ нашелся довольно быстро – вот так:

Создаем файл /usr/lib/systemd/system-sleep/local.sh, делаем ему chmod +x

#!/bin/bash
 
if [ "$1" = "post" ]; then
  /sbin/ifconfig enp7s0 promisc
  logger "Custom wakeup script fired ($0)"
fi
exit 0

Здесь enp7s0 – имя моего сетевого интерфейса. logger добавлен для диагностики, чтобы было понятно выполнялся скрипт при выходе из спящего режима или нет.

И шо вы думаете? Таки помогло! Теперь сетка нормально работает независимо от количества засыпаний ноута. Красота!

Posted in *nix, Howto.


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

You must be logged in to post a comment.