Приветствую,
Итак, исходные данные: 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 инфраструктуру. Но в моем ядре этого нет.
Собственно - правильный ли это подход и будет ли работать такая конструкция? Может быть есть более простое решение ?
Спасибо.