[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: AP-bus SONIC and bus_dma
<10107280121.AA01351@lachesis.sm.sony.co.jp>の記事において
shin@sm.sony.co.jpさんは書きました。
> > AP-bus の SONIC は newsmips/apbus/if_sn_ap.c からすると
> > AP-bus board 上の memory にしか DMA 転送できないように
> > 見えるんですが、実際どうなんでしょうか?
>
> そのとおりです。SONICはon-boardのSRAMとの間でしかDMAできません。
情報ありがとうございます。 MI sonic driver 使おうと思ったら
やっぱり bounce buffer の code を自前で用意しないといけないんですね。
#bus_dmamem_alloc() と bus_dmamap_sync() を用意すればいいのかな。
> APbusとのインタフェースや、SRAMのアクセスの調停などを司っているASICには、
> on-boardのSRAMとメインメモリとの間でDMAを行なう機能はあるのですが。
SRAM - main memory 間の DMA を真面目にやるなら bus_dmamap_sync()
でごそごそするんでしょうが、 10baseT の速度ではそこまでやらなくても
十分性能は出る気がします。
ところで Sonic のような受信バッファのアドレスが 32bit align で
ないといけない chip では、受信の際に etherheader の alignment
合わせのために mbuf を copy してるんですが、 bus_dma interface で
bounce buffer をさせようとすると都合 copy が 2回になってしまうのが
なんか気に入りません。この辺うまいこと処理する方法ってありませんかね。
> APbusはいわゆるバスマスタのDMAはサポートしています。tulipを使った
> Ethernet I/Fでは、PCI <-> APbusブリッジのASICがあり、これがPCI上のtulip
> のバストランザクションをAPbusのトランザクションに変換する機能があるわけ
> です。
そういえば APbus tulip には高そうな FPGA(?) が載ってましたねえ…
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp