etherswitchにATUサポートを入れてみようかと思い立ちました。
自分が作ったドライバーコードでデーターシートが手に入っているInfinionのADM6996FCをターゲットにしてみます。
データーシートを見ると下記のようにありATUの処理が出来そうです。
ところが、データーシートにはその詳細がありません。
これを見てなにか思いませんか?
0x11aから0x12fが不自然に抜けています。
実はここにその機能が隠されています。
データーシートを読むためには透視能力が必要です。
というのは冗談でgithubを探したところ下記のコードが見つかり、処理が書いてあります。
MACテーブルはコンフィデンシャルになる部分があるので、データーシートから抜いたのかもしれませんね。
コンフィデンシャルな部分なので、defineとかせずに直値でコーディングされてます。
上のコードはInfinionが書いたコードでGPLではないので、FreeBSDでつかっても問題ないですが、mipsがHEADから消されたので、もうレビューは出しません。
etherswitchのATUサポートコード作りました。
削除の処理は参考にしたコードの処理をそのまま使っていますが、一覧を作る処理はちょっと違うようなので、etherswitchcfgコマンドのレジスタアクセス(reg)でいろいろ試してコマンドを探し出しました。
おそらく全削除やポート削除のコマンドが用意されているのではないかと思われますが分からないので、いったんリストを拾ってそれを元に処理するようにしました。