Index: zaptel.c =================================================================== --- zaptel.c (revision 875) +++ zaptel.c (working copy) @@ -1301,6 +1301,8 @@ fasthdlc_init(&ms->txhdlc); ms->infcs = PPP_INITFCS; + netif_start_queue(ztchan_to_dev(ms)); + #ifndef LINUX26 MOD_INC_USE_COUNT; #endif @@ -1313,9 +1315,14 @@ #ifdef NEW_HDLC_INTERFACE static int zt_net_stop(struct net_device *dev) { - hdlc_device *h = dev_to_hdlc(dev); - struct zt_hdlc *hdlc = h->priv; +#ifdef LINUX26 + hdlc_device *h = dev_to_hdlc(dev); + struct zt_hdlc *hdlc = h->priv; #else + hdlc_device *hdlc = dev_to_hdlc(dev); +#endif + +#else static void zt_net_close(hdlc_device *hdlc) { #endif @@ -1339,6 +1346,7 @@ #endif } /* Not much to do here. Just deallocate the buffers */ + netif_stop_queue(ztchan_to_dev(ms)); zt_reallocbufs(ms, 0, 0); #ifdef LINUX26 hdlc_close(dev); @@ -1455,7 +1463,9 @@ if (ss->inwritebuf == ss->outwritebuf) { /* Whoops, no more space. */ - ss->inwritebuf = -1; + ss->inwritebuf = -1; + + netif_stop_queue(ztchan_to_dev(ss)); } if (ss->outwritebuf < 0) { /* Let the interrupt handler know there's