Re: System hang with heavy network traffic using rtl8139c

Stephan Brauss <[email protected]>
Newsgroups gmane.linux.drivers.realtek.devel
Organization OPTRONIC AG
Message-ID <[email protected]>
Hello, 

maybe I had a similar problem. In my case, the rtl8139 chip reports
a negative buffer size and a following dev_alloc_skb() crashed my system.
The problem was caused by receive buffer overruns that occur if the CPU is not fast
enough to fetch all data. Please check if you see rtl8139-realted kernel messages 
during the test.
I reported this problem to the realtek list some time ago, but, as far as I know,
it is not included in the test version 1.18 until know.

Here is my patch of rtl8129_rx():

                } else {
                        /* Malloc up new buffer, compatible with net-2e. */
                        /* Omit the four octet CRC from the length. */
                        struct sk_buff *skb;
                        int pkt_size = rx_size - 4;

+                       if(pkt_size<0)
+                       {
+                               if (tp->msg_level & NETIF_MSG_DRV)
+                                       printk(KERN_ERR"%s: Impossible packet length.\n",dev->name);
+                               tp->stats.rx_dropped++;
+                               rtl_hw_start(dev);
+                               break;
+                       }
+
                        skb = dev_alloc_skb(pkt_size + 2);
                        if (skb == NULL) {

Additionally, I think it is a good idea to increase the receive buffer size to the maximum by setting
RX_BUF_LEN_IDX from 2 to 3.
If you read older messages of the realtek list, you can find additional driver changes that are maybe
helpfull for you.

Stephan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.