----- Original Message ----- From: <dte...@freebsd.org>
But I bet you're not sitting 88 units of Thunderbolt cards that don't work in 
8.3.

8.3 is also exhibiting major problems with the igb-based NICs on those same 88 
units.

Only effects igb init but might want to make sure you have r245334 back ported 
to
avoid memory leaks when mbuf clusters are exhausted.

8.3 version of the patch attached ;-)
For reference not only does this prevent the nic initialising properly it can 
also hang
the boot process as when routing initialises "route" appears to trigger mbuf 
allocation
with wait and as mbufs are exhaused and not freed correctly this hangs forever.

This will happen on an untuned kernel if more than 2 igb nics are configured as
each igb requires 8k of mbuf clusters (1k per queue x 8 queues on a machine with
8 or more cores) and the default kern.ipc.nmbclusters is only 25600.

For clarity by "configured" I mean if the nic is initialised either by 
assigning an IP
or "ifconfig igbX up" the queues are not allocated if the nic is present but 
unused.

   Regards
   Steve

================================================
This e.mail is private and confidential between Multiplay (UK) Ltd. and the person or entity to whom it is addressed. In the event of misdirection, the recipient is prohibited from using, copying, printing or otherwise disseminating it or any information contained in it.
In the event of misdirection, illegible or incomplete transmission please 
telephone +44 845 868 1337
or return the E.mail to postmas...@multiplay.co.uk.
Fixed mbuf free when receive structures fail to allocate.

This prevents quad igb card on high core machines, without any nmbcluster or
igb queue tuning wedging the boot process if all nics are configured.
--- sys/dev/e1000/if_igb.c.orig 2013-01-10 21:44:03.017805977 +0000
+++ sys/dev/e1000/if_igb.c      2013-01-10 21:44:55.751355018 +0000
@@ -4335,8 +4335,8 @@
         * the rings that completed, the failing case will have
         * cleaned up for itself. 'i' is the endpoint.
         */
-       for (int j = 0; j > i; ++j) {
-               rxr = &adapter->rx_rings[i];
+       for (int j = 0; j < i; ++j) {
+               rxr = &adapter->rx_rings[j];
                IGB_RX_LOCK(rxr);
                igb_free_receive_ring(rxr);
                IGB_RX_UNLOCK(rxr);
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to