----- 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"