diff packages/io/eth/current/src/net/eth_drv.c @ 195:67850532eebb

Merge from eCos master repository on 2001-11-02-06:43:03-GMT
author jlarmour
date Fri, 02 Nov 2001 16:12:33 +0000
parents 678094f34118
children 920b9b754b53
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
@@ -851,8 +851,15 @@ void eth_drv_tickle_devices( void )
     cyg_netdevtab_entry_t *t;
     for (t = &__NETDEVTAB__[0]; t != &__NETDEVTAB_END__; t++) {
         struct eth_drv_sc *sc = (struct eth_drv_sc *)t->device_instance;
-        if ( ETH_DRV_STATE_ACTIVE & sc->state )
-            (*sc->funs->can_send)(sc);
+        if ( ETH_DRV_STATE_ACTIVE & sc->state ) {
+            struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+            // Try to dequeue a packet for this interface, if we can.  This
+            // will call can_send() for active interfaces.  It is calls to
+            // this function from tx_done() which normally provide
+            // continuous transmissions; otherwise we do not get control.
+            // This call fixes that.
+            eth_drv_send(ifp);
+        }
     }
 }
 #endif // CYGPKG_NET_FAST_THREAD_TICKLE_DEVS