LINUX.ORG.RU

lan743x, loopback, ядро

 , , ,


0

1

доброй ночи, ЛОР!

а может кто знает, как из драйвера того же lan743x грамотно понять, что lan743x перевели в режим loopback?

имеется в виду, loopback у PHY, а не у MAC

хелп ми плиз! :)

P.S. т.е., можно делать
loopback = phy_read(phydev, MII_BMCR) & BIT(14);

но не полить же в треде, нужно что-нить типа колбека в net_device_ops, но не вижу...

★★★★★

Последнее исправление: metawishmaster (всего исправлений: 4)

Не совсем понятен вопрос.

Технически конечно можно прочитать регистр PHY, но:

  • loopback-и (обычно) включаются посредством ethtool, и/или кастомными IOCTL-ами. Поэтому лучше пользовать интерфейс include/linux/ethtool.h
  • В драйвере может не быть нужного функционала, т.е. вполне возможно что включить loopback нельзя без доработки драйвера (и узнать включен ли он).
  • Аналогично с remote loopback и auto remote loopback.
  • Не стоит читать регистр PHY вне драйвера. Не знаю как у lan743x, но очень часто к регистрам мультиплексированный доступ (под отдельным spinlock-ом). Поэтому грязное чтение снаружи может «раз в 100 лет» ломать работку NIC и/или вешать систему.
  • Если loopback как-то включается, то лучше «копать» от метода включения и непосредственно в это место добавить необходимое управление.

Тем не менее, никакого штатного хука на включение loopback примерно нет (я не видел).

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous


Да и писать ничего не надо вроде

https://elixir.bootlin.com/linux/v5.3.10/source/drivers/net/phy/phy_device.c#...



тут просто записыватся бит, а мне хочется callback на его изменение... нашел какую-то phy_connect_direct, пока пытаюсь ее завести (проверить)

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от Deleted

простите, забыл добавить


В драйвере может не быть нужного функционала, т.е. вполне возможно что включить loopback нельзя без доработки драйвера (и узнать включен ли он)


цель как раз и состоит, в доработке драйвера - нужно включать огонечки при loopback'е, чтобы оператор видел «линк-ап»

как я понял, там сам лупбек включается, но не загорается огонечек на карте.
// я карту вживую увижу только через неделю, но вот тут не видно никаких LED'ов о которых вещает документация на lan7431... ледов нет, но управлять ими можно %)

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от metawishmaster

цель как раз и состоит, в доработке драйвера - нужно включать огонечки при loopback’е, чтобы оператор видел «линк-ап»

как я понял, там сам лупбек включается, но не загорается огонечек на карте.

lan7431 - это просто чип (микросхема) со встроенным PHY. Соответственно светодиодов у неё точно нет, скорее всего нет никаких выводов связанных с индикацией loopback-ов, но наверное есть несколько «ног» связанных c GPIO.

Вот примерно эти ноги в конкретной модели NIC на lan7431 могут быть задействованы в индикации любым произвольным образом. Или может стоять отдельный LPC подключенный по последовательной шине и т.д.

Соответственно, тебе нужно найти в драйвере код, который подключается нижним уровнем к стандартному драйверу PHY (на который тебе указали). Если такого кода нет, то написать его.

В конечном счете, в функциях отвечающих для включение/выключений loopback (эти функции будет вызывать стандартный драйвер PHY) добавить управление светодиодами в соответствии с ТЗ.

Как-то так.

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

спасибо огроменное! :)

пойду дальше курить эту штуку, но боюсь, что еще пару раз в этой теме мне появиться придется...

metawishmaster ★★★★★
() автор топика
Последнее исправление: metawishmaster (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.