外部世界への物理PHY接続を持つイーサネットポートでEthertype DSA VLANタグ付けを設定できますか?

外部世界への物理PHY接続を持つイーサネットポートでEthertype DSA VLANタグ付けを設定できますか?

私は、「パイプライン」イーサネットリンク(例:eth0)を介してポートベースのEthertype Marvel(DSA)フレームディスプレイプロトコルを使用してLinuxを実行しているプロセッサをイーサネットスイッチに接続し、Linuxカーネルにユーザースペースを提供する組み込みシステムを提供します。開発中です。スイッチの各ユーザーポート(lan1、lan2、lan3)ごとに別々のイーサネットリンクを提供します。

私が理解したのは、通常、プロセッサが物理ユーザポートを設定および制御できるように、プロセッサとスイッチ間のMDIOリンクと固定物理パイプ(xMIIなど)を介して行われます。

ハードウェアを受け取る前にソフトウェア開発をしたいので、MDIOリンクを「偽造」したり、一般(PHYを搭載したネットワーク)イーサネットポートでポートベースのEDSAフレームマーキングを使用するようにカーネルを設定したいと思います。その結果、フレームレイアウトは次のようになります。

         7   6   5   4   3   2   1   0  
       .   .   .   .   .   .   .   .   .
     0 +---+---+---+---+---+---+---+---+
       |   Ether Destination Address   |
    +6 +---+---+---+---+---+---+---+---+
       |     Ether Source Address      |
    +6 +---+---+---+---+---+---+---+---+  --
       |  Prog. DSA Ether Type [15:8]  |  |
    +1 +---+---+---+---+---+---+---+---+  |
       |  Prog. DSA Ether Type [7:0]   |  | EDSA tag
    +1 +---+---+---+---+---+---+---+---+  |
       |     Reserved (0x00 0x00)      |  |
    +2 +---+---+---+---+---+---+---+---+  |  --
       | Mode  |b29|   Switch Device   |  |  |
    +1 +---+---+---+---+---+---+---+---+  |  |
       |    Switch Port    |b18|b17|b16|  |  |
    +1 +---+---+---+---+---+---+---+---+  |  | DSA tag
       | PRI [2:0] |b12|  VID [11:8]   |  |  |
    +1 +---+---+---+---+---+---+---+---+  |  |
       |           VID [7:0]           |  |  |
    +1 +---+---+---+---+---+---+---+---+  -- --
       |       Ether Length/Type       |
    +2 +---+---+---+---+---+---+---+---+
       .   .   .   .   .   .   .   .   .

...Switch Portスイッチのユーザポート番号に対応します。

カーネルモジュールのドキュメントではこれが適切であると提案しており、dsa_loopソースdsa_loop_bdinfoコードは.netdev = "eth0"一部のユーザーポート("lan1".."lan4")にリンクされているようです。ただし、modprobe dsa_loopカーネルに入ることはできますが、次に作成された仮想ポートデバイスは表示されません。カーネル(ディスプレイネットワークデバイスに使用しているifconfig -a

    ~# lsmod
    Module                  Size  Used by
    dsa_loop               16384  0
    dsa_core              118784  1 dsa_loop

これによりmodprobe dsa_loop呼び出しが表示されますが、dsa_loop_init呼び出しは表示されませんdsa_loop_drv_probe

だからいくつかの質問があるようです。

  • dsa_loopモジュールがdsa_loop_init「一般」イーサネットリンクでEDSAマーキングを実行できるように設計されていますか?
  • このモジュールはどのように使用するように設計されていますか?
  • スイッチMDIOにアクセスせずにこれを行うようにLinuxを設定する他の方法はありますか?

関連情報