LINUX.ORG.RU

как правильно работать с phy в драйвере ethernet ?

 ,


0

2

Есть pcie устройство пишу для него сетевой драйвер. В устройстве есть Mac к нему подрублен phy.

Я создаю

struct mii_bus mdio = mdiobus_alloc();
устанавливаю функции для чтения и записи для доступа к регистрам phy. далее регистрирую mdio в системе mdiobus_register(); Далее с помощью функции struct phy_device phydev = phy_find_first(mdio) получаем структуру phy_device

далее вызываем phy_connect где указываем функцию для call back link_func

Так вот система постоянно вызывает link_func Так и должно быть ? почему бы её не вызывать по прерыванию от phy ? Есть где инфа ? (LDD такого не знает)

почему бы её не вызывать по прерыванию от phy ?

наверно потому что нет стандартного метода получить номер этого прерывания.

anonymous ()
Ответ на: комментарий от anonymous

Ерунду спорол - посмотри доки и примеры

https://www.kernel.org/doc/Documentation/networking/phy.txt

Similarly, if you don't want to use interrupts, set phydev->irq to PHY_POLL.

и в структуре phy_driver установлен флаг что PHY может генерировать прерывания ?

.flags = PHY_HAS_INTERRUPT,

anonymous ()