[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