patch-2.4.21 linux-2.4.21/drivers/net/pcmcia/xirc2ps_cs.c

Next file: linux-2.4.21/drivers/net/pcmcia/xircom_cb.c
Previous file: linux-2.4.21/drivers/net/pcmcia/wavelan_cs.c
Back to the patch index
Back to the overall index

diff -urN linux-2.4.20/drivers/net/pcmcia/xirc2ps_cs.c linux-2.4.21/drivers/net/pcmcia/xirc2ps_cs.c
@@ -1548,7 +1548,6 @@
     DEBUG(1, "do_start_xmit(skb=%p, dev=%p) len=%u\n",
 	  skb, dev, pktlen);
 
-    netif_stop_queue(dev);
 
     /* adjust the packet length to min. required
      * and hope that the buffer is large enough
@@ -1558,8 +1557,14 @@
      * pad this in his buffer with random bytes
      */
     if (pktlen < ETH_ZLEN)
+    {
+        skb = skb_padto(skb, ETH_ZLEN);
+        if(skb == NULL)
+        	return 0;
 	pktlen = ETH_ZLEN;
+    }
 
+    netif_stop_queue(dev);
     SelectPage(0);
     PutWord(XIRCREG0_TRS, (u_short)pktlen+2);
     freespace = GetWord(XIRCREG0_TSO);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)