[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: fxp at pci on arm32 and bus_dmamap_sync()
In message <200007241221.e6OCLpr10269@mirage.ceres.dti.ne.jp>
on Mon, 24 Jul 2000 21:21:51 +0900 (JST),
Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> wrote:
> あるいは FXP_INIT_RFABUF() で FXP_RFA_CONTROL_S の suspend bit
> もたてて最後のバッファまで使ってしまったら自動的に suspend する
> ようにすればよい?
これもやってみました。何となく、NetBSDに関しては、
o ABORT発行
o suspend
o とある方から貰った「本質的な修正ではないけど、pciを読むことを避けて
性能を向上させる修正」
のいずれかを当てると、殆んど発生しなくなります。(発生させることができ
ませんでした。) ここまでで、会社の引っ越しのためターゲット・マシンは
明日しまいこみます。:-(
--
神戸 隆博(かんべ たかひろ) at home
Index: i82557.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/ic/i82557.c,v
retrieving revision 1.36
diff -u -u -r1.36 i82557.c
--- i82557.c 2000/06/29 16:53:48 1.36
+++ i82557.c 2000/07/19 09:56:09
@@ -895,6 +895,8 @@
}
while ((statack = CSR_READ_1(sc, FXP_CSR_SCB_STATACK)) != 0) {
+ int rnr = 0;
+
claimed = 1;
/*
@@ -927,6 +929,9 @@
goto do_transmit;
}
+ if (rxstat & FXP_RFA_STATUS_RNR)
+ rnr = 1;
+
IF_DEQUEUE(&sc->sc_rxq, m);
FXP_RXBUFSYNC(sc, m, BUS_DMASYNC_POSTREAD);
@@ -997,7 +1002,7 @@
}
do_transmit:
- if (statack & FXP_SCB_STATACK_RNR) {
+ if (rnr) {
rxmap = M_GETCTX(sc->sc_rxq.ifq_head, bus_dmamap_t);
fxp_scb_wait(sc);
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL,