CVSROOT: /cvs Module name: src Changes by: d...@cvs.openbsd.org 2011/06/14 18:03:00
Modified files: sys/dev/pci : if_ix.c if_ix.h Log message: if the system runs out of mbufs and cannot provide any when filling the rx ring, schedule a timeout to keep trying until it gets some. a timeout is used here cos the chip doesnt have a way of reporting if its out of descriptors or when there's a ring overflow. we have to manage that ourselves in software. mikeb reported this issue on an ipsec gateway. ipsec would consume all the mbufs while they were stuck in crypto waiting for the cpu to catch up, by which time it was too late to give more to the hardware. without any rx descriptors the chip would never interrupt and we'd never try to fill the ring again. the fix was tested by and is ok mikeb@