diff options
author | yongari <yongari@FreeBSD.org> | 2011-11-07 22:47:25 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2011-11-07 22:47:25 +0000 |
commit | 990f68fb09d7d342937ca6db09af0013d3cb4413 (patch) | |
tree | 2e49bd9ad1c3898be080c3f50e0e4e119e8057d7 | |
parent | e86f62e44784d3b1219a3896c7809e76d9e71528 (diff) | |
download | FreeBSD-src-990f68fb09d7d342937ca6db09af0013d3cb4413.zip FreeBSD-src-990f68fb09d7d342937ca6db09af0013d3cb4413.tar.gz |
Show RX buffer allocation failure and do not blindly send alive
message to firmware. Probably the correct way for this error is to
send a TI_CMD_CODE_STACK_DOWN message to firmware and let firmware
handle the rest.
-rw-r--r-- | sys/dev/ti/if_ti.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c index 0901f1a..5734d46 100644 --- a/sys/dev/ti/if_ti.c +++ b/sys/dev/ti/if_ti.c @@ -3160,18 +3160,34 @@ static void ti_init2(struct ti_softc *sc) } /* Init RX ring. */ - ti_init_rx_ring_std(sc); + if (ti_init_rx_ring_std(sc) != 0) { + /* XXX */ + device_printf(sc->ti_dev, "no memory for std Rx buffers.\n"); + return; + } /* Init jumbo RX ring. */ - if (ifp->if_mtu > (ETHERMTU + ETHER_HDR_LEN + ETHER_CRC_LEN)) - ti_init_rx_ring_jumbo(sc); + if (ifp->if_mtu > (ETHERMTU + ETHER_HDR_LEN + ETHER_CRC_LEN)) { + if (ti_init_rx_ring_jumbo(sc) != 0) { + /* XXX */ + device_printf(sc->ti_dev, + "no memory for jumbo Rx buffers.\n"); + return; + } + } /* * If this is a Tigon 2, we can also configure the * mini ring. */ - if (sc->ti_hwrev == TI_HWREV_TIGON_II) - ti_init_rx_ring_mini(sc); + if (sc->ti_hwrev == TI_HWREV_TIGON_II) { + if (ti_init_rx_ring_mini(sc) != 0) { + /* XXX */ + device_printf(sc->ti_dev, + "no memory for mini Rx buffers.\n"); + return; + } + } CSR_WRITE_4(sc, TI_GCR_RXRETURNCONS_IDX, 0); sc->ti_rx_saved_considx = 0; |