Date: Mon, 7 Feb 2011 11:58:04 -0500 From: Karim Fodil-Lemelin <fodillemlinkarim@gmail.com> To: freebsd-net@freebsd.org Subject: igb driver tx hangs when out of mbuf clusters Message-ID: <AANLkTim=OYB5cC1H86N_-tDW1w_ipR5-gZjZnT6k%2BMv5@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi List, The issue is with the igb driver from 7.4 RC3 r218406. If the driver runs out of mbuf clusters it simply stops receiving even after the clusters have been freed. igb0@pci0:7:0:0: class=0x020000 card=0x00008086 chip=0x10a78086 rev=0x02 hdr=0x00 vendor = 'Intel Corporation' class = network subclass = ethernet Here is how to reproduce: 1) Set mbuf cluster count very low (4096) 2) do an intensive UDP or TCP transfer Some pointers: - After few seconds or minutes maximum, the traffic does not flow any more across the machine. - At this point we see the InErrors jump in a burst on network iterface igb0. Then, all packets in are counted as In Errors. - Their number is exactly equal to dev.igb.0.mac_stats.missed_packets, and not far from dev.igb.0.mac_stats.xoff_txd (Note that one is on receive the other on send). - Also we see this counter goes non-null: dev.igb.0.mac_stats.recv_no_buff - We tried to enable/disable TSO, Checksum on receive and send, flow control and aim. The problem still shows up, only the time to get there is different. - Forcing the driver to use one queue (static int igb_num_queues = 1;) did not help. - Using igb_header_split=TRUE does help a bit but not unlike disabling hardware acceleration it just takes more time (probably because its using mbufs more instead of clusters and there is 4times more mbufs then clusters). - Using larger values for mbufs cluster also delays the problem We think the code in "igb_refresh_mbufs()" does not handle well running out of mbufs but that is how far we can get at the moment. We are seeking your help and wisdom, and are willing to test patches or suggested settings. Thanks in advance, Karim.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTim=OYB5cC1H86N_-tDW1w_ipR5-gZjZnT6k%2BMv5>