BCM5719 cannot handle DMA requests for DMA segments that have
larger than 4KB in size. However the maximum DMA segment size created in DMA tag is 4KB, so we wouldn't encounter the issue here. Just record this issue such that let developers not to create a DMA segment that is larger than 4KB for BCM5719. It's possible to split a DMA segment into multiple smaller ones in run time but I believe it's not worth to implement that.
This commit is contained in:
parent
d9820cd85e
commit
a7fcfcf3ba
@ -2927,6 +2927,15 @@ bge_attach(device_t dev)
|
||||
if (BGE_IS_5755_PLUS(sc) || sc->bge_asicrev == BGE_ASICREV_BCM5906)
|
||||
sc->bge_flags |= BGE_FLAG_SHORT_DMA_BUG;
|
||||
|
||||
/*
|
||||
* BCM5719 cannot handle DMA requests for DMA segments that
|
||||
* have larger than 4KB in size. However the maximum DMA
|
||||
* segment size created in DMA tag is 4KB for TSO, so we
|
||||
* wouldn't encounter the issue here.
|
||||
*/
|
||||
if (sc->bge_asicrev == BGE_ASICREV_BCM5719)
|
||||
sc->bge_flags |= BGE_FLAG_4K_RDMA_BUG;
|
||||
|
||||
misccfg = CSR_READ_4(sc, BGE_MISC_CFG) & BGE_MISCCFG_BOARD_ID;
|
||||
if (sc->bge_asicrev == BGE_ASICREV_BCM5705) {
|
||||
if (misccfg == BGE_MISCCFG_BOARD_ID_5788 ||
|
||||
|
@ -2797,6 +2797,7 @@ struct bge_softc {
|
||||
#define BGE_FLAG_4G_BNDRY_BUG 0x02000000
|
||||
#define BGE_FLAG_RX_ALIGNBUG 0x04000000
|
||||
#define BGE_FLAG_SHORT_DMA_BUG 0x08000000
|
||||
#define BGE_FLAG_4K_RDMA_BUG 0x10000000
|
||||
uint32_t bge_phy_flags;
|
||||
#define BGE_PHY_NO_WIRESPEED 0x00000001
|
||||
#define BGE_PHY_ADC_BUG 0x00000002
|
||||
|
Loading…
x
Reference in New Issue
Block a user