tarosukeの日記: [talos]ネットワーク
日記 by
tarosuke
8139でダメなところは受信で「何のためにバスマスタ転送してるかわからない」事の他に、4バイト境界からしか送信できず、受信パケットも4バイト境界だって所だ。これの何がダメかってぇと、ethernetのMACアドレスが送信と受信で12bytes。プロトコル番号が2bytesなのでIPヘッダが4bytes境界で始まってくれない。これはどこからでもどこへでも読み書きできるx86では問題にならないが68系やRISCではこれが実に嫌な問題になる。
IPアドレスはIPヘッダの中で4bytes境界になっているのでパケットの先頭が4bytes境界だとIPアドレスが4bytes境界にならない。そして68系やRISCは4bytesを読み書きするときに4bytesアラインを要求することが多い。つまりそのようなプロセッサだとアドレスを一度に読み書きできないのだ。NetBSD(1.6)だと送信時にはわざわざ領域を確保してコピーしてたりする。
[talos]ネットワーク More ログイン