SIS_CFG_EDB_MASTER_EN indicates the EDB bus is used instead of

the PCI bus. When this bit is set, the Max DMA Burst Size
for TX/RX DMA should be no larger than 64 bytes.

Reviewed by:	luoqi
Obtained from:	(idea from linux driver source)
MFC after:	2 weeks
This commit is contained in:
Martin Blapp 2003-01-10 08:12:20 +00:00
parent e808cf6260
commit 91f8432fab
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=109059
2 changed files with 14 additions and 3 deletions

View file

@ -1806,8 +1806,16 @@ sis_init(xsc)
CSR_WRITE_4(sc, SIS_RX_LISTPTR, sc->sis_cdata.sis_rx_paddr);
CSR_WRITE_4(sc, SIS_TX_LISTPTR, sc->sis_cdata.sis_tx_paddr);
/* Set RX configuration */
CSR_WRITE_4(sc, SIS_RX_CFG, SIS_RXCFG);
/* SIS_CFG_EDB_MASTER_EN indicates the EDB bus is used instead of
* the PCI bus. When this bit is set, the Max DMA Burst Size
* for TX/RX DMA should be no larger than 16 double words.
*/
if (CSR_READ_4(sc, SIS_CFG) & SIS_CFG_EDB_MASTER_EN) {
CSR_WRITE_4(sc, SIS_RX_CFG, SIS_RXCFG64);
} else {
CSR_WRITE_4(sc, SIS_RX_CFG, SIS_RXCFG256);
}
/* Accept Long Packets for VLAN support */
SIS_SETBIT(sc, SIS_RX_CFG, SIS_RXCFG_RX_JABBER);

View file

@ -114,6 +114,7 @@
#define SIS_CFG_OUTOFWIN_TIMER 0x00000020
#define SIS_CFG_SINGLE_BACKOFF 0x00000040
#define SIS_CFG_PCIREQ_ALG 0x00000080
#define SIS_CFG_EDB_MASTER_EN 0x00002000
#define SIS_EECTL_DIN 0x00000001
#define SIS_EECTL_DOUT 0x00000002
@ -247,8 +248,10 @@
#define SIS_RXDMA_128BYTES 0x00600000
#define SIS_RXDMA_256BYTES 0x00700000
#define SIS_RXCFG \
#define SIS_RXCFG256 \
(SIS_RXCFG_DRAIN(64)|SIS_RXDMA_256BYTES)
#define SIS_RXCFG64 \
(SIS_RXCFG_DRAIN(64)|SIS_RXDMA_64BYTES)
#define SIS_RXFILTCTL_ADDR 0x000F0000
#define NS_RXFILTCTL_MCHASH 0x00200000