K 10 svn:author V 4 oleg K 8 svn:date V 27 2008-04-25T10:29:26.000000Z K 7 svn:log V 1464 MFC: src/sys/netinet/ip_dummynet.h 1.41 src/sys/netinet/ip_dummynet.c 1.111-1.114 src/sys/netinet/ip_fw_pfil.c 1.26 src/sys/net/if_bridge.c 1.107 src/sys/net/if_ethersubr.c 1.240 src/sbin/ipfw/ipfw.8 1.206 - style(9) cleanup. - dummynet_io() declaration has changed. - Alter packet flow inside dummynet and introduce 'fast' mode of dummynet operation: allow certain packets to bypass dummynet scheduler. Benefits are: -- lower latency: if packet flow does not exceed pipe bandwidth, packets will not be (up to tick) delayed (due to dummynet's scheduler granularity). -- lower overhead: if packet avoids dummynet scheduler it shouldn't reenter ip stack later. Such packets can be fastforwarded. -- recursion (which can lead to kernel stack exhaution) eliminated. This fix long existed panic, which can be triggered this way: kldload dummynet sysctl net.inet.ip.fw.one_pass=0 ipfw pipe 1 config bw 0 for i in `jot 30`; do ipfw add 1 pipe 1 icmp from any to any; done ping -c 1 localhost - New sysctl nodes: net.inet.ip.dummynet.io_fast - enables 'fast' dummynet io net.inet.ip.dummynet.io_pkt - packets passed to dummynet net.inet.ip.dummynet.io_pkt_fast - packets avoided dummynet scheduler net.inet.ip.dummynet.io_pkt_drop - packets dropped by dummynet - Workaround p->numbytes overflow, which can result in infinite loop inside dummynet module (prerequisite is using queues with "fat" pipe). PR: kern/113548 kern/121955 END