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++;