Впилите в функцию поднятия интерфейса (не спрашивайте где, ищите в ядре) аппаратный сброс чипа физики, причем не просто дернуть сигналом на микросекунду, а в соответствии с докой на чип (там интервалы большие - сброс и инит чипа).
Тогда программное down-up должно выводить интерфейс из любого каматоза.
Ради эксперимента, попробуйте изменить способ тактирования чипа физики с процессорного на собственный генератор: поставьте кварц ZQ2 25МГц, С18,21 ~20пФ, убрать R15 (через него идет тактовая с процессора).
Сомневаюсь что ошибка связана с физическим уровнем - тут опустошение буфера фифо при передаче судя по всему - признак недостаточной пропускной способности памяти или шины. У себя я ни разу этой ошибки не встречал и никто так и не написал в каких условиях получить такую ошибку (подозреваю что используется большое разрешение на LCD/HDMI) так что смысла о чем то рассуждать тем более что-то решать не вижу.
Из чего следует, что человека достает не столько глюк с "eth TX underrun", который по моим наблюдениям к проблемам не приводит (кроме редких сообщений в консоли), сколько странное поведение Ethernet интерфейса, симптоматика которого больше походит на подвисание PHY чипа ...
а по моим наблюдениям человек пишет о проблеме в треде с названием "eth TX underrun" :)
Насчет сброса - надо просто посмотреть в исходниках когда он выполняется - если только при инициализации (в init или probe), то перенести в ф-цию net_device_ops open чтобы при поднятии интерфейса сбрасывал каждый раз. Но это тоже скользкая тема
1 - надо смотреть схему - может получиться что адрес PHY будет случайным образом изменяться, похорошему он должен задавться подтяжками
2 - если выполняется инит вендорских регистров - надо это тоже предусмаривать
кстати насчет этого
это я тоже встречал - достаточно помоему просто пингануть кого-нибуть со стороны платы (через консоль на уарте) и интерфейс "оживает", возможно поможет отключение в ядре всех опций управления питанием (возможно клок на PHY просто гасит ядро при переходе в режим ожидания)
LAN8720 имеет только один пин для указания адреса PHY - на пине RXER и в этом случае (когда пины адреса на интерфейсных сигналах сидят) нужна не подтяжка а выставление значения на этом пине перед сбросом, подтяжка конечно может помочь, но явное указание надежнее.
На SK-9G45-OEM нет ни подтяжки, ни аппаратного сброса в штатном BSP. На интерфейсных линиях еще конфигурационные MODE0-2 имеются, но они особого значения при автонеогоциации уже не имеют, их можно не настраивать.