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

SCSI-Ethernet driver does not work on mac68k



野口と申します.

ずいぶん前ですが,SCSI-Ethernetドライバを作っているとのことで
ポストしたことがあります.
そのドライバが,一番主なターゲットとしているmac68k portで
思うように動いてくれず,行き詰まっています.
添付のファイルがそのソースコードです.(sys/dev/scsipi/if_sse.c)


sse_recv()で受信したパケットを読み出すコマンドを発行し,
sse_read()で読み出したデータをEthernetフレームに小分けして
カーネルへ渡すのですが,そのsse_recv()で受け取る最初の3バイト
ほどがまったくデタラメな値になってしまう現象が起きています.

その3バイトには,4バイト目以降に続くEthernetフレームの
バイト数が入っているので,1回のsse_recv()で複数のパケットが
読み出される場合に2つ目以降のフレームの位置が分からないため
捨てざるを得ない状況です.

ソースコードのロジックが合っているかを確認するために,
hpcmips(NEC MC-R300)にAdaptec APA-1460でつなげて動かして
みたところ,SCSI I/Oでタイムアウトが出ることもありますが,
10MバイトぐらいのFTP受信でも通りました.
また,mac68kでも,強引に1バイト目だけは通すように細工すると
pingぐらいは通りました.
それと,以前に会社のSCSIバスアナライザでmac68kで動かしたときの
データフローを見た限りでは,ドライバでは化けている最初の3バイト
も想定している値が流れていました.


以上のような状況です.
何とかmac68kでも使えるように持っていきたいのですが,悪いところ
を切り分けるには何をしたらよいものでしょうか?

アドバイス頂ければ幸いです.


--------------------------------
Hiroshi Noguchi (野口  宏)
E-mail: ngc@ff.iij4u.or.jp
http://homepage1.nifty.com/driver/

if_sse.c