ATARI用 Ethernetアダプタ EtherNEC製作&ドライバ作成記
無理矢理 useword=0 にすると MAC address が狂う。それはいいとして invalid packet length の症状は変わらず。
2010-02-22 21:01:21そもそも ne2000_writemem() と ne2000_readmem() では useword 引数見てるのに ne2000_write_mbuf() では nsc->sc_type が NE2000 かどうか見てるってのも変な感じ。
2010-02-22 21:03:05うーん。ソースの表面だけ読んでないで API的にどの関数がどう呼ばれるのかちゃんと読まないとダメなのか。めんどい (´・ω・`)
2010-02-22 21:04:08invalid packet length ってのは dreamcast の NE2000 でもよく出てたけど、同じ原因だったりするのだろうか
2010-02-22 21:06:35実はISAのこともちゃんと調べてないのであてずっぽだけど、IOCS16Bを出さないカードに対するwordアクセスはハード側で勝手に8bit×2回のアクセスとして分割して処理されるのかしら。だったらそれなりに動くのも理解できなくもないけど。
2010-02-22 21:29:12ごそごそいじって bus_space_*_1() のバイトアクセスを使うようにしても invalid packet length の症状は変わらないっぽい。うーん。よくわからん。
2010-02-22 21:57:36ftp get のときの症状を見ると受信してはエラーを繰り返してる感じ。ってことはバッファメモリ量の値がおかしくてメモリのないところに受信してるときだけエラー、という仮説が成り立つ?
2010-02-22 22:03:50start=16384, size=8192 にしてみたら、 invalid packet length は出なくなったけど妙に遅い。別の部分もあわせて変えないとダメなのか?
2010-02-22 22:07:58トラ技2006年3月号か。最初のページに8bitアクセスで使えるうんぬん書いてあるから本文にはそういう使い方が載っている!? わざわざバックナンバー探さなくてもトラ技SPECIALで総集編が出てたりするか?
2010-02-22 22:24:04NE2000での8bit modeか16bit modeかの判別はEEPROM値(かどうかは知らないけどとにかく memory領域 offset 0x1c の値)を見たほうがいいような気がするな……
2010-02-23 00:35:07あと気になるのは !useword のときは ne2000_readmem() で Round up to a word をしなくてもいいんではないか? というくらいか。
2010-02-23 00:37:47したからおかしくなるものでもないという気もするけど、概ね動いてて確率的におかしくなるってのはそれくらいしか思いつかない。もっとも odd byte で呼ばれることがあるのかどうかすら見てないけど。
2010-02-23 00:39:12invalid packet length が発生するのはバッファメモリの0x3100以降がほとんどだから何かバグっているか設定の問題という気はするけど、たまに前の方でも起こる。むぅ
2010-02-23 02:18:02ネットワークまわりのドライバの場合ドライバがバグってても上位層がなんとかしてしまうからバグが直接見えにくくて困るパターン。ディスクまわりは逆に誰も修正してくれずいつのまにかfile system腐っててハマるパターンだけど。
2010-02-23 02:20:06RTL8019AS 8bit mode続き。Linuxのソース見てたら「RTL8019の8bitモードについてデータシートにこう書いてある」と書いてある罠 orz
2010-02-23 22:11:36要するに 8bit mode のときはメモリが半分しか使えない。16bit幅で 16KBのものを 8bit幅でも 16KB使うにはハード的にかなり面倒なことしないといけないと思うので、そもそもカニチップだけの制約とも思えないけど。
2010-02-23 22:14:30今のコードだとRTL8019の判定は各バスアタッチメントでやってるけど、周知の通りRTL8019はもはやISA用ではなく汎用チップと化しているので、RTL8019の判定はMIの ne2000_detect() に持っていって media関連も MI で設定すべき。
2010-02-23 22:20:02