реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> драйвер ethernet switch'a
romez777
сообщение Jun 24 2010, 09:49
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую,

Итак, исходные данные: SoC bcm5358, внутри CPU и 5-портовый ethernet switch, соедиенный с процессором по внутреннему MII порту; встроенный linux, ядро 2.6.22

В данный момент драйвер свитча от производителя реализован так, что со стороны ОС виден один интерфейс eth0 (как раз тот, через который соединяется с внутренним 5-портовым свитчом), что вполне логично. Драйвер также поддерживает vlan и разделяет порты по группам на основании параметров, передаваемых ему.

К SoC будет подключен внешний 24-портовый чип, задействуя 2 порта внутреннего свитча. Эти два внутренних порта предполагается использовать как WAN и LAN интерфейсы соответственно, внутренний MII так и останется, остальные порты исользованы не будут.

IMHO самый простой вариант это модифицировать драйвер внутреннего свитча так, чтобы каждый порт представлялся как отдельный интерфейс (eth0 для физического порта 0, eth0 для 1 и т.д.), что позволит назначать ip адреса и пр. В последних ядрах есть такая фича как DSA (distributede switch architecture) от Marvell и там как раз каждый порт представлен своей struct net_device и сделан маппинг на физический phy через phy_bus инфраструктуру. Но в моем ядре этого нет.

Собственно - правильный ли это подход и будет ли работать такая конструкция? Может быть есть более простое решение ?

Спасибо.
Go to the top of the page
 
+Quote Post
Idle
сообщение Jun 24 2010, 14:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(romez777 @ Jun 24 2010, 13:49) *
В последних ядрах есть такая фича как DSA (distributede switch architecture) от Marvell и там как раз каждый порт представлен своей struct net_device и сделан маппинг на физический phy через phy_bus инфраструктуру. Но в моем ядре этого нет.

вот это я не понял, представьте каждый порт как net_device, чего нет в ядре?

а вообще какие могут быть ещё варианты, если нужны два порта для разных подсетей и маршрутизация между ними?
Go to the top of the page
 
+Quote Post
Idle
сообщение Jun 26 2010, 18:00
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



ну или оставить один интерфейс и сделать две vlan, а уж как вы будете поступать дальше с тегированными пакетами смотрите сами

Сообщение отредактировал Idle - Jun 26 2010, 18:00
Go to the top of the page
 
+Quote Post
romez777
сообщение Jul 31 2010, 03:37
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



[Думаю, лучше спросить в этой же ветке, чтобы не плодить сущности smile.gif ]


На девайсе к процессору подключен 24-портовый свитч, управление свитчом сделано через gpio посредством шины аналогичной MDC/MDIO (эта шина предоставляется свитчом; написан драйвер, который предоставляет функции чтения/записи ноги через ioctl).

Нужно отслеживать в snmp-агенте статус портов (up/down).

Мне видятся два варианта:

(1) читать из агента, например каждую секунду, портовые регистры свитча и получать оттуда текущий статус линка. Это IMHO будет очень накладно из-за постоянного преключения контекста (ioctl->драйвер->...)

(2) Свитч поддерживает специально выделенную ногу для сообщения прерываний процу об определенных событиях (маска задается регистром свитча), в том числе и статус линка. Завести эту ногу на gpio процессора, написать драйвер чтения ноги и какой-нибудь интерфейс в юзер-спейс (например /proc/switch/link) - т.е. линк сменился, получили прерывание, в агенте получили статус через I/O, далее все-равно нужно читать регистр, чтобы узнать какой порт сменил статус. Небольшое преимущество - читаем только /proc.

Что можете сказать по этим двум вариантам, может быть я что-то упускаю?
Спасибо!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016