[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 100BASE-TX NIC for macppc



筒井です。

<199903190942.SAA17730@mirage.ceres.dti.ne.jp>の記事において
私は書きました。

> vr と ex は今のままではどっちもダメで、
> 直さなきゃいけないところの見当はつけたものの
> どうやって書くのがいいのか考えてるとこで止まってます。

とりあえず書いてみました。

http://www.ceres.dti.ne.jp/~tsutsui/netbsd/ex-vr-big-endian.diff

host が PCI device へ読み書きする時は PCI-HOST bridge が
byte swap してくれるので(目的のデータと同じ size でアクセスする限り)
問題は起こりません。

が、 host が u_int32_t のパラメータをメモリ上に用意して
それを DMA 経由で渡す、なんてことをしていると、
PCI device は host を little endian と仮定していて
byte swap なんてしてくれないので、そういう場合は
メモリ上のデータを little endian で用意してやらないといけない、
ということのようです。

ex のほうは書いてコンパイルしただけでまだテストしてません。
vr は一応動いているのですが、大きい packet を送信しようと
するとなぜか
vr0: transmit aborted
と怒られてしまいます。とりあえず mtu を 800 くらいに
するとなんとか使えます。いろいろ試しているんですが
endian の問題なのかよくわかりません。
i386 では起こったりしませんか? >坂本さん
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp