Mercurial > ecos
diff packages/io/eth/current/src/net/eth_drv.c @ 130:eb9fd8c04db3 ecos-sw-2000-10-23
Merge from eCos master repository on 2000-10-23-17:01:37-BST
| author | jlarmour |
|---|---|
| date | Mon, 23 Oct 2000 17:10:57 +0000 |
| parents | 0c2b7be0d798 |
| children | 2e9a636d9de9 |
line wrap: on
line diff
--- a/packages/io/eth/current/src/net/eth_drv.c +++ b/packages/io/eth/current/src/net/eth_drv.c @@ -605,7 +605,9 @@ eth_drv_recv(struct eth_drv_sc *sc, int /* Pull packet off interface. */ MGETHDR(m, M_DONTWAIT, MT_DATA); if (m == 0) { +#ifdef CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS diag_printf("warning: eth_recv out of MBUFs\n"); +#endif } // Set up buffers @@ -636,7 +638,13 @@ eth_drv_recv(struct eth_drv_sc *sc, int MGET(m, M_DONTWAIT, MT_DATA); if (m == 0) { m_freem(top); - panic("out of MBUFs [2]"); +#ifdef CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS + diag_printf("out of MBUFs [2]"); +#endif + sg_list[sg_len].buf = (CYG_ADDRESS)0; + sg_list[sg_len].len = 0; + sg_len = 1; + break; } mlen = MLEN; } @@ -644,7 +652,9 @@ eth_drv_recv(struct eth_drv_sc *sc, int MCLGET(m, M_DONTWAIT); if ((m->m_flags & M_EXT) == 0) { m_freem(top); +#ifdef CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS diag_printf("warning: eth_recv out of MBUFs\n"); +#endif sg_list[sg_len].buf = (CYG_ADDRESS)0; sg_list[sg_len].len = min(total_len, MCLBYTES); sg_len++;
