Only in work-2.4.9-ac2: .config
Only in work-2.4.9-ac2: .config.old
Only in work-2.4.9-ac2: .depend
Only in work-2.4.9-ac2: .hdepend
Only in work-2.4.9-ac2: .version
diff -ur /md0/kernels/2.4/v2.4.9-ac2/Documentation/Configure.help work-2.4.9-ac2/Documentation/Configure.help
--- /md0/kernels/2.4/v2.4.9-ac2/Documentation/Configure.help	Mon Aug 27 15:08:38 2001
+++ work-2.4.9-ac2/Documentation/Configure.help	Mon Aug 27 17:45:09 2001
@@ -21754,6 +21754,14 @@
   <file:Documentation/modules.txt>.  The module will be called
   nsc-ircc.o.
 
+National Semiconductor DP83820 series driver
+CONFIG_NS83820
+  This is a driver for the National Semiconductor DP83820 series
+  of gigabit ethernet MACs.  Cards using this chipset include
+  the D-Link DGE-500T, PureData's PDP8023Z-TG, SMC's SMC9462TX,
+  SOHO-GA2000T, SOHO-GA2500T.  The driver supports the use of
+  zero copy.
+
 Toshiba Type-O IR Port device driver
 CONFIG_TOSHIBA_FIR
   Say Y here if you want to build support for the Toshiba Type-O IR
Only in work-2.4.9-ac2: System.map
Only in work-2.4.9-ac2/arch/i386/boot: bbootsect
Only in work-2.4.9-ac2/arch/i386/boot: bbootsect.o
Only in work-2.4.9-ac2/arch/i386/boot: bbootsect.s
Only in work-2.4.9-ac2/arch/i386/boot: bsetup
Only in work-2.4.9-ac2/arch/i386/boot: bsetup.o
Only in work-2.4.9-ac2/arch/i386/boot: bsetup.s
Only in work-2.4.9-ac2/arch/i386/boot: bzImage
Only in work-2.4.9-ac2/arch/i386/boot/compressed: bvmlinux
Only in work-2.4.9-ac2/arch/i386/boot/compressed: bvmlinux.out
Only in work-2.4.9-ac2/arch/i386/boot/compressed: head.o
Only in work-2.4.9-ac2/arch/i386/boot/compressed: misc.o
Only in work-2.4.9-ac2/arch/i386/boot/compressed: piggy.o
Only in work-2.4.9-ac2/arch/i386/boot/tools: build
Only in work-2.4.9-ac2/arch/i386/kernel: .apic.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .bluesmoke.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .bootflag.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .depend
Only in work-2.4.9-ac2/arch/i386/kernel: .dmi_scan.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .i386_ksyms.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .i387.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .i8259.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .init_task.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .io_apic.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .ioport.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .irq.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .kernel.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .ldt.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .mpparse.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .mtrr.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .nmi.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .pci-dma.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .pci-i386.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .pci-irq.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .pci-pc.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .process.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .ptrace.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .semaphore.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .setup.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .signal.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .smp.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .smpboot.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .sys_i386.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .time.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .traps.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: .vm86.o.flags
Only in work-2.4.9-ac2/arch/i386/kernel: apic.o
Only in work-2.4.9-ac2/arch/i386/kernel: bluesmoke.o
Only in work-2.4.9-ac2/arch/i386/kernel: bootflag.o
Only in work-2.4.9-ac2/arch/i386/kernel: dmi_scan.o
Only in work-2.4.9-ac2/arch/i386/kernel: entry.o
Only in work-2.4.9-ac2/arch/i386/kernel: head.o
Only in work-2.4.9-ac2/arch/i386/kernel: i386_ksyms.o
Only in work-2.4.9-ac2/arch/i386/kernel: i387.o
Only in work-2.4.9-ac2/arch/i386/kernel: i8259.o
Only in work-2.4.9-ac2/arch/i386/kernel: init_task.o
Only in work-2.4.9-ac2/arch/i386/kernel: io_apic.o
Only in work-2.4.9-ac2/arch/i386/kernel: ioport.o
Only in work-2.4.9-ac2/arch/i386/kernel: irq.o
Only in work-2.4.9-ac2/arch/i386/kernel: kernel.o
Only in work-2.4.9-ac2/arch/i386/kernel: ldt.o
Only in work-2.4.9-ac2/arch/i386/kernel: mpparse.o
Only in work-2.4.9-ac2/arch/i386/kernel: mtrr.o
Only in work-2.4.9-ac2/arch/i386/kernel: nmi.o
Only in work-2.4.9-ac2/arch/i386/kernel: pci-dma.o
Only in work-2.4.9-ac2/arch/i386/kernel: pci-i386.o
Only in work-2.4.9-ac2/arch/i386/kernel: pci-irq.o
Only in work-2.4.9-ac2/arch/i386/kernel: pci-pc.o
Only in work-2.4.9-ac2/arch/i386/kernel: process.o
Only in work-2.4.9-ac2/arch/i386/kernel: ptrace.o
Only in work-2.4.9-ac2/arch/i386/kernel: semaphore.o
Only in work-2.4.9-ac2/arch/i386/kernel: setup.o
Only in work-2.4.9-ac2/arch/i386/kernel: signal.o
Only in work-2.4.9-ac2/arch/i386/kernel: smp.o
Only in work-2.4.9-ac2/arch/i386/kernel: smpboot.o
Only in work-2.4.9-ac2/arch/i386/kernel: sys_i386.o
Only in work-2.4.9-ac2/arch/i386/kernel: time.o
Only in work-2.4.9-ac2/arch/i386/kernel: trampoline.o
Only in work-2.4.9-ac2/arch/i386/kernel: traps.o
Only in work-2.4.9-ac2/arch/i386/kernel: vm86.o
Only in work-2.4.9-ac2/arch/i386/lib: .dec_and_lock.o.flags
Only in work-2.4.9-ac2/arch/i386/lib: .delay.o.flags
Only in work-2.4.9-ac2/arch/i386/lib: .depend
Only in work-2.4.9-ac2/arch/i386/lib: .lib.a.flags
Only in work-2.4.9-ac2/arch/i386/lib: .memcpy.o.flags
Only in work-2.4.9-ac2/arch/i386/lib: .old-checksum.o.flags
Only in work-2.4.9-ac2/arch/i386/lib: .strstr.o.flags
Only in work-2.4.9-ac2/arch/i386/lib: .usercopy.o.flags
Only in work-2.4.9-ac2/arch/i386/lib: checksum.o
Only in work-2.4.9-ac2/arch/i386/lib: dec_and_lock.o
Only in work-2.4.9-ac2/arch/i386/lib: delay.o
Only in work-2.4.9-ac2/arch/i386/lib: getuser.o
Only in work-2.4.9-ac2/arch/i386/lib: lib.a
Only in work-2.4.9-ac2/arch/i386/lib: memcpy.o
Only in work-2.4.9-ac2/arch/i386/lib: old-checksum.o
Only in work-2.4.9-ac2/arch/i386/lib: strstr.o
Only in work-2.4.9-ac2/arch/i386/lib: usercopy.o
Only in work-2.4.9-ac2/arch/i386/mm: .depend
Only in work-2.4.9-ac2/arch/i386/mm: .extable.o.flags
Only in work-2.4.9-ac2/arch/i386/mm: .fault.o.flags
Only in work-2.4.9-ac2/arch/i386/mm: .init.o.flags
Only in work-2.4.9-ac2/arch/i386/mm: .ioremap.o.flags
Only in work-2.4.9-ac2/arch/i386/mm: .mm.o.flags
Only in work-2.4.9-ac2/arch/i386/mm: extable.o
Only in work-2.4.9-ac2/arch/i386/mm: fault.o
Only in work-2.4.9-ac2/arch/i386/mm: init.o
Only in work-2.4.9-ac2/arch/i386/mm: ioremap.o
Only in work-2.4.9-ac2/arch/i386/mm: mm.o
Only in work-2.4.9-ac2: core
Only in work-2.4.9-ac2/drivers: .depend
Only in work-2.4.9-ac2/drivers/acpi: .depend
Only in work-2.4.9-ac2/drivers/acpi/dispatcher: .depend
Only in work-2.4.9-ac2/drivers/acpi/events: .depend
Only in work-2.4.9-ac2/drivers/acpi/executer: .depend
Only in work-2.4.9-ac2/drivers/acpi/hardware: .depend
Only in work-2.4.9-ac2/drivers/acpi/namespace: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/ac_adapter: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/battery: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/busmgr: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/button: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/ec: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/processor: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/system: .depend
Only in work-2.4.9-ac2/drivers/acpi/ospm/thermal: .depend
Only in work-2.4.9-ac2/drivers/acpi/parser: .depend
Only in work-2.4.9-ac2/drivers/acpi/resources: .depend
Only in work-2.4.9-ac2/drivers/acpi/tables: .depend
Only in work-2.4.9-ac2/drivers/acpi/utilities: .depend
Only in work-2.4.9-ac2/drivers/atm: .depend
Only in work-2.4.9-ac2/drivers/block: .blkpg.o.flags
Only in work-2.4.9-ac2/drivers/block: .block.o.flags
Only in work-2.4.9-ac2/drivers/block: .depend
Only in work-2.4.9-ac2/drivers/block: .elevator.o.flags
Only in work-2.4.9-ac2/drivers/block: .floppy.o.flags
Only in work-2.4.9-ac2/drivers/block: .genhd.o.flags
Only in work-2.4.9-ac2/drivers/block: .ll_rw_blk.o.flags
Only in work-2.4.9-ac2/drivers/block: .loop.o.flags
Only in work-2.4.9-ac2/drivers/block: .nbd.o.flags
Only in work-2.4.9-ac2/drivers/block: blkpg.o
Only in work-2.4.9-ac2/drivers/block: block.o
Only in work-2.4.9-ac2/drivers/block: elevator.o
Only in work-2.4.9-ac2/drivers/block: floppy.o
Only in work-2.4.9-ac2/drivers/block: genhd.o
Only in work-2.4.9-ac2/drivers/block: ll_rw_blk.o
Only in work-2.4.9-ac2/drivers/block: loop.o
Only in work-2.4.9-ac2/drivers/block: nbd.o
Only in work-2.4.9-ac2/drivers/block/paride: .depend
Only in work-2.4.9-ac2/drivers/bluetooth: .depend
Only in work-2.4.9-ac2/drivers/cdrom: .cdrom.o.flags
Only in work-2.4.9-ac2/drivers/cdrom: .depend
Only in work-2.4.9-ac2/drivers/cdrom: .driver.o.flags
Only in work-2.4.9-ac2/drivers/cdrom: cdrom.o
Only in work-2.4.9-ac2/drivers/cdrom: driver.o
Only in work-2.4.9-ac2/drivers/char: .char.o.flags
Only in work-2.4.9-ac2/drivers/char: .console.o.flags
Only in work-2.4.9-ac2/drivers/char: .consolemap.o.flags
Only in work-2.4.9-ac2/drivers/char: .consolemap_deftbl.o.flags
Only in work-2.4.9-ac2/drivers/char: .defkeymap.o.flags
Only in work-2.4.9-ac2/drivers/char: .depend
Only in work-2.4.9-ac2/drivers/char: .keyboard.o.flags
Only in work-2.4.9-ac2/drivers/char: .mem.o.flags
Only in work-2.4.9-ac2/drivers/char: .misc.o.flags
Only in work-2.4.9-ac2/drivers/char: .n_tty.o.flags
Only in work-2.4.9-ac2/drivers/char: .pc_keyb.o.flags
Only in work-2.4.9-ac2/drivers/char: .pty.o.flags
Only in work-2.4.9-ac2/drivers/char: .random.o.flags
Only in work-2.4.9-ac2/drivers/char: .raw.o.flags
Only in work-2.4.9-ac2/drivers/char: .selection.o.flags
Only in work-2.4.9-ac2/drivers/char: .serial.o.flags
Only in work-2.4.9-ac2/drivers/char: .tty_io.o.flags
Only in work-2.4.9-ac2/drivers/char: .tty_ioctl.o.flags
Only in work-2.4.9-ac2/drivers/char: .vc_screen.o.flags
Only in work-2.4.9-ac2/drivers/char: .vt.o.flags
Only in work-2.4.9-ac2/drivers/char/agp: .depend
Only in work-2.4.9-ac2/drivers/char: char.o
Only in work-2.4.9-ac2/drivers/char: conmakehash
Only in work-2.4.9-ac2/drivers/char: console.o
Only in work-2.4.9-ac2/drivers/char: consolemap.o
Only in work-2.4.9-ac2/drivers/char: consolemap_deftbl.c
Only in work-2.4.9-ac2/drivers/char: consolemap_deftbl.o
Only in work-2.4.9-ac2/drivers/char: defkeymap.o
Only in work-2.4.9-ac2/drivers/char/drm: .depend
Only in work-2.4.9-ac2/drivers/char/drm-4.0: .depend
Only in work-2.4.9-ac2/drivers/char/ftape: .depend
Only in work-2.4.9-ac2/drivers/char/ftape/compressor: .depend
Only in work-2.4.9-ac2/drivers/char/ftape/lowlevel: .depend
Only in work-2.4.9-ac2/drivers/char/ftape/zftape: .depend
Only in work-2.4.9-ac2/drivers/char/joystick: .depend
Only in work-2.4.9-ac2/drivers/char: keyboard.o
Only in work-2.4.9-ac2/drivers/char: mem.o
Only in work-2.4.9-ac2/drivers/char: misc.o
Only in work-2.4.9-ac2/drivers/char: n_tty.o
Only in work-2.4.9-ac2/drivers/char: pc_keyb.o
Only in work-2.4.9-ac2/drivers/char/pcmcia: .depend
Only in work-2.4.9-ac2/drivers/char: pty.o
Only in work-2.4.9-ac2/drivers/char: random.o
Only in work-2.4.9-ac2/drivers/char: raw.o
Only in work-2.4.9-ac2/drivers/char/rio: .depend
Only in work-2.4.9-ac2/drivers/char: selection.o
Only in work-2.4.9-ac2/drivers/char: serial.o
Only in work-2.4.9-ac2/drivers/char: tty_io.o
Only in work-2.4.9-ac2/drivers/char: tty_ioctl.o
Only in work-2.4.9-ac2/drivers/char: vc_screen.o
Only in work-2.4.9-ac2/drivers/char: vt.o
Only in work-2.4.9-ac2/drivers/dio: .depend
Only in work-2.4.9-ac2/drivers/fc4: .depend
Only in work-2.4.9-ac2/drivers/i2c: .depend
Only in work-2.4.9-ac2/drivers/ide: .alim15x3.o.flags
Only in work-2.4.9-ac2/drivers/ide: .cmd640.o.flags
Only in work-2.4.9-ac2/drivers/ide: .depend
Only in work-2.4.9-ac2/drivers/ide: .ide-adma.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-cd.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-disk.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-dma.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-features.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-geometry.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-pci.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-probe.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide-proc.o.flags
Only in work-2.4.9-ac2/drivers/ide: .ide.o.flags
Only in work-2.4.9-ac2/drivers/ide: .idedriver.o.flags
Only in work-2.4.9-ac2/drivers/ide: .pdc202xx.o.flags
Only in work-2.4.9-ac2/drivers/ide: .piix.o.flags
Only in work-2.4.9-ac2/drivers/ide: .rz1000.o.flags
Only in work-2.4.9-ac2/drivers/ide: alim15x3.o
Only in work-2.4.9-ac2/drivers/ide: cmd640.o
Only in work-2.4.9-ac2/drivers/ide: ide-adma.o
Only in work-2.4.9-ac2/drivers/ide: ide-cd.o
Only in work-2.4.9-ac2/drivers/ide: ide-disk.o
Only in work-2.4.9-ac2/drivers/ide: ide-dma.o
Only in work-2.4.9-ac2/drivers/ide: ide-features.o
Only in work-2.4.9-ac2/drivers/ide: ide-geometry.o
Only in work-2.4.9-ac2/drivers/ide: ide-mod.o
Only in work-2.4.9-ac2/drivers/ide: ide-pci.o
Only in work-2.4.9-ac2/drivers/ide: ide-probe-mod.o
Only in work-2.4.9-ac2/drivers/ide: ide-probe.o
Only in work-2.4.9-ac2/drivers/ide: ide-proc.o
Only in work-2.4.9-ac2/drivers/ide: ide.o
Only in work-2.4.9-ac2/drivers/ide: idedriver.o
Only in work-2.4.9-ac2/drivers/ide: pdc202xx.o
Only in work-2.4.9-ac2/drivers/ide: piix.o
Only in work-2.4.9-ac2/drivers/ide: rz1000.o
Only in work-2.4.9-ac2/drivers/ieee1394: .depend
Only in work-2.4.9-ac2/drivers/input: .depend
Only in work-2.4.9-ac2/drivers/isdn: .depend
Only in work-2.4.9-ac2/drivers/isdn/act2000: .depend
Only in work-2.4.9-ac2/drivers/isdn/avmb1: .depend
Only in work-2.4.9-ac2/drivers/isdn/divert: .depend
Only in work-2.4.9-ac2/drivers/isdn/eicon: .depend
Only in work-2.4.9-ac2/drivers/isdn/hisax: .depend
Only in work-2.4.9-ac2/drivers/isdn/hysdn: .depend
Only in work-2.4.9-ac2/drivers/isdn/icn: .depend
Only in work-2.4.9-ac2/drivers/isdn/isdnloop: .depend
Only in work-2.4.9-ac2/drivers/isdn/pcbit: .depend
Only in work-2.4.9-ac2/drivers/isdn/sc: .depend
Only in work-2.4.9-ac2/drivers/isdn/tpam: .depend
Only in work-2.4.9-ac2/drivers/macintosh: .depend
Only in work-2.4.9-ac2/drivers/md: .depend
Only in work-2.4.9-ac2/drivers/md: .linear.o.flags
Only in work-2.4.9-ac2/drivers/md: .md.o.flags
Only in work-2.4.9-ac2/drivers/md: .mddev.o.flags
Only in work-2.4.9-ac2/drivers/md: .raid0.o.flags
Only in work-2.4.9-ac2/drivers/md: .raid1.o.flags
Only in work-2.4.9-ac2/drivers/md: .raid5.o.flags
Only in work-2.4.9-ac2/drivers/md: .xor.o.flags
Only in work-2.4.9-ac2/drivers/md: linear.o
Only in work-2.4.9-ac2/drivers/md: md.o
Only in work-2.4.9-ac2/drivers/md: mddev.o
Only in work-2.4.9-ac2/drivers/md: raid0.o
Only in work-2.4.9-ac2/drivers/md: raid1.o
Only in work-2.4.9-ac2/drivers/md: raid5.o
Only in work-2.4.9-ac2/drivers/md: xor.o
Only in work-2.4.9-ac2/drivers/media: .depend
Only in work-2.4.9-ac2/drivers/media: .media.o.flags
Only in work-2.4.9-ac2/drivers/media: media.o
Only in work-2.4.9-ac2/drivers/media/radio: .depend
Only in work-2.4.9-ac2/drivers/media/radio: .radio.o.flags
Only in work-2.4.9-ac2/drivers/media/radio: radio.o
Only in work-2.4.9-ac2/drivers/media/video: .depend
Only in work-2.4.9-ac2/drivers/media/video: .video.o.flags
Only in work-2.4.9-ac2/drivers/media/video: video.o
Only in work-2.4.9-ac2/drivers/message/fusion: .depend
Only in work-2.4.9-ac2/drivers/message/i2o: .depend
Only in work-2.4.9-ac2/drivers/misc: .depend
Only in work-2.4.9-ac2/drivers/misc: .misc.o.flags
Only in work-2.4.9-ac2/drivers/misc: misc.o
Only in work-2.4.9-ac2/drivers/mtd: .depend
Only in work-2.4.9-ac2/drivers/mtd/chips: .depend
Only in work-2.4.9-ac2/drivers/mtd/devices: .depend
Only in work-2.4.9-ac2/drivers/mtd/maps: .depend
Only in work-2.4.9-ac2/drivers/mtd/nand: .depend
Only in work-2.4.9-ac2/drivers/net: .3c59x.o.flags
Only in work-2.4.9-ac2/drivers/net: .8390.o.flags
Only in work-2.4.9-ac2/drivers/net: .Space.o.flags
Only in work-2.4.9-ac2/drivers/net: .acenic.o.flags
Only in work-2.4.9-ac2/drivers/net: .auto_irq.o.flags
Only in work-2.4.9-ac2/drivers/net: .depend
Only in work-2.4.9-ac2/drivers/net: .dummy.o.flags
Only in work-2.4.9-ac2/drivers/net: .eepro100.o.flags
Only in work-2.4.9-ac2/drivers/net: .loopback.o.flags
Only in work-2.4.9-ac2/drivers/net: .ne2k-pci.o.flags
Only in work-2.4.9-ac2/drivers/net: .net.o.flags
Only in work-2.4.9-ac2/drivers/net: .net_init.o.flags
Only in work-2.4.9-ac2/drivers/net: .ns83820.o.flags
Only in work-2.4.9-ac2/drivers/net: .pcnet32.o.flags
Only in work-2.4.9-ac2/drivers/net: .setup.o.flags
Only in work-2.4.9-ac2/drivers/net: 3c59x.o
Only in work-2.4.9-ac2/drivers/net: 8390.o
Only in work-2.4.9-ac2/drivers/net: Space.o
Only in work-2.4.9-ac2/drivers/net: acenic.o
Only in work-2.4.9-ac2/drivers/net/appletalk: .depend
Only in work-2.4.9-ac2/drivers/net/arcnet: .depend
Only in work-2.4.9-ac2/drivers/net: auto_irq.o
Only in work-2.4.9-ac2/drivers/net: dummy.o
Only in work-2.4.9-ac2/drivers/net: eepro100.o
Only in work-2.4.9-ac2/drivers/net/fc: .depend
Only in work-2.4.9-ac2/drivers/net/hamradio: .depend
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: .depend
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: gentbl
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: sm_tbl_afsk1200.h
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: sm_tbl_afsk2400_7.h
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: sm_tbl_afsk2400_8.h
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: sm_tbl_afsk2666.h
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: sm_tbl_fsk9600.h
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: sm_tbl_hapn4800.h
Only in work-2.4.9-ac2/drivers/net/hamradio/soundmodem: sm_tbl_psk4800.h
Only in work-2.4.9-ac2/drivers/net/irda: .depend
Only in work-2.4.9-ac2/drivers/net: loopback.o
Only in work-2.4.9-ac2/drivers/net: ne2k-pci.o
Only in work-2.4.9-ac2/drivers/net: net.o
Only in work-2.4.9-ac2/drivers/net: net_init.o
diff -ur /md0/kernels/2.4/v2.4.9-ac2/drivers/net/ns83820.c work-2.4.9-ac2/drivers/net/ns83820.c
--- /md0/kernels/2.4/v2.4.9-ac2/drivers/net/ns83820.c	Mon Aug 27 15:08:42 2001
+++ work-2.4.9-ac2/drivers/net/ns83820.c	Fri Sep  7 16:23:28 2001
@@ -1,6 +1,7 @@
-#define VERSION "0.7"
+#define VERSION "0.10"
 /* ns83820.c by Benjamin LaHaise <bcrl@redhat.com>
- * $Revision: 1.28 $
+ *
+ * $Revision: 1.39 $
  *
  * Copyright 2001 Benjamin LaHaise.
  * Copyright 2001 Red Hat.
@@ -35,6 +36,10 @@
  *			      fiddling with TXCFG
  *	20010810	0.6 - use pci dma api for ringbuffers, work on ia64
  *	20010816	0.7 - misc cleanups
+ *	20010826	0.8 - fix critical zero copy bugs
+ *			0.9 - internal experiment
+ *	20010827	0.10 - fix ia64 unaligned access.
+ *			0.11 - prefetching optimizations
  *
  * Driver Overview
  * ===============
@@ -48,6 +53,15 @@
  * management, d) initialization and configuration.  Where possible,
  * these code paths are designed to run in parallel.
  *
+ * This driver has been tested and found to work with the following
+ * cards (in no particular order):
+ *
+ *	Cameo		SOHO-GA2000T	SOHO-GA2500T
+ *	D-Link		DGE-500T
+ *	PureData	PDP8023Z-TG
+ *	SMC		SMC9462TX
+ *
+ * Reports of success or failure would be greatly appreciated.
  */
 //#define dprintk		printk
 #define dprintk(x...)		do { } while (0)
@@ -64,18 +78,30 @@
 #include <linux/ip.h>	/* for iph */
 #include <linux/in.h>	/* for IPPROTO_... */
 #include <linux/eeprom.h>
+#include <linux/prefetch.h>
+#include <linux/brlock.h>
 //#include <linux/skbrefill.h>
 
 /* Dprintk is used for more interesting debug events */
 #undef Dprintk
 #define	Dprintk			dprintk
 
+#if !defined(GCC_VERSION) && defined(__GNUC__)
+#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
+#endif /* GCC_VERSION */
+
 #if !defined(GCC_VERSION) || (GCC_VERSION < 2096)
 #define __builtin_expect(x,y)	(x)
 #endif
 
+#if !defined(HAVE_NET_KICK_TX)
+#define HAVE_NET_KICK_TX	0
+#endif
+
 #ifdef CONFIG_HIGHMEM64G
-//#define USE_64BIT_ADDR	/* Disabled for now as it doesn't work. */
+#define USE_64BIT_ADDR
+#elif defined(__ia64__)
+#define USE_64BIT_ADDR
 #endif
 
 /* Tell davem to fix the pci dma api.  Grrr. */
@@ -116,9 +142,10 @@
 
 
 /* tunables */
-#define RX_BUF_SIZE	1536	/* 8192 */
-#define NR_RX_DESC	256
+#define RX_BUF_SIZE	7000	/* 8192 */
 
+/* do not raise above 65536 as u16's are used for the index */
+#define NR_RX_DESC	256
 #define NR_TX_DESC	256
 
 /* register defines */
@@ -293,14 +320,15 @@
 #define VDR		0xc4
 #define CCSR		0xcc
 
-#define __kick_rx(dev)	writel(CR_RXE, dev->base + CR)
+#define kick_tx(dev)	writel(CR_TXE, (dev)->base + CR)
+#define __kick_rx(dev)	writel(CR_RXE, (dev)->base + CR)
 
 #define kick_rx(dev) do { \
 	dprintk("kick_rx: maybe kicking\n"); \
-	if (test_and_clear_bit(0, &dev->rx_info.idle)) { \
+	if (__builtin_expect(test_and_clear_bit(0, &dev->rx_idle), 1)) { \
 		dprintk("actually kicking\n"); \
-		writel(dev->rx_info.phy_descs + (4 * DESC_SIZE * dev->rx_info.next_rx), dev->base + RXDP); \
-		if (dev->rx_info.next_rx == dev->rx_info.next_empty) \
+		writel(dev->rx_phy_descs + (4 * DESC_SIZE * dev->next_rx), dev->base + RXDP); \
+		if (__builtin_expect((dev->next_rx == dev->next_empty), 0)) \
 			printk(KERN_DEBUG "%s: uh-oh: next_rx == next_empty???\n", dev->net_dev.name);\
 		__kick_rx(dev); \
 	} \
@@ -318,7 +346,10 @@
 #define BUFPTR		(LINK + HW_ADDR_LEN/4)
 #define CMDSTS		(BUFPTR + HW_ADDR_LEN/4)
 #define EXTSTS		(CMDSTS + 4/4)
-#define DRV_NEXT	(EXTSTS + 4/4)
+#define DRV_SKB		(EXTSTS + 4/4)
+#define DRV_0		(DRV_SKB + 4/4)
+#define DRV_1		(DRV_0 + 4/4)
+#define DRV_2		(DRV_1 + 4/4)
 
 #define CMDSTS_OWN	0x80000000
 #define CMDSTS_MORE	0x40000000
@@ -332,30 +363,36 @@
 
 #define DESC_SIZE	8		/* Should be cache line sized */
 
-struct rx_info {
-	spinlock_t	lock;
-	int		up;
-	long		idle;
-
-	struct sk_buff	*skbs[NR_RX_DESC];
-
-	unsigned	next_rx, next_empty;
-
-	u32		*descs;
-	dma_addr_t	phy_descs;
-};
-
-
 struct ns83820 {
 	struct net_device	net_dev;
-	u8			*base;
 
 	struct pci_dev		*pci_dev;
-	struct ns83820		*next_dev;
+	void			*base;
+	u32			*tx_descs;
+	dma_addr_t		tx_phy_descs;
+
+	u8			ihr;
+	u8			up;
+	u16			pad;
+
+	volatile u16		next_empty;
+	volatile u16		next_rx;
+
+	volatile u16		tx_free_idx;	/* idx of free desc chain */
+	u16			tx_done_idx;
+	u16			tx_idx;
+	u16			tx_intr_idx;
+
+	u32			*rx_descs;
+	dma_addr_t		rx_phy_descs;
+	long			last_jiffies;
+	int			last_irqs;
 
-	struct rx_info		rx_info;
+	struct tasklet_struct	rx_tasklet;
+
+	long			rx_idle;
+	spinlock_t		rx_lock;
 
-	unsigned		ihr;
 	struct tq_struct	tq_refill;
 
 	/* protects everything below.  irqsave when using. */
@@ -367,20 +404,7 @@
 	u32			IMR_cache;
 	struct eeprom		ee;
 
-
-	spinlock_t	tx_lock;
-
-	long		tx_idle;
-	u32		tx_done_idx;
-	u32		tx_idx;
-	volatile u32	tx_free_idx;	/* idx of free desc chain */
-	u32		tx_intr_idx;
-
-	struct sk_buff	*tx_skbs[NR_TX_DESC];
-
-	char		pad[16] __attribute__((aligned(16)));
-	u32		*tx_descs;
-	dma_addr_t	tx_phy_descs;
+	struct ns83820		*next_dev;
 };
 
 //free = (tx_done_idx + NR_TX_DESC-2 - free_idx) % NR_TX_DESC
@@ -404,86 +428,77 @@
  * possible.
  */
 #ifdef USE_64BIT_ADDR
-static inline void build_rx_desc64(struct ns83820 *dev, u32 *desc, void *link, u64 buf, u32 cmdsts, u32 extsts)
+static inline void build_rx_desc64(struct ns83820 *dev, u32 *desc, u64 link, u64 buf, u32 cmdsts, u32 extsts)
 {
-	u64 lnk = link ? virt_to_phys(link) : 0;
-	desc[0] = lnk;
-	desc[1] = 0; //lnk >> 32;
+	desc[0] = link;
+	desc[1] = link >> 32;
 	desc[2] = buf;
 	desc[3] = buf >> 32;
 	desc[5] = extsts;
-	mb();
+	barrier();
 	desc[4] = cmdsts;
 }
 
 #define build_rx_desc	build_rx_desc64
 #else
 
-static inline void build_rx_desc32(struct ns83820 *dev, u32 *desc, void *link, u32 buf, u32 cmdsts, u32 extsts)
+static inline void build_rx_desc32(struct ns83820 *dev, u32 *desc, u32 link, u32 buf, u32 cmdsts, u32 extsts)
 {
-	desc[0] = link ? (u32)virt_to_phys(link) : 0;
+	desc[0] = link;
 	desc[1] = buf;
 	desc[3] = extsts;
-	mb();
+	barrier();
 	desc[2] = cmdsts;
 }
 
 #define build_rx_desc	build_rx_desc32
 #endif
 
-#define nr_rx_empty(dev) ((NR_RX_DESC-2 + dev->rx_info.next_rx - dev->rx_info.next_empty) % NR_RX_DESC)
-static int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb)
+#define nr_rx_empty(dev) ((NR_RX_DESC-2 + dev->next_rx - dev->next_empty) % NR_RX_DESC)
+static inline int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb)
 {
 	unsigned next_empty;
 	u32 cmdsts;
 	u32 *sg;
 	hw_addr_t buf;
 
-	next_empty = dev->rx_info.next_empty;
+	next_empty = dev->next_empty;
 
 	/* don't overrun last rx marker */
-	if (nr_rx_empty(dev) <= 2) {
-		kfree_skb(skb);
+	if (__builtin_expect((nr_rx_empty(dev) <= 2), 0))
 		return 1;
-	}
 
-#if 0
-	dprintk("next_empty[%d] nr_used[%d] next_rx[%d]\n",
-		dev->rx_info.next_empty,
-		dev->rx_info.nr_used,
-		dev->rx_info.next_rx
-		);
-#endif
-
-	sg = dev->rx_info.descs + (next_empty * DESC_SIZE);
-	if (dev->rx_info.skbs[next_empty])
-		BUG();
-	dev->rx_info.skbs[next_empty] = skb;
+	sg = dev->rx_descs + (next_empty * DESC_SIZE);
+	*(struct sk_buff **)(sg + DRV_SKB) = skb;
 
-	dev->rx_info.next_empty = (next_empty + 1) % NR_RX_DESC;
+	dev->next_empty = (next_empty + 1) % NR_RX_DESC;
 	cmdsts = RX_BUF_SIZE | CMDSTS_INTR;
 	buf = pci_map_single(dev->pci_dev, skb->tail, RX_BUF_SIZE, PCI_DMA_FROMDEVICE);
-	build_rx_desc(dev, sg, NULL, buf, cmdsts, 0);
+	build_rx_desc(dev, sg, 0, buf, cmdsts, 0);
 	/* update link of previous rx */
-	if (next_empty != dev->rx_info.next_rx)
-		dev->rx_info.descs[((NR_RX_DESC + next_empty - 1) % NR_RX_DESC) * DESC_SIZE] = dev->rx_info.phy_descs + (next_empty * DESC_SIZE * 4);
+	if (__builtin_expect((next_empty != dev->next_rx), 1))
+		dev->rx_descs[((NR_RX_DESC + next_empty - 1) % NR_RX_DESC) * DESC_SIZE] = dev->rx_phy_descs + (next_empty * DESC_SIZE * 4);
 
 	return 0;
 }
 
-static int rx_refill(struct ns83820 *dev, int gfp)
+static inline int __rx_refill(struct ns83820 *dev, int gfp)
 {
 	unsigned i;
-	long flags = 0;
 
 	dprintk("rx_refill(%p)\n", dev);
-	if (gfp == GFP_ATOMIC)
-		spin_lock_irqsave(&dev->rx_info.lock, flags);
+	if (gfp == GFP_ATOMIC) {
+		if (!spin_trylock(&dev->rx_lock))
+			return 0;
+	}
 	for (i=0; i<NR_RX_DESC; i++) {
 		struct sk_buff *skb;
 		long res;
+		if (__builtin_expect((nr_rx_empty(dev) <= 2), 0))
+			break;
+
 		skb = __dev_alloc_skb(RX_BUF_SIZE+16, gfp);
-		if (!skb)
+		if (__builtin_expect(!skb, 0))
 			break;
 
 		res = (long)skb->tail & 0xf;
@@ -492,41 +507,52 @@
 		skb_reserve(skb, res);
 
 		skb->dev = &dev->net_dev;
-		if (gfp != GFP_ATOMIC)
-			spin_lock_irqsave(&dev->rx_info.lock, flags);
-		res = ns83820_add_rx_skb(dev, skb);
-		if (gfp != GFP_ATOMIC)
-			spin_unlock_irqrestore(&dev->rx_info.lock, flags);
-		if (res) {
+		if (gfp != GFP_ATOMIC) {
+			long flags;
+			spin_lock_irqsave(&dev->rx_lock, flags);
+			res = ns83820_add_rx_skb(dev, skb);
+			spin_unlock_irqrestore(&dev->rx_lock, flags);
+		} else
+			res = ns83820_add_rx_skb(dev, skb);
+
+		if (__builtin_expect(res, 0)) {
+			kfree_skb(skb);
 			i = 1;
 			break;
 		}
 	}
 	if (gfp == GFP_ATOMIC)
-		spin_unlock_irqrestore(&dev->rx_info.lock, flags);
+		spin_unlock(&dev->rx_lock);
 
 	return i ? 0 : -ENOMEM;
 }
 
+static void FASTCALL(rx_refill_atomic(struct ns83820 *dev));
+static void rx_refill_atomic(struct ns83820 *dev)
+{
+	__rx_refill(dev, GFP_ATOMIC);
+}
+
 /* REFILL */
-static inline void queue_refill(void *_dev)
+static void queue_refill(void *_dev)
 {
 	struct ns83820 *dev = _dev;
 
-	rx_refill(dev, GFP_KERNEL);
-	if (dev->rx_info.up)
+	__rx_refill(dev, GFP_KERNEL);
+	if (dev->up)
 		kick_rx(dev);
 }
 
 static inline void clear_rx_desc(struct ns83820 *dev, unsigned i)
 {
-	build_rx_desc(dev, dev->rx_info.descs + (DESC_SIZE * i), 0, 0, CMDSTS_OWN, 0);
+	build_rx_desc(dev, dev->rx_descs + (DESC_SIZE * i), 0, 0, CMDSTS_OWN, 0);
 }
 
+static void FASTCALL(phy_intr(struct ns83820 *dev));
 static void phy_intr(struct ns83820 *dev)
 {
 	static char *speeds[] = { "10", "100", "1000", "1000(?)" };
-	u32 cfg, new_cfg;
+	u32 cfg, new_cfg, old_cfg;
 
 	new_cfg = dev->CFG_cache & ~(CFG_SB | CFG_MODE_1000 | CFG_SPDSTS);
 	cfg = readl(dev->base + CFG) ^ SPDSTS_POLARITY;
@@ -541,6 +567,7 @@
 		dev->CFG_cache = new_cfg;
 	}
 
+	old_cfg = dev->CFG_cache;
 	dev->CFG_cache &= ~CFG_SPDSTS;
 	dev->CFG_cache |= cfg & CFG_SPDSTS;
 
@@ -551,11 +578,13 @@
 		netif_stop_queue(&dev->net_dev);
 	}
 
-	printk(KERN_INFO "%s: link now %s mbps, %s duplex and %s.\n",
-		dev->net_dev.name,
-		speeds[((cfg / CFG_SPDSTS0) & 3)],
-		(cfg & CFG_DUPSTS) ? "full" : "half",
-		(cfg & CFG_LNKSTS) ? "up" : "down");
+	if (cfg & CFG_LNKSTS)
+		printk(KERN_INFO "%s: link now %s mbps, %s duplex and up.\n",
+			dev->net_dev.name,
+			speeds[((cfg / CFG_SPDSTS0) & 3)],
+			(cfg & CFG_DUPSTS) ? "full" : "half");
+	else if (!(cfg & CFG_LNKSTS) && (old_cfg & CFG_LNKSTS))
+		printk(KERN_INFO "%s: link now down.\n", dev->net_dev.name);
 }
 
 static int ns83820_setup_rx(struct ns83820 *dev)
@@ -565,28 +594,28 @@
 
 	dprintk("ns83820_setup_rx(%p)\n", dev);
 
-	dev->rx_info.idle = 1;
-	dev->rx_info.next_rx = 0;
-	dev->rx_info.next_empty = 0;
+	dev->rx_idle = 1;
+	dev->next_rx = 0;
+	dev->next_empty = 0;
 
 	for (i=0; i<NR_RX_DESC; i++)
 		clear_rx_desc(dev, i);
 
 	writel(0, dev->base + RXDP_HI);
-	writel(dev->rx_info.phy_descs, dev->base + RXDP);
+	writel(dev->rx_phy_descs, dev->base + RXDP);
 
-	ret = rx_refill(dev, GFP_KERNEL);
+	ret = __rx_refill(dev, GFP_KERNEL);
 	if (!ret) {
 		dprintk("starting receiver\n");
 		/* prevent the interrupt handler from stomping on us */
-		spin_lock_irq(&dev->rx_info.lock);
+		spin_lock_irq(&dev->rx_lock);
 
 		writel(0x0001, dev->base + CCSR);
 		writel(0, dev->base + RFCR);
 		writel(0x7fc00000, dev->base + RFCR);
 		writel(0xffc00000, dev->base + RFCR);
 
-		dev->rx_info.up = 1;
+		dev->up = 1;
 
 		phy_intr(dev);
 
@@ -601,7 +630,7 @@
 		dev->IMR_cache |= ISR_RXDESC;
 		dev->IMR_cache |= ISR_RXIDLE;
 		dev->IMR_cache |= ISR_TXDESC;
-		//dev->IMR_cache |= ISR_TXIDLE;
+		dev->IMR_cache |= ISR_TXIDLE;
 
 		writel(dev->IMR_cache, dev->base + IMR);
 		writel(1, dev->base + IER);
@@ -609,7 +638,7 @@
 
 		kick_rx(dev);
 
-		spin_unlock_irq(&dev->rx_info.lock);
+		spin_unlock_irq(&dev->rx_lock);
 	}
 	return ret;
 }
@@ -628,7 +657,7 @@
 	spin_unlock_irqrestore(&dev->misc_lock, flags);
 
 	/* synchronize with the interrupt handler and kill it */
-	dev->rx_info.up = 0;
+	dev->up = 0;
 	synchronize_irq();
 
 	/* touch the pci bus... */
@@ -639,8 +668,8 @@
 	writel(0, dev->base + RXDP);
 
 	for (i=0; i<NR_RX_DESC; i++) {
-		struct sk_buff *skb = dev->rx_info.skbs[i];
-		dev->rx_info.skbs[i] = NULL;
+		u32 *desc = dev->rx_descs + i * DESC_SIZE;
+		struct sk_buff *skb = *(struct sk_buff **)(desc + DRV_SKB);
 		clear_rx_desc(dev, i);
 		if (skb)
 			kfree_skb(skb);
@@ -648,64 +677,100 @@
 }
 
 /* rx_irq
- *
+ *	
  */
-static void FASTCALL(rx_irq(struct ns83820 *dev));
-static void rx_irq(struct ns83820 *dev)
+static int FASTCALL(rx_irq(struct ns83820 *dev));
+static void rx_action(unsigned long _dev)
+{
+	struct ns83820 *dev = (void *)_dev;
+	long now;
+	int i=0;
+	br_read_lock(BR_NETPROTO_LOCK);
+	while (i++ < 8 && rx_irq(dev));
+	br_read_unlock(BR_NETPROTO_LOCK);
+#if 0
+	if ((jiffies - dev->last_jiffies) > (HZ/100 + 1))
+		writel(0, dev->base + IHR);
+#endif
+}
+
+static int rx_irq(struct ns83820 *dev)
 {
-	struct rx_info *info = &dev->rx_info;
 	unsigned next_rx;
 	u32 cmdsts, *desc;
-	long flags;
+	//long flags;
 	int nr = 0;
 
 	dprintk("rx_irq(%p)\n", dev);
 	dprintk("rxdp: %08x, descs: %08lx next_rx[%d]: %p next_empty[%d]: %p\n",
 		readl(dev->base + RXDP),
-		(dev->rx_info.phy_descs),
-		dev->rx_info.next_rx,
-		(dev->rx_info.descs + (DESC_SIZE * dev->rx_info.next_rx)),
-		dev->rx_info.next_empty,
-		(dev->rx_info.descs + (DESC_SIZE * dev->rx_info.next_empty))
+		(dev->rx_phy_descs),
+		dev->next_rx,
+		(dev->rx_descs + (DESC_SIZE * dev->next_rx)),
+		dev->next_empty,
+		(dev->rx_descs + (DESC_SIZE * dev->next_empty))
 		);
 
-	spin_lock_irqsave(&info->lock, flags);
-	if (!info->up)
+	if (dev->up && (nr_rx_empty(dev) >= NR_RX_DESC/4)) {
+		rx_refill_atomic(dev);
+		kick_rx(dev);
+		if (__builtin_expect((nr_rx_empty(dev) > NR_RX_DESC*3/4), 0))
+			schedule_task(&dev->tq_refill);
+		if (dev->rx_idle)
+			schedule_task(&dev->tq_refill);
+	}
+
+	//spin_lock_irqsave(&dev->rx_lock, flags);
+	if (__builtin_expect(!dev->up, 0))
 		goto out;
 
 	dprintk("walking descs\n");
-	next_rx = info->next_rx;
-	desc = info->descs + (DESC_SIZE * next_rx);
-	while ((CMDSTS_OWN & (cmdsts = desc[CMDSTS])) &&
-	       (cmdsts != CMDSTS_OWN)) {
+	next_rx = dev->next_rx;
+	desc = dev->rx_descs + (DESC_SIZE * next_rx);
+	cmdsts = desc[CMDSTS];
+	prefetchnta(dev->rx_descs + ((next_rx + 2) % NR_RX_DESC) * DESC_SIZE);
+	for (;;) {
+		dmaaddr_high_t bufptr;
 		struct sk_buff *skb;
-		u32 extsts = desc[EXTSTS];
-		dmaaddr_high_t bufptr = *(dmaaddr_high_t *)(desc + BUFPTR);
+		u32 extsts;
 
 		dprintk("cmdsts: %08x\n", cmdsts);
 		dprintk("link: %08x\n", desc[LINK]);
 		dprintk("extsts: %08x\n", desc[EXTSTS]);
 
-		skb = info->skbs[next_rx];
-		info->skbs[next_rx] = NULL;
-		info->next_rx = (next_rx + 1) % NR_RX_DESC;
+		bufptr = *(dmaaddr_high_t *)(desc + BUFPTR);
+		skb = *(struct sk_buff **)(desc + DRV_SKB);
 
-		barrier();
-		clear_rx_desc(dev, next_rx);
+		if (__builtin_expect((next_rx == dev->next_empty), 0))
+			break;
+		if (__builtin_expect(!(CMDSTS_OWN & cmdsts), 0))
+			break;
+		if (__builtin_expect((cmdsts == CMDSTS_OWN), 0))
+			break;
+
+		prefetcht1(skb->data);
+		prefetcht1(skb->data + 32);
+
+		/* prefetch the next descriptor */
+		prefetchnta(dev->rx_descs + ((next_rx + 3) % NR_RX_DESC) * DESC_SIZE);
+		extsts = desc[EXTSTS];
+		desc[LINK] = 0;
+		desc[LINK+1] = 0;
+		desc[DRV_SKB] = 0;
+		desc[DRV_0] = 0;
+		desc[CMDSTS] = CMDSTS_OWN;
 
 		pci_unmap_single(dev->pci_dev, bufptr,
 				 RX_BUF_SIZE, PCI_DMA_FROMDEVICE);
-		if (CMDSTS_OK & cmdsts) {
+		if (__builtin_expect(!!(CMDSTS_OK & cmdsts), 1)) {
 #ifndef __i386__
 			struct sk_buff *tmp;
 #endif
 			int len = cmdsts & 0xffff;
-			if (!skb)
-				BUG();
 			skb_put(skb, len);
 #ifndef __i386__	/* I hate the network stack sometimes */
 			tmp = __dev_alloc_skb(RX_BUF_SIZE+16, GFP_ATOMIC);
-			if (!tmp)
+			if (__builtin_expect(!tmp, 0))
 				goto done;
 			tmp->dev = &dev->net_dev;
 			skb_reserve(tmp, 2);
@@ -716,73 +781,60 @@
 			if ((extsts & 0x002a0000) && !(extsts & 0x00540000)) {
 				skb->ip_summed = CHECKSUM_UNNECESSARY;
 			} else {
-				if (len >500) printk("bad\n");
 				skb->ip_summed = CHECKSUM_NONE;
 			}
 			skb->protocol = eth_type_trans(skb, &dev->net_dev);
-			switch (netif_rx(skb)) {
-			case NET_RX_SUCCESS:
-				dev->ihr = 0;
-				break;
-			case NET_RX_CN_LOW:
-				dev->ihr = 2;
-				break;
-			case NET_RX_CN_MOD:
-				dev->ihr = dev->ihr + 1;
-				break;
-			case NET_RX_CN_HIGH:
-				dev->ihr += dev->ihr/2 + 1;
-				break;
-			case NET_RX_DROP:
-				dev->ihr = 255;
-				break;
-			}
-			if (dev->ihr > 255)
-				dev->ihr = 8;
+#ifdef HAVE___NETIF_RX
+			__netif_rx(&dev->net_dev, skb);
+#warning bar.
+#else
+			dev->ihr = (netif_rx(skb) > NET_RX_CN_MOD) ? 16 : 4;
+#endif
 #ifndef __i386__
 		done:;
 #endif
 		} else {
-			static int err;
-			if (err++ < 20) {
-				Dprintk("error packet: %08x\n", cmdsts);
-			}
+			dprintk("error packet: cmdsts: %08x extsts: %08x\n",
+				cmdsts, extsts);
 			kfree_skb(skb);
 		}
 
 		nr++;
-		next_rx = info->next_rx;
-		desc = info->descs + (DESC_SIZE * next_rx);
+		next_rx = (next_rx + 1) % NR_RX_DESC;
+		dev->next_rx = next_rx;
+		desc = dev->rx_descs + (DESC_SIZE * next_rx);
+		barrier();
+		cmdsts = desc[CMDSTS];
 	}
-	info->next_rx = next_rx;
 
 out:
 	if (0 && !nr) {
 		Dprintk("dazed: cmdsts_f: %08x\n", cmdsts);
 	}
 
-	spin_unlock_irqrestore(&info->lock, flags);
+	//spin_unlock_irqrestore(&dev->rx_lock, flags);
+
+	return nr;
 }
 
 
 /* Packet Transmit code
  */
-static inline void kick_tx(struct ns83820 *dev)
-{
-	dprintk("kick_tx(%p): tx_idle=%ld, tx_idx=%d free_idx=%d\n",
-		dev, dev->tx_idle, dev->tx_idx, dev->tx_free_idx);
-	writel(CR_TXE, dev->base + CR);
-}
 
 /* no spinlock needed on the transmit irq path as the interrupt handler is serialized */
+static void FASTCALL(do_tx_done(struct ns83820 *dev));
 static void do_tx_done(struct ns83820 *dev)
 {
 	u32 cmdsts, tx_done_idx, *desc;
 
 	dprintk("do_tx_done(%p)\n", dev);
+
 	tx_done_idx = dev->tx_done_idx;
 	desc = dev->tx_descs + (tx_done_idx * DESC_SIZE);
 
+	prefetch(dev->tx_descs + ((tx_done_idx + 2) % NR_TX_DESC) * DESC_SIZE);
+	prefetch(dev->tx_descs + ((tx_done_idx + 3) % NR_TX_DESC) * DESC_SIZE);
+
 	dprintk("tx_done_idx=%d free_idx=%d cmdsts=%08x\n",
 		tx_done_idx, dev->tx_free_idx, desc[CMDSTS]);
 	while ((tx_done_idx != dev->tx_free_idx) &&
@@ -791,10 +843,11 @@
 
 		dprintk("tx_done_idx=%d free_idx=%d cmdsts=%08x\n",
 			tx_done_idx, dev->tx_free_idx, desc[CMDSTS]);
-		skb = dev->tx_skbs[tx_done_idx];
-		dev->tx_skbs[tx_done_idx] = NULL;
+		prefetch(dev->tx_descs + ((tx_done_idx + 4) % NR_TX_DESC) * DESC_SIZE);
+		skb = *(struct sk_buff **)(desc + DRV_SKB);
+		*(struct sk_buff **)(desc + DRV_SKB) = NULL;
 		dprintk("done(%p)\n", skb);
-		if (skb) {
+		if (__builtin_expect(!!skb, 1)) {
 			pci_unmap_single(dev->pci_dev,
 					*(hw_addr_t *)(desc + BUFPTR),
 					skb->len,
@@ -804,18 +857,26 @@
 
 		tx_done_idx = (tx_done_idx + 1) % NR_TX_DESC;
 		dev->tx_done_idx = tx_done_idx;
-		desc[CMDSTS] = 0;
+
+		/* lockless is safe so long as tx_done_idx can be
+		 * seen by the interrupt handler before CMDSTS
+		 */
 		barrier();
+		desc[CMDSTS] = 0;
+
 		desc = dev->tx_descs + (tx_done_idx * DESC_SIZE);
 	}
 
 	/* Allow network stack to resume queueing packets after we've
 	 * finished transmitting at least 1/4 of the packets in the queue.
 	 */
-	if (netif_queue_stopped(&dev->net_dev) && start_tx_okay(dev)) {
-		dprintk("start_queue(%p)\n", dev);
-		netif_start_queue(&dev->net_dev);
-		netif_wake_queue(&dev->net_dev);
+	if (netif_queue_stopped(&dev->net_dev)) {
+		if (start_tx_okay(dev)) {
+			dprintk("start_queue(%p)\n", dev);
+			netif_start_queue(&dev->net_dev);
+			netif_wake_queue(&dev->net_dev);
+		}
+		dev->ihr = 4;
 	}
 }
 
@@ -824,14 +885,24 @@
 	unsigned i;
 
 	for (i=0; i<NR_TX_DESC; i++) {
-		struct sk_buff *skb = dev->tx_skbs[i];
-		dev->tx_skbs[i] = NULL;
+		u32 *desc = dev->tx_descs + i * DESC_SIZE;
+		struct sk_buff *skb = *(struct sk_buff **)(desc + DRV_SKB);
 		if (skb)
 			dev_kfree_skb(skb);
 	}
 
 	memset(dev->tx_descs, 0, NR_TX_DESC * DESC_SIZE * 4);
-	set_bit(0, &dev->tx_idle);
+}
+
+static int stop_queue(struct ns83820 *dev)
+{
+	netif_stop_queue(&dev->net_dev);
+	/* check for the extremely rare race */
+	if (dev->CFG_cache & CFG_LNKSTS)
+		return 1;
+
+	netif_start_queue(&dev->net_dev);
+	return 0;
 }
 
 /* transmit routine.  This code relies on the network layer serializing
@@ -840,7 +911,6 @@
  * while trying to track down a bug in either the zero copy code or
  * the tx fifo (hence the MAX_FRAG_LEN).
  */
-#define MAX_FRAG_LEN	8192	/* disabled for now */
 static int ns83820_hard_start_xmit(struct sk_buff *skb, struct net_device *_dev)
 {
 	struct ns83820 *dev = (struct ns83820 *)_dev;
@@ -852,29 +922,28 @@
 	skb_frag_t *frag;
 	int stopped = 0;
 	int do_intr = 0;
-	volatile u32 *first_desc;
+	u32 *first_desc, *tx_descs = dev->tx_descs;
 
 	dprintk("ns83820_hard_start_xmit\n");
 
-	nr_frags =  skb_shinfo(skb)->nr_frags;
 again:
-	if (__builtin_expect(dev->CFG_cache & CFG_LNKSTS, 0)) {
-		netif_stop_queue(&dev->net_dev);
-		if (__builtin_expect(dev->CFG_cache & CFG_LNKSTS, 0))
+	if (__builtin_expect((dev->CFG_cache & CFG_LNKSTS), 0))
+		if (__builtin_expect(stop_queue(dev), 0))
 			return 1;
-		netif_start_queue(&dev->net_dev);
-	}
 
+	nr_frags =  skb_shinfo(skb)->nr_frags;
 	free_idx = dev->tx_free_idx;
+	first_desc = tx_descs + (free_idx * DESC_SIZE);
+
 	tx_done_idx = dev->tx_done_idx;
 	nr_free = (tx_done_idx + NR_TX_DESC-2 - free_idx) % NR_TX_DESC;
 	nr_free -= 1;
-	if ((nr_free <= nr_frags) || (nr_free <= 8192 / MAX_FRAG_LEN)) {
+	if (__builtin_expect((nr_free <= nr_frags), 0)) {
 		dprintk("stop_queue - not enough(%p)\n", dev);
 		netif_stop_queue(&dev->net_dev);
 
 		/* Check again: we may have raced with a tx done irq */
-		if (dev->tx_done_idx != tx_done_idx) {
+		if (__builtin_expect((dev->tx_done_idx != tx_done_idx), 0)) {
 			dprintk("restart queue(%p)\n", dev);
 			netif_start_queue(&dev->net_dev);
 			goto again;
@@ -884,21 +953,22 @@
 
 	if (free_idx == dev->tx_intr_idx) {
 		do_intr = 1;
-		dev->tx_intr_idx = (dev->tx_intr_idx + NR_TX_DESC/2) % NR_TX_DESC;
+		dev->tx_intr_idx = (dev->tx_intr_idx + NR_TX_DESC*3/4 + 2) % NR_TX_DESC;
 	}
 
 	nr_free -= nr_frags;
-	if (nr_free < 1) {
+	if (__builtin_expect((nr_free < 1), 0)) {
 		dprintk("stop_queue - last entry(%p)\n", dev);
 		netif_stop_queue(&dev->net_dev);
 		stopped = 1;
 	}
 
 	frag = skb_shinfo(skb)->frags;
+	if (!nr_frags)
+		frag = 0;
 	extsts = 0;
 	if (skb->ip_summed == CHECKSUM_HW) {
 		extsts |= EXTSTS_IPPKT;
-
 		if (IPPROTO_TCP == skb->nh.iph->protocol)
 			extsts |= EXTSTS_TCPPKT;
 		else if (IPPROTO_UDP == skb->nh.iph->protocol)
@@ -906,41 +976,33 @@
 	}
 
 	len = skb->len;
+	if (nr_frags)
+		len -= skb->data_len;
 	buf = pci_map_single(dev->pci_dev, skb->data, len, PCI_DMA_TODEVICE);
 
-	first_desc = dev->tx_descs + (free_idx * DESC_SIZE);
-
 	for (;;) {
-		volatile u32 *desc = dev->tx_descs + (free_idx * DESC_SIZE);
-		u32 residue = 0;
-#if 0
-		if (len > MAX_FRAG_LEN) {
-			residue = len;
-			/* align the start address of the next fragment */
-			len = MAX_FRAG_LEN;
-			residue -= len;
-		}
-#endif
+		u32 *desc = tx_descs + (free_idx * DESC_SIZE);
+		//u32 *desc2 = tx_descs + ((free_idx + 2) * DESC_SIZE) % (NR_TX_DESC * DESC_SIZE);
+		//prefetch(desc2);
 
 		dprintk("frag[%3u]: %4u @ 0x%x%08x\n", free_idx, len,
 			dmaaddr_high(buf), dmaaddr_low(buf));
 		free_idx = (free_idx + 1) % NR_TX_DESC;
+		desc[DRV_0] = 0;
+		desc[DRV_1] = 0;
+		desc[DRV_2] = 0;
+		desc[DRV_SKB] = 0;
 		desc[LINK] = dev->tx_phy_descs + (free_idx * DESC_SIZE * 4);
 		desc[BUFPTR] = dmaaddr_low(buf);
 		desc[BUFPTR+1] = dmaaddr_high(buf);
 		desc[EXTSTS] = extsts;
 
-		cmdsts = ((nr_frags|residue) ? CMDSTS_MORE : do_intr ? CMDSTS_INTR : 0);
+		cmdsts = (nr_frags ? CMDSTS_MORE : do_intr ? CMDSTS_INTR : 0);
 		cmdsts |= (desc == first_desc) ? 0 : CMDSTS_OWN;
 		cmdsts |= len;
+		barrier();
 		desc[CMDSTS] = cmdsts;
 
-		if (residue) {
-			buf += len;
-			len = residue;
-			continue;
-		}
-
 		if (!nr_frags)
 			break;
 
@@ -953,101 +1015,121 @@
 		nr_frags--;
 	}
 	dprintk("done pkt\n");
-	dev->tx_skbs[free_idx] = skb;
-	first_desc[CMDSTS] |= CMDSTS_OWN;
+	*(struct sk_buff **)(first_desc + DRV_SKB) = skb;
+	*(volatile u32 *)&first_desc[CMDSTS] |= CMDSTS_OWN;
+	barrier();
 	dev->tx_free_idx = free_idx;
 	kick_tx(dev);
 
 	/* Check again: we may have raced with a tx done irq */
-	if (stopped && (dev->tx_done_idx != tx_done_idx) && start_tx_okay(dev))
+	if (stopped && start_tx_okay(dev))
 		netif_start_queue(&dev->net_dev);
-
+#if 0
+	if ((jiffies - dev->last_jiffies) > (HZ/100 + 1))
+		writel(0, dev->base + IHR);
+#endif
 	return 0;
 }
 
 static void ns83820_irq(int foo, void *data, struct pt_regs *regs)
 {
 	struct ns83820 *dev = data;
-	int count = 0;
+	//int count = 0;
+	unsigned tx_done_idx;
+	u32 *tx_descs;
 	u32 isr;
 	dprintk("ns83820_irq(%p)\n", dev);
 
-	dev->ihr = 0;
+	tx_descs = dev->tx_descs;
+	tx_done_idx = dev->tx_done_idx;
+	prefetch(tx_descs + tx_done_idx * DESC_SIZE);
+
+	isr = readl(dev->base + ISR);
+	if (__builtin_expect(!dev->up, 0))
+		return;
 
-	while (count++ < 32 && (isr = readl(dev->base + ISR))) {
+	//do
+	{
 		dprintk("irq: %08x\n", isr);
 
 		if (isr & ~(ISR_PHY | ISR_RXDESC | ISR_RXEARLY | ISR_RXOK | ISR_RXERR | ISR_TXIDLE | ISR_TXOK | ISR_TXDESC))
 			Dprintk("odd isr? 0x%08x\n", isr);
 
-	if ((ISR_RXEARLY | ISR_RXIDLE | ISR_RXORN | ISR_RXDESC | ISR_RXOK | ISR_RXERR) & isr) {
- 		if (ISR_RXIDLE & isr) {
-			dev->rx_info.idle = 1;
-			Dprintk("oh dear, we are idle\n");
-		}
-
-		if ((ISR_RXDESC) & isr) {
-			rx_irq(dev);
-			writel(3, dev->base + IHR);
-		}
-
-		if (nr_rx_empty(dev) >= NR_RX_DESC/4) {
-			if (dev->rx_info.up) {
-				rx_refill(dev, GFP_ATOMIC);
-				kick_rx(dev);
-			}
-		}
-
-		if (dev->rx_info.up && nr_rx_empty(dev) > NR_RX_DESC*3/4)
-			schedule_task(&dev->tq_refill);
-		else
-			kick_rx(dev);
-		if (dev->rx_info.idle)
-			Dprintk("BAD\n");
-	}
-
 	if (ISR_RXSOVR & isr)
 		Dprintk("overrun\n");
 	if (ISR_RXORN & isr)
 		Dprintk("overrun\n");
 
-	if ((ISR_RXRCMP & isr) && dev->rx_info.up)
+	if ((ISR_RXRCMP & isr) && dev->up)
 		writel(CR_RXE, dev->base + CR);
 
+	prefetch(&dev->rx_tasklet);
+	prefetch(dev->rx_descs + dev->next_rx * DESC_SIZE);
+	prefetch(dev->rx_descs + ((dev->next_rx + 1) % NR_RX_DESC) * DESC_SIZE);
+
 	if (ISR_TXIDLE & isr) {
 		u32 txdp;
 		txdp = readl(dev->base + TXDP);
 		dprintk("txdp: %08x\n", txdp);
 		txdp -= dev->tx_phy_descs;
 		dev->tx_idx = txdp / (DESC_SIZE * 4);
-		if (dev->tx_idx >= NR_TX_DESC) {
+		if (__builtin_expect((dev->tx_idx >= NR_TX_DESC), 0)) {
 			printk(KERN_ALERT "%s: BUG -- txdp out of range\n", dev->net_dev.name);
 			dev->tx_idx = 0;
 		}
-		if (dev->tx_idx != dev->tx_free_idx)
-			writel(CR_TXE, dev->base + CR);
-			//kick_tx(dev);
-		else
-			dev->tx_idle = 1;
-		mb();
-		if (dev->tx_idx != dev->tx_free_idx)
+		if (__builtin_expect((dev->tx_idx != dev->tx_free_idx), 0))
 			kick_tx(dev);
 	}
+		if ((ISR_TXDESC | ISR_TXIDLE) & isr) {
+			do_tx_done(dev);
+		}
 
-	/* Defer tx ring processing until more than a minimum amount of
-	 * work has accumulated
-	 */
-	if ((ISR_TXDESC | ISR_TXIDLE) & isr)
-		do_tx_done(dev);
+		if (__builtin_expect((ISR_PHY & isr), 0))
+			phy_intr(dev);
+	} //while (count++ < 1 && (isr = readl(dev->base + ISR))) ;
 
-	if (ISR_PHY & isr)
-		phy_intr(dev);
-	}
+	if ((/*ISR_RXEARLY |*/ ISR_RXIDLE | ISR_RXORN | ISR_RXDESC | /*ISR_RXOK |*/ ISR_RXERR) & isr) {
+ 		if (ISR_RXIDLE & isr) {
+			dev->rx_idle = 1;
+			Dprintk("oh dear, we are idle\n");
+			dev->ihr = 4;
+		}
 
-#if 0	/* Still working on the interrupt mitigation strategy */
-	if (dev->ihr)
-		writel(dev->ihr, dev->base + IHR);
+		if ((ISR_RXDESC) & isr) {
+#ifdef HAVE___NETIF_RX
+#warning will be fast...
+			;
+#else
+			rx_irq(dev);
+#endif
+#if 1	/* Still working on the interrupt mitigation strategy */
+			dev->ihr = 4;
 #endif
+		}
+		tasklet_schedule(&dev->rx_tasklet);
+		if (ISR_TXDESC & isr)
+			dev->ihr = 6;
+	}
+
+	{
+		int ihr = 0;
+		while ((jiffies - dev->last_jiffies) >= HZ/4) {
+			dev->last_jiffies += HZ/4;
+			dev->last_irqs >>= 1;
+		}
+		dev->last_irqs ++;
+{
+static long last_pr;
+if ((jiffies - last_pr) > 2*HZ) {
+	last_pr = jiffies;
+	printk("last_irqs = %d\n", dev->last_irqs);
+}
+}
+		if (dev->last_irqs > 256)
+			ihr = 5;
+		writel(ihr, dev->base + IHR);
+		dev->ihr = ihr;
+	}
 }
 
 static void ns83820_do_reset(struct ns83820 *dev, u32 which)
@@ -1071,9 +1153,14 @@
 	writel(0, dev->base + IER);
 	readl(dev->base + IER);
 
-	dev->rx_info.up = 0;
+	dev->up = 0;
 	synchronize_irq();
 
+	/* Once more, just in case an irq reenbled */
+	writel(0, dev->base + IMR);
+	writel(0, dev->base + IER);
+	readl(dev->base + IER);
+
 	ns83820_do_reset(dev, CR_RST);
 
 	synchronize_irq();
@@ -1115,7 +1202,6 @@
 
 //printk("IMR: %08x / %08x\n", readl(dev->base + IMR), dev->IMR_cache);
 
-	set_bit(0, &dev->tx_idle);
 	netif_start_queue(&dev->net_dev);	/* FIXME: wait for phy to come up */
 
 	return 0;
@@ -1169,8 +1255,7 @@
 	if (!dev)
 		goto out;
 
-	spin_lock_init(&dev->rx_info.lock);
-	spin_lock_init(&dev->tx_lock);
+	spin_lock_init(&dev->rx_lock);
 	spin_lock_init(&dev->misc_lock);
 	dev->pci_dev = pci_dev;
 
@@ -1179,6 +1264,7 @@
 	dev->net_dev.owner = THIS_MODULE;
 
 	PREPARE_TQUEUE(&dev->tq_refill, queue_refill, dev);
+	tasklet_init(&dev->rx_tasklet, rx_action, (unsigned long)dev);
 
 	err = pci_enable_device(pci_dev);
 	if (err) {
@@ -1191,14 +1277,14 @@
 	dev->base = ioremap_nocache(addr, PAGE_SIZE);
 	dev->tx_descs = pci_alloc_consistent(pci_dev,
 			4 * DESC_SIZE * NR_TX_DESC, &dev->tx_phy_descs);
-	dev->rx_info.descs = pci_alloc_consistent(pci_dev,
-			4 * DESC_SIZE * NR_RX_DESC, &dev->rx_info.phy_descs);
+	dev->rx_descs = pci_alloc_consistent(pci_dev,
+			4 * DESC_SIZE * NR_RX_DESC, &dev->rx_phy_descs);
 	err = -ENOMEM;
-	if (!dev->base || !dev->tx_descs || !dev->rx_info.descs)
+	if (!dev->base || !dev->tx_descs || !dev->rx_descs)
 		goto out_disable;
 
 	dprintk("%p: %08lx  %p: %08lx\n", dev->tx_descs, dev->tx_phy_descs,
-		dev->rx_info.descs, dev->rx_info.phy_descs);
+		dev->rx_descs, dev->rx_phy_descs);
 	/* disable interrupts */
 	writel(0, dev->base + IMR);
 	writel(0, dev->base + IER);
@@ -1206,8 +1292,7 @@
 
 	dev->IMR_cache = 0;
 
-	setup_ee_mem_bitbanger(&dev->ee, (long)dev->base + MEAR, 3, 2, 1, 0,
-		0);
+	setup_ee_mem_bitbanger(&dev->ee, (long)dev->base + MEAR, 3, 2, 1, 0, 0);
 
 	err = request_irq(pci_dev->irq, ns83820_irq, SA_SHIRQ,
 			  dev->net_dev.name, dev);
@@ -1274,7 +1359,7 @@
 #endif
 
 	writel(dev->CFG_cache, dev->base + CFG);
-	dprintk("CFG: %08x\n", dev->CFG_cache);
+	printk("CFG: %08x\n", dev->CFG_cache);
 
 	if (readl(dev->base + SRR))
 		writel(readl(dev->base+0x20c) | 0xfe00, dev->base + 0x20c);
@@ -1285,8 +1370,9 @@
 	 * If only the transmit fifo was larger...
 	 */
 	writel(TXCFG_CSI | TXCFG_HBI | TXCFG_ATP | TXCFG_MXDMA1024
-		| ((1600 / 32) * 0x100),
+		| ((256 / 32) * 0x100),
 		dev->base + TXCFG);
+	printk("TXCFG: %08x\n", readl(dev->base + TXCFG));
 
 	/* Flush the interrupt holdoff timer */
 	writel(0x000, dev->base + IHR);
@@ -1297,13 +1383,14 @@
 	 */
 	writel(RXCFG_AEP | RXCFG_ARP | RXCFG_AIRL | RXCFG_RX_FD
 		| RXCFG_ALP
-		| RXCFG_MXDMA | 0, dev->base + RXCFG);
+		| RXCFG_MXDMA | 63, dev->base + RXCFG);
+	printk("RXCFG: %08x\n", readl(dev->base + RXCFG));
 
 	/* Disable priority queueing */
 	writel(0, dev->base + PQCR);
 
 	/* Enable IP checksum validation and detetion of VLAN headers */
-	writel(VRCR_RUDPE | VRCR_RTCPE | VRCR_RIPE | VRCR_IPEN | VRCR_VTDEN, dev->base + VRCR);
+	writel(VRCR_IPEN | VRCR_VTDEN, dev->base + VRCR);
 
 	/* Enable per-packet TCP/UDP/IP checksumming */
 	writel(VTCR_PPCHK, dev->base + VTCR);
@@ -1340,7 +1427,7 @@
 	iounmap(dev->base);
 out_disable:
 	pci_free_consistent(pci_dev, 4 * DESC_SIZE * NR_TX_DESC, dev->tx_descs, dev->tx_phy_descs);
-	pci_free_consistent(pci_dev, 4 * DESC_SIZE * NR_RX_DESC, dev->rx_info.descs, dev->rx_info.phy_descs);
+	pci_free_consistent(pci_dev, 4 * DESC_SIZE * NR_RX_DESC, dev->rx_descs, dev->rx_phy_descs);
 	pci_disable_device(pci_dev);
 out_free:
 	kfree(dev);
@@ -1388,7 +1475,7 @@
 		pci_free_consistent(dev->pci_dev, 4 * DESC_SIZE * NR_TX_DESC,
 				dev->tx_descs, dev->tx_phy_descs);
 		pci_free_consistent(dev->pci_dev, 4 * DESC_SIZE * NR_RX_DESC,
-				dev->rx_info.descs, dev->rx_info.phy_descs);
+				dev->rx_descs, dev->rx_phy_descs);
 		pci_disable_device(dev->pci_dev);
 		kfree(dev);
 		dev = next;
@@ -1400,5 +1487,6 @@
 MODULE_AUTHOR("Benjamin LaHaise <bcrl@redhat.com>");
 MODULE_DESCRIPTION("National Semiconductor DP83820 10/100/1000 driver");
 MODULE_DEVICE_TABLE(pci, pci_device_id);
+//MODULE_LICENSE("GPL");
 module_init(ns83820_init);
 module_exit(ns83820_exit);
Only in work-2.4.9-ac2/drivers/net: ns83820.o
Only in work-2.4.9-ac2/drivers/net/pcmcia: .depend
Only in work-2.4.9-ac2/drivers/net: pcnet32.o
Only in work-2.4.9-ac2/drivers/net: setup.o
Only in work-2.4.9-ac2/drivers/net/sk98lin: .depend
Only in work-2.4.9-ac2/drivers/net/skfp: .depend
Only in work-2.4.9-ac2/drivers/net/tokenring: .depend
Only in work-2.4.9-ac2/drivers/net/tulip: .21142.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: .depend
Only in work-2.4.9-ac2/drivers/net/tulip: .eeprom.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: .interrupt.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: .media.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: .pnic.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: .timer.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: .tulip.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: .tulip_core.o.flags
Only in work-2.4.9-ac2/drivers/net/tulip: 21142.o
Only in work-2.4.9-ac2/drivers/net/tulip: eeprom.o
Only in work-2.4.9-ac2/drivers/net/tulip: interrupt.o
Only in work-2.4.9-ac2/drivers/net/tulip: media.o
Only in work-2.4.9-ac2/drivers/net/tulip: pnic.o
Only in work-2.4.9-ac2/drivers/net/tulip: timer.o
Only in work-2.4.9-ac2/drivers/net/tulip: tulip.o
Only in work-2.4.9-ac2/drivers/net/tulip: tulip_core.o
Only in work-2.4.9-ac2/drivers/net/wan: .depend
Only in work-2.4.9-ac2/drivers/net/wan/lmc: .depend
Only in work-2.4.9-ac2/drivers/net/wireless: .depend
Only in work-2.4.9-ac2/drivers/nubus: .depend
Only in work-2.4.9-ac2/drivers/parport: .depend
Only in work-2.4.9-ac2/drivers/parport: .driver.o.flags
Only in work-2.4.9-ac2/drivers/parport: driver.o
Only in work-2.4.9-ac2/drivers/pci: .compat.o.flags
Only in work-2.4.9-ac2/drivers/pci: .depend
Only in work-2.4.9-ac2/drivers/pci: .driver.o.flags
Only in work-2.4.9-ac2/drivers/pci: .names.o.flags
Only in work-2.4.9-ac2/drivers/pci: .pci.o.flags
Only in work-2.4.9-ac2/drivers/pci: .proc.o.flags
Only in work-2.4.9-ac2/drivers/pci: .quirks.o.flags
Only in work-2.4.9-ac2/drivers/pci: .setup-res.o.flags
Only in work-2.4.9-ac2/drivers/pci: classlist.h
Only in work-2.4.9-ac2/drivers/pci: compat.o
Only in work-2.4.9-ac2/drivers/pci: devlist.h
Only in work-2.4.9-ac2/drivers/pci: driver.o
Only in work-2.4.9-ac2/drivers/pci: gen-devlist
Only in work-2.4.9-ac2/drivers/pci: names.o
Only in work-2.4.9-ac2/drivers/pci: pci.o
Only in work-2.4.9-ac2/drivers/pci: proc.o
Only in work-2.4.9-ac2/drivers/pci: quirks.o
Only in work-2.4.9-ac2/drivers/pci: setup-res.o
Only in work-2.4.9-ac2/drivers/pcmcia: .depend
Only in work-2.4.9-ac2/drivers/pnp: .depend
Only in work-2.4.9-ac2/drivers/pnp: .isapnp.o.flags
Only in work-2.4.9-ac2/drivers/pnp: .isapnp_proc.o.flags
Only in work-2.4.9-ac2/drivers/pnp: .pnp.o.flags
Only in work-2.4.9-ac2/drivers/pnp: .quirks.o.flags
Only in work-2.4.9-ac2/drivers/pnp: isa-pnp.o
Only in work-2.4.9-ac2/drivers/pnp: isapnp.o
Only in work-2.4.9-ac2/drivers/pnp: isapnp_proc.o
Only in work-2.4.9-ac2/drivers/pnp: pnp.o
Only in work-2.4.9-ac2/drivers/pnp: quirks.o
Only in work-2.4.9-ac2/drivers/sbus: .depend
Only in work-2.4.9-ac2/drivers/sbus/audio: .depend
Only in work-2.4.9-ac2/drivers/sbus/char: .depend
Only in work-2.4.9-ac2/drivers/scsi: .aic7xxx_old.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .constants.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .depend
Only in work-2.4.9-ac2/drivers/scsi: .hosts.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_dma.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_error.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_ioctl.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_lib.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_merge.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_obsolete.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_proc.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_queue.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_scan.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsi_syms.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsicam.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .scsidrv.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .sd.o.flags
Only in work-2.4.9-ac2/drivers/scsi: .sg.o.flags
Only in work-2.4.9-ac2/drivers/scsi/aic7xxx: .depend
Only in work-2.4.9-ac2/drivers/scsi: aic7xxx_old.o
Only in work-2.4.9-ac2/drivers/scsi: constants.o
Only in work-2.4.9-ac2/drivers/scsi: hosts.o
Only in work-2.4.9-ac2/drivers/scsi: scsi.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_dma.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_error.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_ioctl.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_lib.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_merge.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_mod.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_obsolete.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_proc.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_queue.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_scan.o
Only in work-2.4.9-ac2/drivers/scsi: scsi_syms.o
Only in work-2.4.9-ac2/drivers/scsi: scsicam.o
Only in work-2.4.9-ac2/drivers/scsi: scsidrv.o
Only in work-2.4.9-ac2/drivers/scsi: sd.o
Only in work-2.4.9-ac2/drivers/scsi: sd_mod.o
Only in work-2.4.9-ac2/drivers/scsi: sg.o
Only in work-2.4.9-ac2/drivers/sgi: .depend
Only in work-2.4.9-ac2/drivers/sgi/char: .depend
Only in work-2.4.9-ac2/drivers/sound: .ac97_codec.o.flags
Only in work-2.4.9-ac2/drivers/sound: .depend
Only in work-2.4.9-ac2/drivers/sound: .es1371.o.flags
Only in work-2.4.9-ac2/drivers/sound: .sound_core.o.flags
Only in work-2.4.9-ac2/drivers/sound: .sound_firmware.o.flags
Only in work-2.4.9-ac2/drivers/sound: .sounddrivers.o.flags
Only in work-2.4.9-ac2/drivers/sound: ac97_codec.o
Only in work-2.4.9-ac2/drivers/sound/cs4281: .depend
Only in work-2.4.9-ac2/drivers/sound/dmasound: .depend
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .audio.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .cardmi.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .cardmo.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .cardwi.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .cardwo.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .depend
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .ecard.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .efxmgr.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .emu10k1.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .emuadxmg.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .hwaccess.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .irqmgr.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .main.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .midi.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .mixer.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .passthrough.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .recmgr.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .timer.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: .voicemgr.o.flags
Only in work-2.4.9-ac2/drivers/sound/emu10k1: audio.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: cardmi.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: cardmo.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: cardwi.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: cardwo.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: ecard.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: efxmgr.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: emu10k1.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: emuadxmg.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: hwaccess.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: irqmgr.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: main.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: midi.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: mixer.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: passthrough.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: recmgr.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: timer.o
Only in work-2.4.9-ac2/drivers/sound/emu10k1: voicemgr.o
Only in work-2.4.9-ac2/drivers/sound: es1371.o
Only in work-2.4.9-ac2/drivers/sound: sound_core.o
Only in work-2.4.9-ac2/drivers/sound: sound_firmware.o
Only in work-2.4.9-ac2/drivers/sound: soundcore.o
Only in work-2.4.9-ac2/drivers/sound: sounddrivers.o
Only in work-2.4.9-ac2/drivers/tc: .depend
Only in work-2.4.9-ac2/drivers/telephony: .depend
Only in work-2.4.9-ac2/drivers/usb: .depend
Only in work-2.4.9-ac2/drivers/usb: .hub.o.flags
Only in work-2.4.9-ac2/drivers/usb: .uhci.o.flags
Only in work-2.4.9-ac2/drivers/usb: .usb-debug.o.flags
Only in work-2.4.9-ac2/drivers/usb: .usb.o.flags
Only in work-2.4.9-ac2/drivers/usb: .usbdrv.o.flags
Only in work-2.4.9-ac2/drivers/usb: hub.o
Only in work-2.4.9-ac2/drivers/usb/serial: .depend
Only in work-2.4.9-ac2/drivers/usb/storage: .depend
Only in work-2.4.9-ac2/drivers/usb/storage: .dpcm.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: .freecom.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: .initializers.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: .protocol.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: .scsiglue.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: .storage.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: .transport.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: .usb.o.flags
Only in work-2.4.9-ac2/drivers/usb/storage: dpcm.o
Only in work-2.4.9-ac2/drivers/usb/storage: freecom.o
Only in work-2.4.9-ac2/drivers/usb/storage: initializers.o
Only in work-2.4.9-ac2/drivers/usb/storage: protocol.o
Only in work-2.4.9-ac2/drivers/usb/storage: scsiglue.o
Only in work-2.4.9-ac2/drivers/usb/storage: storage.o
Only in work-2.4.9-ac2/drivers/usb/storage: transport.o
Only in work-2.4.9-ac2/drivers/usb/storage: usb-storage.o
Only in work-2.4.9-ac2/drivers/usb/storage: usb.o
Only in work-2.4.9-ac2/drivers/usb: uhci.o
Only in work-2.4.9-ac2/drivers/usb: usb-debug.o
Only in work-2.4.9-ac2/drivers/usb: usb.o
Only in work-2.4.9-ac2/drivers/usb: usbcore.o
Only in work-2.4.9-ac2/drivers/usb: usbdrv.o
Only in work-2.4.9-ac2/drivers/video: .depend
Only in work-2.4.9-ac2/drivers/video: .vgacon.o.flags
Only in work-2.4.9-ac2/drivers/video: .video.o.flags
Only in work-2.4.9-ac2/drivers/video/aty: .depend
Only in work-2.4.9-ac2/drivers/video/matrox: .depend
Only in work-2.4.9-ac2/drivers/video/riva: .depend
Only in work-2.4.9-ac2/drivers/video/sis: .depend
Only in work-2.4.9-ac2/drivers/video: vgacon.o
Only in work-2.4.9-ac2/drivers/video: video.o
Only in work-2.4.9-ac2/drivers/zorro: .depend
Only in work-2.4.9-ac2/fs: .attr.o.flags
Only in work-2.4.9-ac2/fs: .bad_inode.o.flags
Only in work-2.4.9-ac2/fs: .binfmt_aout.o.flags
Only in work-2.4.9-ac2/fs: .binfmt_elf.o.flags
Only in work-2.4.9-ac2/fs: .binfmt_misc.o.flags
Only in work-2.4.9-ac2/fs: .binfmt_script.o.flags
Only in work-2.4.9-ac2/fs: .block_dev.o.flags
Only in work-2.4.9-ac2/fs: .buffer.o.flags
Only in work-2.4.9-ac2/fs: .char_dev.o.flags
Only in work-2.4.9-ac2/fs: .dcache.o.flags
Only in work-2.4.9-ac2/fs: .depend
Only in work-2.4.9-ac2/fs: .devices.o.flags
Only in work-2.4.9-ac2/fs: .dnotify.o.flags
Only in work-2.4.9-ac2/fs: .exec.o.flags
Only in work-2.4.9-ac2/fs: .fcntl.o.flags
Only in work-2.4.9-ac2/fs: .fifo.o.flags
Only in work-2.4.9-ac2/fs: .file.o.flags
Only in work-2.4.9-ac2/fs: .file_table.o.flags
Only in work-2.4.9-ac2/fs: .filesystems.o.flags
Only in work-2.4.9-ac2/fs: .fs.o.flags
Only in work-2.4.9-ac2/fs: .inode.o.flags
Only in work-2.4.9-ac2/fs: .iobuf.o.flags
Only in work-2.4.9-ac2/fs: .ioctl.o.flags
Only in work-2.4.9-ac2/fs: .jbd-kernel.o.flags
Only in work-2.4.9-ac2/fs: .locks.o.flags
Only in work-2.4.9-ac2/fs: .namei.o.flags
Only in work-2.4.9-ac2/fs: .namespace.o.flags
Only in work-2.4.9-ac2/fs: .noquot.o.flags
Only in work-2.4.9-ac2/fs: .open.o.flags
Only in work-2.4.9-ac2/fs: .pipe.o.flags
Only in work-2.4.9-ac2/fs: .read_write.o.flags
Only in work-2.4.9-ac2/fs: .readdir.o.flags
Only in work-2.4.9-ac2/fs: .select.o.flags
Only in work-2.4.9-ac2/fs: .stat.o.flags
Only in work-2.4.9-ac2/fs: .super.o.flags
Only in work-2.4.9-ac2/fs/adfs: .depend
Only in work-2.4.9-ac2/fs/affs: .depend
Only in work-2.4.9-ac2/fs: attr.o
Only in work-2.4.9-ac2/fs/autofs: .depend
Only in work-2.4.9-ac2/fs/autofs4: .autofs4.o.flags
Only in work-2.4.9-ac2/fs/autofs4: .depend
Only in work-2.4.9-ac2/fs/autofs4: .expire.o.flags
Only in work-2.4.9-ac2/fs/autofs4: .init.o.flags
Only in work-2.4.9-ac2/fs/autofs4: .inode.o.flags
Only in work-2.4.9-ac2/fs/autofs4: .root.o.flags
Only in work-2.4.9-ac2/fs/autofs4: .symlink.o.flags
Only in work-2.4.9-ac2/fs/autofs4: .waitq.o.flags
Only in work-2.4.9-ac2/fs/autofs4: autofs4.o
Only in work-2.4.9-ac2/fs/autofs4: expire.o
Only in work-2.4.9-ac2/fs/autofs4: init.o
Only in work-2.4.9-ac2/fs/autofs4: inode.o
Only in work-2.4.9-ac2/fs/autofs4: root.o
Only in work-2.4.9-ac2/fs/autofs4: symlink.o
Only in work-2.4.9-ac2/fs/autofs4: waitq.o
Only in work-2.4.9-ac2/fs: bad_inode.o
Only in work-2.4.9-ac2/fs/bfs: .depend
Only in work-2.4.9-ac2/fs: binfmt_aout.o
Only in work-2.4.9-ac2/fs: binfmt_elf.o
Only in work-2.4.9-ac2/fs: binfmt_misc.o
Only in work-2.4.9-ac2/fs: binfmt_script.o
Only in work-2.4.9-ac2/fs: block_dev.o
Only in work-2.4.9-ac2/fs: buffer.o
Only in work-2.4.9-ac2/fs: char_dev.o
Only in work-2.4.9-ac2/fs/cmsfs: .depend
Only in work-2.4.9-ac2/fs/coda: .depend
Only in work-2.4.9-ac2/fs/cramfs: .depend
Only in work-2.4.9-ac2/fs: dcache.o
Only in work-2.4.9-ac2/fs/devfs: .depend
Only in work-2.4.9-ac2/fs: devices.o
Only in work-2.4.9-ac2/fs/devpts: .depend
Only in work-2.4.9-ac2/fs/devpts: .devpts.o.flags
Only in work-2.4.9-ac2/fs/devpts: .inode.o.flags
Only in work-2.4.9-ac2/fs/devpts: .root.o.flags
Only in work-2.4.9-ac2/fs/devpts: devpts.o
Only in work-2.4.9-ac2/fs/devpts: inode.o
Only in work-2.4.9-ac2/fs/devpts: root.o
Only in work-2.4.9-ac2/fs: dnotify.o
Only in work-2.4.9-ac2/fs/efs: .depend
Only in work-2.4.9-ac2/fs: exec.o
Only in work-2.4.9-ac2/fs/ext2: .acl.o.flags
Only in work-2.4.9-ac2/fs/ext2: .balloc.o.flags
Only in work-2.4.9-ac2/fs/ext2: .bitmap.o.flags
Only in work-2.4.9-ac2/fs/ext2: .depend
Only in work-2.4.9-ac2/fs/ext2: .dir.o.flags
Only in work-2.4.9-ac2/fs/ext2: .ext2.o.flags
Only in work-2.4.9-ac2/fs/ext2: .file.o.flags
Only in work-2.4.9-ac2/fs/ext2: .fsync.o.flags
Only in work-2.4.9-ac2/fs/ext2: .ialloc.o.flags
Only in work-2.4.9-ac2/fs/ext2: .inode.o.flags
Only in work-2.4.9-ac2/fs/ext2: .ioctl.o.flags
Only in work-2.4.9-ac2/fs/ext2: .namei.o.flags
Only in work-2.4.9-ac2/fs/ext2: .super.o.flags
Only in work-2.4.9-ac2/fs/ext2: .symlink.o.flags
Only in work-2.4.9-ac2/fs/ext2: acl.o
Only in work-2.4.9-ac2/fs/ext2: balloc.o
Only in work-2.4.9-ac2/fs/ext2: bitmap.o
Only in work-2.4.9-ac2/fs/ext2: dir.o
Only in work-2.4.9-ac2/fs/ext2: ext2.o
Only in work-2.4.9-ac2/fs/ext2: file.o
Only in work-2.4.9-ac2/fs/ext2: fsync.o
Only in work-2.4.9-ac2/fs/ext2: ialloc.o
Only in work-2.4.9-ac2/fs/ext2: inode.o
Only in work-2.4.9-ac2/fs/ext2: ioctl.o
Only in work-2.4.9-ac2/fs/ext2: namei.o
Only in work-2.4.9-ac2/fs/ext2: super.o
Only in work-2.4.9-ac2/fs/ext2: symlink.o
Only in work-2.4.9-ac2/fs/ext3: .depend
Only in work-2.4.9-ac2/fs/fat: .depend
Only in work-2.4.9-ac2/fs: fcntl.o
Only in work-2.4.9-ac2/fs: fifo.o
Only in work-2.4.9-ac2/fs: file.o
Only in work-2.4.9-ac2/fs: file_table.o
Only in work-2.4.9-ac2/fs: filesystems.o
Only in work-2.4.9-ac2/fs/freevxfs: .depend
Only in work-2.4.9-ac2/fs: fs.o
Only in work-2.4.9-ac2/fs/hfs: .depend
Only in work-2.4.9-ac2/fs/hpfs: .depend
Only in work-2.4.9-ac2/fs: inode.o
Only in work-2.4.9-ac2/fs/intermezzo: .depend
Only in work-2.4.9-ac2/fs: iobuf.o
Only in work-2.4.9-ac2/fs: ioctl.o
Only in work-2.4.9-ac2/fs/isofs: .depend
Only in work-2.4.9-ac2/fs/isofs: .dir.o.flags
Only in work-2.4.9-ac2/fs/isofs: .inode.o.flags
Only in work-2.4.9-ac2/fs/isofs: .isofs.o.flags
Only in work-2.4.9-ac2/fs/isofs: .joliet.o.flags
Only in work-2.4.9-ac2/fs/isofs: .namei.o.flags
Only in work-2.4.9-ac2/fs/isofs: .rock.o.flags
Only in work-2.4.9-ac2/fs/isofs: .util.o.flags
Only in work-2.4.9-ac2/fs/isofs: dir.o
Only in work-2.4.9-ac2/fs/isofs: inode.o
Only in work-2.4.9-ac2/fs/isofs: isofs.o
Only in work-2.4.9-ac2/fs/isofs: joliet.o
Only in work-2.4.9-ac2/fs/isofs: namei.o
Only in work-2.4.9-ac2/fs/isofs: rock.o
Only in work-2.4.9-ac2/fs/isofs: util.o
Only in work-2.4.9-ac2/fs/jbd: .depend
Only in work-2.4.9-ac2/fs: jbd-kernel.o
Only in work-2.4.9-ac2/fs/jffs: .depend
Only in work-2.4.9-ac2/fs/jffs2: .depend
Only in work-2.4.9-ac2/fs/lockd: .clntlock.o.flags
Only in work-2.4.9-ac2/fs/lockd: .clntproc.o.flags
Only in work-2.4.9-ac2/fs/lockd: .depend
Only in work-2.4.9-ac2/fs/lockd: .host.o.flags
Only in work-2.4.9-ac2/fs/lockd: .lockd.o.flags
Only in work-2.4.9-ac2/fs/lockd: .lockd_syms.o.flags
Only in work-2.4.9-ac2/fs/lockd: .mon.o.flags
Only in work-2.4.9-ac2/fs/lockd: .svc.o.flags
Only in work-2.4.9-ac2/fs/lockd: .svc4proc.o.flags
Only in work-2.4.9-ac2/fs/lockd: .svclock.o.flags
Only in work-2.4.9-ac2/fs/lockd: .svcproc.o.flags
Only in work-2.4.9-ac2/fs/lockd: .svcshare.o.flags
Only in work-2.4.9-ac2/fs/lockd: .svcsubs.o.flags
Only in work-2.4.9-ac2/fs/lockd: .xdr.o.flags
Only in work-2.4.9-ac2/fs/lockd: .xdr4.o.flags
Only in work-2.4.9-ac2/fs/lockd: clntlock.o
Only in work-2.4.9-ac2/fs/lockd: clntproc.o
Only in work-2.4.9-ac2/fs/lockd: host.o
Only in work-2.4.9-ac2/fs/lockd: lockd.o
Only in work-2.4.9-ac2/fs/lockd: lockd_syms.o
Only in work-2.4.9-ac2/fs/lockd: mon.o
Only in work-2.4.9-ac2/fs/lockd: svc.o
Only in work-2.4.9-ac2/fs/lockd: svc4proc.o
Only in work-2.4.9-ac2/fs/lockd: svclock.o
Only in work-2.4.9-ac2/fs/lockd: svcproc.o
Only in work-2.4.9-ac2/fs/lockd: svcshare.o
Only in work-2.4.9-ac2/fs/lockd: svcsubs.o
Only in work-2.4.9-ac2/fs/lockd: xdr.o
Only in work-2.4.9-ac2/fs/lockd: xdr4.o
Only in work-2.4.9-ac2/fs: locks.o
Only in work-2.4.9-ac2/fs/minix: .depend
Only in work-2.4.9-ac2/fs/msdos: .depend
Only in work-2.4.9-ac2/fs: namei.o
Only in work-2.4.9-ac2/fs: namespace.o
Only in work-2.4.9-ac2/fs/ncpfs: .depend
Only in work-2.4.9-ac2/fs/nfs: .depend
Only in work-2.4.9-ac2/fs/nfs: .dir.o.flags
Only in work-2.4.9-ac2/fs/nfs: .file.o.flags
Only in work-2.4.9-ac2/fs/nfs: .flushd.o.flags
Only in work-2.4.9-ac2/fs/nfs: .inode.o.flags
Only in work-2.4.9-ac2/fs/nfs: .nfs.o.flags
Only in work-2.4.9-ac2/fs/nfs: .nfs2xdr.o.flags
Only in work-2.4.9-ac2/fs/nfs: .nfs3proc.o.flags
Only in work-2.4.9-ac2/fs/nfs: .nfs3xdr.o.flags
Only in work-2.4.9-ac2/fs/nfs: .proc.o.flags
Only in work-2.4.9-ac2/fs/nfs: .read.o.flags
Only in work-2.4.9-ac2/fs/nfs: .symlink.o.flags
Only in work-2.4.9-ac2/fs/nfs: .unlink.o.flags
Only in work-2.4.9-ac2/fs/nfs: .write.o.flags
Only in work-2.4.9-ac2/fs/nfs: dir.o
Only in work-2.4.9-ac2/fs/nfs: file.o
Only in work-2.4.9-ac2/fs/nfs: flushd.o
Only in work-2.4.9-ac2/fs/nfs: inode.o
Only in work-2.4.9-ac2/fs/nfs: nfs.o
Only in work-2.4.9-ac2/fs/nfs: nfs2xdr.o
Only in work-2.4.9-ac2/fs/nfs: nfs3proc.o
Only in work-2.4.9-ac2/fs/nfs: nfs3xdr.o
Only in work-2.4.9-ac2/fs/nfs: proc.o
Only in work-2.4.9-ac2/fs/nfs: read.o
Only in work-2.4.9-ac2/fs/nfs: symlink.o
Only in work-2.4.9-ac2/fs/nfs: unlink.o
Only in work-2.4.9-ac2/fs/nfs: write.o
Only in work-2.4.9-ac2/fs/nfsd: .auth.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .depend
Only in work-2.4.9-ac2/fs/nfsd: .export.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .lockd.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfs3proc.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfs3xdr.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfscache.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfsctl.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfsd.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfsfh.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfsproc.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfssvc.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .nfsxdr.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .stats.o.flags
Only in work-2.4.9-ac2/fs/nfsd: .vfs.o.flags
Only in work-2.4.9-ac2/fs/nfsd: auth.o
Only in work-2.4.9-ac2/fs/nfsd: export.o
Only in work-2.4.9-ac2/fs/nfsd: lockd.o
Only in work-2.4.9-ac2/fs/nfsd: nfs3proc.o
Only in work-2.4.9-ac2/fs/nfsd: nfs3xdr.o
Only in work-2.4.9-ac2/fs/nfsd: nfscache.o
Only in work-2.4.9-ac2/fs/nfsd: nfsctl.o
Only in work-2.4.9-ac2/fs/nfsd: nfsd.o
Only in work-2.4.9-ac2/fs/nfsd: nfsfh.o
Only in work-2.4.9-ac2/fs/nfsd: nfsproc.o
Only in work-2.4.9-ac2/fs/nfsd: nfssvc.o
Only in work-2.4.9-ac2/fs/nfsd: nfsxdr.o
Only in work-2.4.9-ac2/fs/nfsd: stats.o
Only in work-2.4.9-ac2/fs/nfsd: vfs.o
Only in work-2.4.9-ac2/fs/nls: .depend
Only in work-2.4.9-ac2/fs/nls: .nls.o.flags
Only in work-2.4.9-ac2/fs/nls: .nls_base.o.flags
Only in work-2.4.9-ac2/fs/nls: nls.o
Only in work-2.4.9-ac2/fs/nls: nls_base.o
Only in work-2.4.9-ac2/fs: noquot.o
Only in work-2.4.9-ac2/fs/ntfs: .depend
Only in work-2.4.9-ac2/fs: open.o
Only in work-2.4.9-ac2/fs/openpromfs: .depend
Only in work-2.4.9-ac2/fs/partitions: .check.o.flags
Only in work-2.4.9-ac2/fs/partitions: .depend
Only in work-2.4.9-ac2/fs/partitions: .msdos.o.flags
Only in work-2.4.9-ac2/fs/partitions: .partitions.o.flags
Only in work-2.4.9-ac2/fs/partitions: check.o
Only in work-2.4.9-ac2/fs/partitions: msdos.o
Only in work-2.4.9-ac2/fs/partitions: partitions.o
Only in work-2.4.9-ac2/fs: pipe.o
Only in work-2.4.9-ac2/fs/proc: .array.o.flags
Only in work-2.4.9-ac2/fs/proc: .base.o.flags
Only in work-2.4.9-ac2/fs/proc: .depend
Only in work-2.4.9-ac2/fs/proc: .generic.o.flags
Only in work-2.4.9-ac2/fs/proc: .inode.o.flags
Only in work-2.4.9-ac2/fs/proc: .kcore.o.flags
Only in work-2.4.9-ac2/fs/proc: .kmsg.o.flags
Only in work-2.4.9-ac2/fs/proc: .proc.o.flags
Only in work-2.4.9-ac2/fs/proc: .proc_misc.o.flags
Only in work-2.4.9-ac2/fs/proc: .proc_tty.o.flags
Only in work-2.4.9-ac2/fs/proc: .root.o.flags
Only in work-2.4.9-ac2/fs/proc: array.o
Only in work-2.4.9-ac2/fs/proc: base.o
Only in work-2.4.9-ac2/fs/proc: generic.o
Only in work-2.4.9-ac2/fs/proc: inode.o
Only in work-2.4.9-ac2/fs/proc: kcore.o
Only in work-2.4.9-ac2/fs/proc: kmsg.o
Only in work-2.4.9-ac2/fs/proc: proc.o
Only in work-2.4.9-ac2/fs/proc: proc_misc.o
Only in work-2.4.9-ac2/fs/proc: proc_tty.o
Only in work-2.4.9-ac2/fs/proc: root.o
Only in work-2.4.9-ac2/fs/qnx4: .depend
Only in work-2.4.9-ac2/fs/ramfs: .depend
Only in work-2.4.9-ac2/fs: read_write.o
Only in work-2.4.9-ac2/fs: readdir.o
Only in work-2.4.9-ac2/fs/reiserfs: .depend
Only in work-2.4.9-ac2/fs/romfs: .depend
Only in work-2.4.9-ac2/fs: select.o
Only in work-2.4.9-ac2/fs/smbfs: .depend
Only in work-2.4.9-ac2/fs: stat.o
Only in work-2.4.9-ac2/fs: super.o
Only in work-2.4.9-ac2/fs/sysv: .depend
Only in work-2.4.9-ac2/fs/udf: .depend
Only in work-2.4.9-ac2/fs/ufs: .depend
Only in work-2.4.9-ac2/fs/umsdos: .depend
Only in work-2.4.9-ac2/fs/vfat: .depend
Only in work-2.4.9-ac2/include: asm
diff -ur /md0/kernels/2.4/v2.4.9-ac2/include/asm-i386/param.h work-2.4.9-ac2/include/asm-i386/param.h
--- /md0/kernels/2.4/v2.4.9-ac2/include/asm-i386/param.h	Fri Oct 27 14:04:43 2000
+++ work-2.4.9-ac2/include/asm-i386/param.h	Tue Aug 28 17:09:15 2001
@@ -2,7 +2,8 @@
 #define _ASMi386_PARAM_H
 
 #ifndef HZ
-#define HZ 100
+//#define HZ 100
+#define HZ 1024
 #endif
 
 #define EXEC_PAGESIZE	4096
diff -ur /md0/kernels/2.4/v2.4.9-ac2/include/asm-i386/pci.h work-2.4.9-ac2/include/asm-i386/pci.h
--- /md0/kernels/2.4/v2.4.9-ac2/include/asm-i386/pci.h	Tue Aug 28 17:54:45 2001
+++ work-2.4.9-ac2/include/asm-i386/pci.h	Mon Sep 10 20:05:31 2001
@@ -64,7 +64,7 @@
 static inline dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr,
 					size_t size, int direction)
 {
-	if (direction == PCI_DMA_NONE)
+	if (__builtin_expect((direction == PCI_DMA_NONE), 0))
 		BUG();
 	flush_write_buffers();
 	return virt_to_bus(ptr);
@@ -80,7 +80,7 @@
 static inline void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr,
 				    size_t size, int direction)
 {
-	if (direction == PCI_DMA_NONE)
+	if (__builtin_expect((direction == PCI_DMA_NONE), 0))
 		BUG();
 	/* Nothing to do */
 }
@@ -103,7 +103,7 @@
 static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
 			     int nents, int direction)
 {
-	if (direction == PCI_DMA_NONE)
+	if (__builtin_expect((direction == PCI_DMA_NONE), 0))
 		BUG();
 	flush_write_buffers();
 	return nents;
@@ -116,7 +116,7 @@
 static inline void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg,
 				int nents, int direction)
 {
-	if (direction == PCI_DMA_NONE)
+	if (__builtin_expect((direction == PCI_DMA_NONE), 0))
 		BUG();
 	/* Nothing to do */
 }
@@ -134,7 +134,7 @@
 				       dma_addr_t dma_handle,
 				       size_t size, int direction)
 {
-	if (direction == PCI_DMA_NONE)
+	if (__builtin_expect((direction == PCI_DMA_NONE), 0))
 		BUG();
 	flush_write_buffers();
 }
@@ -149,7 +149,7 @@
 				   struct scatterlist *sg,
 				   int nelems, int direction)
 {
-	if (direction == PCI_DMA_NONE)
+	if (__builtin_expect((direction == PCI_DMA_NONE), 0))
 		BUG();
 	flush_write_buffers();
 }
diff -ur /md0/kernels/2.4/v2.4.9-ac2/include/asm-i386/processor.h work-2.4.9-ac2/include/asm-i386/processor.h
--- /md0/kernels/2.4/v2.4.9-ac2/include/asm-i386/processor.h	Tue Aug 28 14:41:57 2001
+++ work-2.4.9-ac2/include/asm-i386/processor.h	Mon Sep 10 19:59:58 2001
@@ -483,9 +483,19 @@
 #ifdef 	CONFIG_MPENTIUMIII
 
 #define ARCH_HAS_PREFETCH
+extern inline void prefetchnta(const void *x)
+{
+	__asm__ __volatile__ ("prefetchnta (%0)" :: "r"(x));
+}
+
 extern inline void prefetch(const void *x)
 {
-	__asm__ __volatile__ ("prefetchnta (%0)" : : "r"(x));
+	__asm__ __volatile__ ("prefetcht0 (%0)" :: "r"(x));
+}
+
+extern inline void prefetcht1(const void *x)
+{
+	__asm__ __volatile__ ("prefetcht0 (%0)" :: "r"(x));
 }
 
 #elif CONFIG_X86_USE_3DNOW
@@ -494,14 +504,14 @@
 #define ARCH_HAS_PREFETCHW
 #define ARCH_HAS_SPINLOCK_PREFETCH
 
-extern inline void prefetch(const void *x)
+extern inline void prefetch(void *x)
 {
-	 __asm__ __volatile__ ("prefetch (%0)" : : "r"(x));
+	 __asm__ __volatile__ ("prefetch (%0)" :: "r"(x));
 }
 
-extern inline void prefetchw(const void *x)
+extern inline void prefetchw(void *x)
 {
-	 __asm__ __volatile__ ("prefetchw (%0)" : : "r"(x));
+	 __asm__ __volatile__ ("prefetchw (%0)" ::"r"(x));
 }
 #define spin_lock_prefetch(x)	prefetchw(x)
 
Only in work-2.4.9-ac2/include: config
Only in work-2.4.9-ac2/include/linux: autoconf.h
Only in work-2.4.9-ac2/include/linux: compile.h
diff -ur /md0/kernels/2.4/v2.4.9-ac2/include/linux/etherdevice.h work-2.4.9-ac2/include/linux/etherdevice.h
--- /md0/kernels/2.4/v2.4.9-ac2/include/linux/etherdevice.h	Wed Aug 29 21:54:18 2001
+++ work-2.4.9-ac2/include/linux/etherdevice.h	Wed Aug 29 23:12:41 2001
@@ -31,7 +31,7 @@
 				   unsigned short type, void *daddr,
 				   void *saddr, unsigned len);
 extern int		eth_rebuild_header(struct sk_buff *skb);
-extern unsigned short	eth_type_trans(struct sk_buff *skb, struct net_device *dev);
+extern unsigned short	FASTCALL(eth_type_trans(struct sk_buff *skb, struct net_device *dev));
 extern void		eth_header_cache_update(struct hh_cache *hh, struct net_device *dev,
 						unsigned char * haddr);
 extern int		eth_header_cache(struct neighbour *neigh,
Only in work-2.4.9-ac2/include/linux: modules
Only in work-2.4.9-ac2/include/linux: modversions.h
diff -ur /md0/kernels/2.4/v2.4.9-ac2/include/linux/netdevice.h work-2.4.9-ac2/include/linux/netdevice.h
--- /md0/kernels/2.4/v2.4.9-ac2/include/linux/netdevice.h	Mon Sep 24 16:11:47 2001
+++ work-2.4.9-ac2/include/linux/netdevice.h	Mon Sep 10 20:03:44 2001
@@ -554,6 +554,8 @@
 extern void		net_call_rx_atomic(void (*fn)(void));
 #define HAVE_NETIF_RX 1
 extern int		netif_rx(struct sk_buff *skb);
+#define HAVE___NETIF_RX	1
+extern void FASTCALL(__netif_rx(struct net_device *rx_dev, struct sk_buff *skb));
 extern int		dev_ioctl(unsigned int cmd, void *);
 extern int		dev_change_flags(struct net_device *, unsigned);
 extern void		dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev);
diff -ur /md0/kernels/2.4/v2.4.9-ac2/include/linux/skbuff.h work-2.4.9-ac2/include/linux/skbuff.h
--- /md0/kernels/2.4/v2.4.9-ac2/include/linux/skbuff.h	Tue Aug 28 17:54:37 2001
+++ work-2.4.9-ac2/include/linux/skbuff.h	Mon Sep 10 20:03:44 2001
@@ -754,9 +754,9 @@
 	return skb->len - skb->data_len;
 }
 
-#define SKB_PAGE_ASSERT(skb) do { if (skb_shinfo(skb)->nr_frags) BUG(); } while (0)
-#define SKB_FRAG_ASSERT(skb) do { if (skb_shinfo(skb)->frag_list) BUG(); } while (0)
-#define SKB_LINEAR_ASSERT(skb) do { if (skb_is_nonlinear(skb)) BUG(); } while (0)
+#define SKB_PAGE_ASSERT(skb) do { if (__builtin_expect((skb_shinfo(skb)->nr_frags), 0)) BUG(); } while (0)
+#define SKB_FRAG_ASSERT(skb) do { if (__builtin_expect((skb_shinfo(skb)->frag_list), 0)) BUG(); } while (0)
+#define SKB_LINEAR_ASSERT(skb) do { if (__builtin_expect(skb_is_nonlinear(skb), 0)) BUG(); } while (0)
 
 /*
  *	Add data to an sk_buff
@@ -784,12 +784,11 @@
 static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
 {
 	unsigned char *tmp=skb->tail;
-	SKB_LINEAR_ASSERT(skb);
+	//SKB_LINEAR_ASSERT(skb);
 	skb->tail+=len;
 	skb->len+=len;
-	if(skb->tail>skb->end) {
-		skb_over_panic(skb, len, current_text_addr());
-	}
+	//if (__builtin_expect((skb->tail > skb->end), 0))
+	//	skb_over_panic(skb, len, current_text_addr());
 	return tmp;
 }
 
@@ -814,7 +813,7 @@
 {
 	skb->data-=len;
 	skb->len+=len;
-	if(skb->data<skb->head) {
+	if (__builtin_expect((skb->data < skb->head), 0)) {
 		skb_under_panic(skb, len, current_text_addr());
 	}
 	return skb->data;
@@ -823,7 +822,7 @@
 static inline char *__skb_pull(struct sk_buff *skb, unsigned int len)
 {
 	skb->len-=len;
-	if (skb->len < skb->data_len)
+	if (__builtin_expect((skb->len < skb->data_len), 0))
 		BUG();
 	return 	skb->data+=len;
 }
@@ -841,7 +840,7 @@
 
 static inline unsigned char * skb_pull(struct sk_buff *skb, unsigned int len)
 {	
-	if (len > skb->len)
+	if (__builtin_expect((len > skb->len), 0))
 		return NULL;
 	return __skb_pull(skb,len);
 }
@@ -850,8 +849,8 @@
 
 static inline char *__pskb_pull(struct sk_buff *skb, unsigned int len)
 {
-	if (len > skb_headlen(skb) &&
-	    __pskb_pull_tail(skb, len-skb_headlen(skb)) == NULL)
+	if (__builtin_expect((len > skb_headlen(skb) &&
+	    __pskb_pull_tail(skb, len-skb_headlen(skb)) == NULL), 0))
 		return NULL;
 	skb->len -= len;
 	return 	skb->data += len;
@@ -859,7 +858,7 @@
 
 static inline unsigned char * pskb_pull(struct sk_buff *skb, unsigned int len)
 {	
-	if (len > skb->len)
+	if (__builtin_expect((len > skb->len), 0))
 		return NULL;
 	return __pskb_pull(skb,len);
 }
@@ -1091,7 +1090,7 @@
 static inline void *kmap_skb_frag(const skb_frag_t *frag)
 {
 #ifdef CONFIG_HIGHMEM
-	if (in_irq())
+	if (__builtin_expect(in_irq(), 0))
 		BUG();
 
 	local_bh_disable();
Only in work-2.4.9-ac2/include/linux: version.h
diff -ur /md0/kernels/2.4/v2.4.9-ac2/include/net/tcp.h work-2.4.9-ac2/include/net/tcp.h
--- /md0/kernels/2.4/v2.4.9-ac2/include/net/tcp.h	Tue Aug 28 17:12:25 2001
+++ work-2.4.9-ac2/include/net/tcp.h	Mon Sep 10 20:05:05 2001
@@ -1317,7 +1317,6 @@
 static __inline__ int tcp_prequeue(struct sock *sk, struct sk_buff *skb)
 {
 	struct tcp_opt *tp = &sk->tp_pinfo.af_tcp;
-
 	if (tp->ucopy.task) {
 		__skb_queue_tail(&tp->ucopy.prequeue, skb);
 		tp->ucopy.memory += skb->truesize;
Only in work-2.4.9-ac2/init: main.o
Only in work-2.4.9-ac2/init: version.o
Only in work-2.4.9-ac2/ipc: .depend
Only in work-2.4.9-ac2/ipc: .ipc.o.flags
Only in work-2.4.9-ac2/ipc: .msg.o.flags
Only in work-2.4.9-ac2/ipc: .sem.o.flags
Only in work-2.4.9-ac2/ipc: .shm.o.flags
Only in work-2.4.9-ac2/ipc: .util.o.flags
Only in work-2.4.9-ac2/ipc: ipc.o
Only in work-2.4.9-ac2/ipc: msg.o
Only in work-2.4.9-ac2/ipc: sem.o
Only in work-2.4.9-ac2/ipc: shm.o
Only in work-2.4.9-ac2/ipc: util.o
Only in work-2.4.9-ac2/kernel: .acct.o.flags
Only in work-2.4.9-ac2/kernel: .capability.o.flags
Only in work-2.4.9-ac2/kernel: .context.o.flags
Only in work-2.4.9-ac2/kernel: .depend
Only in work-2.4.9-ac2/kernel: .dma.o.flags
Only in work-2.4.9-ac2/kernel: .exec_domain.o.flags
Only in work-2.4.9-ac2/kernel: .exit.o.flags
Only in work-2.4.9-ac2/kernel: .fork.o.flags
Only in work-2.4.9-ac2/kernel: .info.o.flags
Only in work-2.4.9-ac2/kernel: .itimer.o.flags
Only in work-2.4.9-ac2/kernel: .kernel.o.flags
Only in work-2.4.9-ac2/kernel: .kmod.o.flags
Only in work-2.4.9-ac2/kernel: .ksyms.o.flags
Only in work-2.4.9-ac2/kernel: .module.o.flags
Only in work-2.4.9-ac2/kernel: .panic.o.flags
Only in work-2.4.9-ac2/kernel: .printk.o.flags
Only in work-2.4.9-ac2/kernel: .ptrace.o.flags
Only in work-2.4.9-ac2/kernel: .resource.o.flags
Only in work-2.4.9-ac2/kernel: .sched.o.flags
Only in work-2.4.9-ac2/kernel: .signal.o.flags
Only in work-2.4.9-ac2/kernel: .softirq.o.flags
Only in work-2.4.9-ac2/kernel: .sys.o.flags
Only in work-2.4.9-ac2/kernel: .sysctl.o.flags
Only in work-2.4.9-ac2/kernel: .time.o.flags
Only in work-2.4.9-ac2/kernel: .timer.o.flags
Only in work-2.4.9-ac2/kernel: .uid16.o.flags
Only in work-2.4.9-ac2/kernel: .user.o.flags
Only in work-2.4.9-ac2/kernel: acct.o
Only in work-2.4.9-ac2/kernel: capability.o
Only in work-2.4.9-ac2/kernel: context.o
Only in work-2.4.9-ac2/kernel: dma.o
Only in work-2.4.9-ac2/kernel: exec_domain.o
Only in work-2.4.9-ac2/kernel: exit.o
Only in work-2.4.9-ac2/kernel: fork.o
Only in work-2.4.9-ac2/kernel: info.o
Only in work-2.4.9-ac2/kernel: itimer.o
Only in work-2.4.9-ac2/kernel: kernel.o
Only in work-2.4.9-ac2/kernel: kmod.o
Only in work-2.4.9-ac2/kernel: ksyms.o
Only in work-2.4.9-ac2/kernel: module.o
Only in work-2.4.9-ac2/kernel: panic.o
Only in work-2.4.9-ac2/kernel: printk.o
Only in work-2.4.9-ac2/kernel: ptrace.o
Only in work-2.4.9-ac2/kernel: resource.o
Only in work-2.4.9-ac2/kernel: sched.o
Only in work-2.4.9-ac2/kernel: signal.o
diff -ur /md0/kernels/2.4/v2.4.9-ac2/kernel/softirq.c work-2.4.9-ac2/kernel/softirq.c
--- /md0/kernels/2.4/v2.4.9-ac2/kernel/softirq.c	Mon Aug 13 15:12:09 2001
+++ work-2.4.9-ac2/kernel/softirq.c	Tue Aug 28 17:19:17 2001
@@ -63,7 +63,7 @@
 	int cpu = smp_processor_id();
 	__u32 pending;
 	long flags;
-	__u32 mask;
+	int i = 0;
 
 	if (in_interrupt())
 		return;
@@ -75,7 +75,6 @@
 	if (pending) {
 		struct softirq_action *h;
 
-		mask = ~pending;
 		local_bh_disable();
 restart:
 		/* Reset the pending bitmask before enabling irqs */
@@ -95,14 +94,15 @@
 		local_irq_disable();
 
 		pending = softirq_pending(cpu);
-		if (pending & mask) {
-			mask &= ~pending;
+		if (pending && (i++ < 16))
 			goto restart;
-		}
+
 		__local_bh_enable();
 
-		if (pending)
+		if (pending) {
+			//printk("oh bother\n");
 			wakeup_softirqd(cpu);
+		}
 	}
 
 	local_irq_restore(flags);
Only in work-2.4.9-ac2/kernel: softirq.o
Only in work-2.4.9-ac2/kernel: sys.o
Only in work-2.4.9-ac2/kernel: sysctl.o
Only in work-2.4.9-ac2/kernel: time.o
Only in work-2.4.9-ac2/kernel: timer.o
Only in work-2.4.9-ac2/kernel: uid16.o
Only in work-2.4.9-ac2/kernel: user.o
Only in work-2.4.9-ac2/lib: .brlock.o.flags
Only in work-2.4.9-ac2/lib: .bust_spinlocks.o.flags
Only in work-2.4.9-ac2/lib: .cmdline.o.flags
Only in work-2.4.9-ac2/lib: .ctype.o.flags
Only in work-2.4.9-ac2/lib: .depend
Only in work-2.4.9-ac2/lib: .errno.o.flags
Only in work-2.4.9-ac2/lib: .lib.a.flags
Only in work-2.4.9-ac2/lib: .rwsem.o.flags
Only in work-2.4.9-ac2/lib: .string.o.flags
Only in work-2.4.9-ac2/lib: .vsprintf.o.flags
Only in work-2.4.9-ac2/lib: brlock.o
Only in work-2.4.9-ac2/lib: bust_spinlocks.o
Only in work-2.4.9-ac2/lib: cmdline.o
Only in work-2.4.9-ac2/lib: ctype.o
Only in work-2.4.9-ac2/lib: errno.o
Only in work-2.4.9-ac2/lib: lib.a
Only in work-2.4.9-ac2/lib: rwsem.o
Only in work-2.4.9-ac2/lib: string.o
Only in work-2.4.9-ac2/lib: vsprintf.o
Only in work-2.4.9-ac2/mm: .bootmem.o.flags
Only in work-2.4.9-ac2/mm: .depend
Only in work-2.4.9-ac2/mm: .filemap.o.flags
Only in work-2.4.9-ac2/mm: .highmem.o.flags
Only in work-2.4.9-ac2/mm: .memory.o.flags
Only in work-2.4.9-ac2/mm: .mlock.o.flags
Only in work-2.4.9-ac2/mm: .mm.o.flags
Only in work-2.4.9-ac2/mm: .mmap.o.flags
Only in work-2.4.9-ac2/mm: .mprotect.o.flags
Only in work-2.4.9-ac2/mm: .mremap.o.flags
Only in work-2.4.9-ac2/mm: .numa.o.flags
Only in work-2.4.9-ac2/mm: .oom_kill.o.flags
Only in work-2.4.9-ac2/mm: .page_alloc.o.flags
Only in work-2.4.9-ac2/mm: .page_io.o.flags
Only in work-2.4.9-ac2/mm: .shmem.o.flags
Only in work-2.4.9-ac2/mm: .slab.o.flags
Only in work-2.4.9-ac2/mm: .swap.o.flags
Only in work-2.4.9-ac2/mm: .swap_state.o.flags
Only in work-2.4.9-ac2/mm: .swapfile.o.flags
Only in work-2.4.9-ac2/mm: .vmalloc.o.flags
Only in work-2.4.9-ac2/mm: .vmscan.o.flags
Only in work-2.4.9-ac2/mm: bootmem.o
Only in work-2.4.9-ac2/mm: filemap.o
Only in work-2.4.9-ac2/mm: highmem.o
Only in work-2.4.9-ac2/mm: memory.o
Only in work-2.4.9-ac2/mm: mlock.o
Only in work-2.4.9-ac2/mm: mm.o
Only in work-2.4.9-ac2/mm: mmap.o
Only in work-2.4.9-ac2/mm: mprotect.o
Only in work-2.4.9-ac2/mm: mremap.o
Only in work-2.4.9-ac2/mm: numa.o
Only in work-2.4.9-ac2/mm: oom_kill.o
Only in work-2.4.9-ac2/mm: page_alloc.o
Only in work-2.4.9-ac2/mm: page_io.o
Only in work-2.4.9-ac2/mm: shmem.o
Only in work-2.4.9-ac2/mm: slab.o
Only in work-2.4.9-ac2/mm: swap.o
Only in work-2.4.9-ac2/mm: swap_state.o
Only in work-2.4.9-ac2/mm: swapfile.o
diff -ur /md0/kernels/2.4/v2.4.9-ac2/mm/vmalloc.c work-2.4.9-ac2/mm/vmalloc.c
--- /md0/kernels/2.4/v2.4.9-ac2/mm/vmalloc.c	Wed Sep  5 20:18:30 2001
+++ work-2.4.9-ac2/mm/vmalloc.c	Wed Sep  5 21:05:32 2001
@@ -91,8 +91,27 @@
 	flush_tlb_all();
 }
 
+static void alloc_area_pte_page(int gfp_mask, struct page **pagep, struct page **lastp, unsigned long size)
+{
+	unsigned order;
+
+	for (order = 0; order < MAX_ORDER; order++)
+		if ((1U << order) > size)
+			break;
+	*pagep = *lastp = NULL;
+	order++;
+	do {
+		*pagep = alloc_pages(gfp_mask, --order);
+		if (*pagep) {
+			*lastp = *pagep + (1U << order);
+			break;
+		}
+	} while (order) ;
+}
+
 static inline int alloc_area_pte (pte_t * pte, unsigned long address,
-			unsigned long size, int gfp_mask, pgprot_t prot)
+			unsigned long size, int gfp_mask, pgprot_t prot,
+			struct page **pagep, struct page **lastp)
 {
 	unsigned long end;
 
@@ -102,13 +121,18 @@
 		end = PMD_SIZE;
 	do {
 		struct page * page;
-		spin_unlock(&init_mm.page_table_lock);
-		page = alloc_page(gfp_mask);
-		spin_lock(&init_mm.page_table_lock);
+		if (*pagep >= *lastp) {
+			spin_unlock(&init_mm.page_table_lock);
+			alloc_area_pte_page(gfp_mask, pagep, lastp, size);
+			spin_lock(&init_mm.page_table_lock);
+		}
 		if (!pte_none(*pte))
 			printk(KERN_ERR "alloc_area_pte: page already exists\n");
+		page = *pagep;
 		if (!page)
 			return -ENOMEM;
+		else
+			++*pagep;
 		set_pte(pte, mk_pte(page, prot));
 		address += PAGE_SIZE;
 		pte++;
@@ -116,7 +140,7 @@
 	return 0;
 }
 
-static inline int alloc_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size, int gfp_mask, pgprot_t prot)
+static inline int alloc_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size, int gfp_mask, pgprot_t prot, struct page **pagep, struct page **lastp)
 {
 	unsigned long end;
 
@@ -128,7 +152,7 @@
 		pte_t * pte = pte_alloc(&init_mm, pmd, address);
 		if (!pte)
 			return -ENOMEM;
-		if (alloc_area_pte(pte, address, end - address, gfp_mask, prot))
+		if (alloc_area_pte(pte, address, end - address, gfp_mask, prot, pagep, lastp))
 			return -ENOMEM;
 		address = (address + PMD_SIZE) & PMD_MASK;
 		pmd++;
@@ -140,9 +164,17 @@
                                int gfp_mask, pgprot_t prot)
 {
 	pgd_t * dir;
+	struct page *page = NULL, *last = NULL;
 	unsigned long end = address + size;
 	int ret;
 
+	/* We try to allocate a contiguous chunk of pages for better
+	 * cache colouring of modules.
+	 */
+	alloc_area_pte_page(gfp_mask, &page, &last, size);
+	if (!page)
+		return -ENOMEM;
+
 	dir = pgd_offset_k(address);
 	flush_cache_all();
 	spin_lock(&init_mm.page_table_lock);
@@ -155,7 +187,7 @@
 			break;
 
 		ret = -ENOMEM;
-		if (alloc_area_pmd(pmd, address, end - address, gfp_mask, prot))
+		if (alloc_area_pmd(pmd, address, end - address, gfp_mask, prot, &page, &last))
 			break;
 
 		address = (address + PGDIR_SIZE) & PGDIR_MASK;
@@ -165,6 +197,10 @@
 	} while (address && (address < end));
 	spin_unlock(&init_mm.page_table_lock);
 	flush_tlb_all();
+
+	while (page && page < last)
+		__free_page(page++);
+
 	return ret;
 }
 
Only in work-2.4.9-ac2/mm: vmalloc.o
Only in work-2.4.9-ac2/mm: vmscan.o
Only in work-2.4.9-ac2/net: .depend
Only in work-2.4.9-ac2/net: .netsyms.o.flags
Only in work-2.4.9-ac2/net: .network.o.flags
Only in work-2.4.9-ac2/net: .socket.o.flags
Only in work-2.4.9-ac2/net: .sysctl_net.o.flags
Only in work-2.4.9-ac2/net/802: .802.o.flags
Only in work-2.4.9-ac2/net/802: .depend
Only in work-2.4.9-ac2/net/802: .p8023.o.flags
Only in work-2.4.9-ac2/net/802: .sysctl_net_802.o.flags
Only in work-2.4.9-ac2/net/802: 802.o
Only in work-2.4.9-ac2/net/802: p8023.o
Only in work-2.4.9-ac2/net/802: sysctl_net_802.o
Only in work-2.4.9-ac2/net/appletalk: .depend
Only in work-2.4.9-ac2/net/atm: .depend
Only in work-2.4.9-ac2/net/ax25: .depend
Only in work-2.4.9-ac2/net/bluetooth: .depend
Only in work-2.4.9-ac2/net/bridge: .depend
Only in work-2.4.9-ac2/net/core: .core.o.flags
Only in work-2.4.9-ac2/net/core: .datagram.o.flags
Only in work-2.4.9-ac2/net/core: .depend
Only in work-2.4.9-ac2/net/core: .dev.o.flags
Only in work-2.4.9-ac2/net/core: .dev_mcast.o.flags
Only in work-2.4.9-ac2/net/core: .dst.o.flags
Only in work-2.4.9-ac2/net/core: .iovec.o.flags
Only in work-2.4.9-ac2/net/core: .neighbour.o.flags
Only in work-2.4.9-ac2/net/core: .rtnetlink.o.flags
Only in work-2.4.9-ac2/net/core: .scm.o.flags
Only in work-2.4.9-ac2/net/core: .skbuff.o.flags
Only in work-2.4.9-ac2/net/core: .sock.o.flags
Only in work-2.4.9-ac2/net/core: .sysctl_net_core.o.flags
Only in work-2.4.9-ac2/net/core: .utils.o.flags
Only in work-2.4.9-ac2/net/core: core.o
Only in work-2.4.9-ac2/net/core: datagram.o
diff -ur /md0/kernels/2.4/v2.4.9-ac2/net/core/dev.c work-2.4.9-ac2/net/core/dev.c
--- /md0/kernels/2.4/v2.4.9-ac2/net/core/dev.c	Mon Aug 13 15:12:09 2001
+++ work-2.4.9-ac2/net/core/dev.c	Wed Aug 29 04:40:20 2001
@@ -1398,6 +1398,102 @@
 #endif   /* CONFIG_NET_DIVERT */
 
 
+void __netif_rx(struct net_device *rx_dev, struct sk_buff *skb)
+{
+	int this_cpu = smp_processor_id();
+	dev_hold(rx_dev);
+	if (skb->stamp.tv_sec == 0)
+		get_fast_time(&skb->stamp);
+
+	skb_bond(skb);
+
+#ifdef CONFIG_NET_FASTROUTE
+	if (skb->pkt_type == PACKET_FASTROUTE) {
+		netdev_rx_stat[this_cpu].fastroute_deferred_out++;
+		dev_queue_xmit(skb);
+		dev_put(rx_dev);
+		goto out;
+	}
+#endif
+	skb->h.raw = skb->nh.raw = skb->data;
+	{
+		struct packet_type *ptype, *pt_prev;
+		unsigned short type = skb->protocol;
+
+		pt_prev = NULL;
+		for (ptype = ptype_all; ptype; ptype = ptype->next) {
+			if (!ptype->dev || ptype->dev == rx_dev) {
+				if (pt_prev) {
+					if (!pt_prev->data) {
+						deliver_to_old_ones(pt_prev, skb, 0);
+					} else {
+						atomic_inc(&skb->users);
+						pt_prev->func(skb,
+							      rx_dev,
+							      pt_prev);
+					}
+				}
+				pt_prev = ptype;
+			}
+		}
+
+#ifdef CONFIG_NET_DIVERT
+		if (skb->dev->divert && skb->dev->divert->divert)
+			handle_diverter(skb);
+#endif /* CONFIG_NET_DIVERT */
+
+#if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
+		if (skb->dev->br_port != NULL &&
+		    br_handle_frame_hook != NULL) {
+			handle_bridge(skb, pt_prev);
+			dev_put(rx_dev);
+			goto out;
+		}
+#endif
+
+		for (ptype=ptype_base[ntohs(type)&15];ptype;ptype=ptype->next) {
+			if (ptype->type == type &&
+			    (!ptype->dev || ptype->dev == skb->dev)) {
+				if (pt_prev) {
+					if (!pt_prev->data)
+						deliver_to_old_ones(pt_prev, skb, 0);
+					else {
+						atomic_inc(&skb->users);
+						pt_prev->func(skb,
+							      skb->dev,
+							      pt_prev);
+					}
+				}
+				pt_prev = ptype;
+			}
+		}
+
+		if (pt_prev) {
+			if (!pt_prev->data)
+				deliver_to_old_ones(pt_prev, skb, 1);
+			else
+				pt_prev->func(skb, skb->dev, pt_prev);
+		} else
+			kfree_skb(skb);
+	}
+
+	dev_put(rx_dev);
+
+#ifdef CONFIG_NET_HW_FLOWCONTROL
+	if (queue->throttle && queue->input_pkt_queue.qlen < no_cong_thresh ) {
+		if (atomic_dec_and_test(&netdev_dropping)) {
+			queue->throttle = 0;
+			netdev_wakeup();
+			goto softnet_break;
+		}
+	}
+#endif
+
+out:
+	/* This already runs in BH context, no need to wake up BH's */
+	__cpu_raise_softirq(this_cpu, NET_RX_SOFTIRQ);
+}
+
 static void net_rx_action(struct softirq_action *h)
 {
 	int this_cpu = smp_processor_id();
Only in work-2.4.9-ac2/net/core: dev.o
Only in work-2.4.9-ac2/net/core: dev_mcast.o
Only in work-2.4.9-ac2/net/core: dst.o
Only in work-2.4.9-ac2/net/core: iovec.o
Only in work-2.4.9-ac2/net/core: neighbour.o
Only in work-2.4.9-ac2/net/core: rtnetlink.o
Only in work-2.4.9-ac2/net/core: scm.o
Only in work-2.4.9-ac2/net/core: skbuff.o
Only in work-2.4.9-ac2/net/core: sock.o
Only in work-2.4.9-ac2/net/core: sysctl_net_core.o
Only in work-2.4.9-ac2/net/core: utils.o
Only in work-2.4.9-ac2/net/decnet: .depend
Only in work-2.4.9-ac2/net/econet: .depend
Only in work-2.4.9-ac2/net/ethernet: .depend
Only in work-2.4.9-ac2/net/ethernet: .eth.o.flags
Only in work-2.4.9-ac2/net/ethernet: .ethernet.o.flags
Only in work-2.4.9-ac2/net/ethernet: .sysctl_net_ether.o.flags
Only in work-2.4.9-ac2/net/ethernet: eth.o
Only in work-2.4.9-ac2/net/ethernet: ethernet.o
Only in work-2.4.9-ac2/net/ethernet: sysctl_net_ether.o
Only in work-2.4.9-ac2/net/ipv4: .af_inet.o.flags
Only in work-2.4.9-ac2/net/ipv4: .arp.o.flags
Only in work-2.4.9-ac2/net/ipv4: .depend
Only in work-2.4.9-ac2/net/ipv4: .devinet.o.flags
Only in work-2.4.9-ac2/net/ipv4: .fib_frontend.o.flags
Only in work-2.4.9-ac2/net/ipv4: .fib_hash.o.flags
Only in work-2.4.9-ac2/net/ipv4: .fib_semantics.o.flags
Only in work-2.4.9-ac2/net/ipv4: .icmp.o.flags
Only in work-2.4.9-ac2/net/ipv4: .igmp.o.flags
Only in work-2.4.9-ac2/net/ipv4: .inetpeer.o.flags
Only in work-2.4.9-ac2/net/ipv4: .ip_forward.o.flags
Only in work-2.4.9-ac2/net/ipv4: .ip_fragment.o.flags
Only in work-2.4.9-ac2/net/ipv4: .ip_input.o.flags
Only in work-2.4.9-ac2/net/ipv4: .ip_options.o.flags
Only in work-2.4.9-ac2/net/ipv4: .ip_output.o.flags
Only in work-2.4.9-ac2/net/ipv4: .ip_sockglue.o.flags
Only in work-2.4.9-ac2/net/ipv4: .ipv4.o.flags
Only in work-2.4.9-ac2/net/ipv4: .proc.o.flags
Only in work-2.4.9-ac2/net/ipv4: .protocol.o.flags
Only in work-2.4.9-ac2/net/ipv4: .raw.o.flags
Only in work-2.4.9-ac2/net/ipv4: .route.o.flags
Only in work-2.4.9-ac2/net/ipv4: .sysctl_net_ipv4.o.flags
Only in work-2.4.9-ac2/net/ipv4: .tcp.o.flags
Only in work-2.4.9-ac2/net/ipv4: .tcp_input.o.flags
Only in work-2.4.9-ac2/net/ipv4: .tcp_ipv4.o.flags
Only in work-2.4.9-ac2/net/ipv4: .tcp_minisocks.o.flags
Only in work-2.4.9-ac2/net/ipv4: .tcp_output.o.flags
Only in work-2.4.9-ac2/net/ipv4: .tcp_timer.o.flags
Only in work-2.4.9-ac2/net/ipv4: .udp.o.flags
Only in work-2.4.9-ac2/net/ipv4: .utils.o.flags
Only in work-2.4.9-ac2/net/ipv4: af_inet.o
Only in work-2.4.9-ac2/net/ipv4: arp.o
Only in work-2.4.9-ac2/net/ipv4: devinet.o
Only in work-2.4.9-ac2/net/ipv4: fib_frontend.o
Only in work-2.4.9-ac2/net/ipv4: fib_hash.o
Only in work-2.4.9-ac2/net/ipv4: fib_semantics.o
Only in work-2.4.9-ac2/net/ipv4: icmp.o
Only in work-2.4.9-ac2/net/ipv4: igmp.o
Only in work-2.4.9-ac2/net/ipv4: inetpeer.o
Only in work-2.4.9-ac2/net/ipv4: ip_forward.o
Only in work-2.4.9-ac2/net/ipv4: ip_fragment.o
Only in work-2.4.9-ac2/net/ipv4: ip_input.o
Only in work-2.4.9-ac2/net/ipv4: ip_options.o
Only in work-2.4.9-ac2/net/ipv4: ip_output.o
Only in work-2.4.9-ac2/net/ipv4: ip_sockglue.o
Only in work-2.4.9-ac2/net/ipv4: ipv4.o
Only in work-2.4.9-ac2/net/ipv4/netfilter: .depend
Only in work-2.4.9-ac2/net/ipv4: proc.o
Only in work-2.4.9-ac2/net/ipv4: protocol.o
Only in work-2.4.9-ac2/net/ipv4: raw.o
Only in work-2.4.9-ac2/net/ipv4: route.o
Only in work-2.4.9-ac2/net/ipv4: sysctl_net_ipv4.o
Only in work-2.4.9-ac2/net/ipv4: tcp.o
Only in work-2.4.9-ac2/net/ipv4: tcp_input.o
Only in work-2.4.9-ac2/net/ipv4: tcp_ipv4.o
Only in work-2.4.9-ac2/net/ipv4: tcp_minisocks.o
Only in work-2.4.9-ac2/net/ipv4: tcp_output.o
Only in work-2.4.9-ac2/net/ipv4: tcp_timer.o
Only in work-2.4.9-ac2/net/ipv4: udp.o
Only in work-2.4.9-ac2/net/ipv4: utils.o
Only in work-2.4.9-ac2/net/ipv6: .depend
Only in work-2.4.9-ac2/net/ipx: .depend
Only in work-2.4.9-ac2/net/irda: .depend
Only in work-2.4.9-ac2/net/irda/ircomm: .depend
Only in work-2.4.9-ac2/net/irda/irlan: .depend
Only in work-2.4.9-ac2/net/irda/irnet: .depend
Only in work-2.4.9-ac2/net/khttpd: .depend
Only in work-2.4.9-ac2/net/lapb: .depend
Only in work-2.4.9-ac2/net/netlink: .depend
Only in work-2.4.9-ac2/net/netrom: .depend
diff -ur /md0/kernels/2.4/v2.4.9-ac2/net/netsyms.c work-2.4.9-ac2/net/netsyms.c
--- /md0/kernels/2.4/v2.4.9-ac2/net/netsyms.c	Mon Aug 27 15:08:45 2001
+++ work-2.4.9-ac2/net/netsyms.c	Wed Aug 29 04:17:15 2001
@@ -481,6 +481,7 @@
 EXPORT_SYMBOL(skb_clone);
 EXPORT_SYMBOL(skb_copy);
 EXPORT_SYMBOL(netif_rx);
+EXPORT_SYMBOL(__netif_rx);
 EXPORT_SYMBOL(dev_add_pack);
 EXPORT_SYMBOL(dev_remove_pack);
 EXPORT_SYMBOL(dev_get);
Only in work-2.4.9-ac2/net: netsyms.o
Only in work-2.4.9-ac2/net: network.o
Only in work-2.4.9-ac2/net/packet: .af_packet.o.flags
Only in work-2.4.9-ac2/net/packet: .depend
Only in work-2.4.9-ac2/net/packet: .packet.o.flags
Only in work-2.4.9-ac2/net/packet: af_packet.o
Only in work-2.4.9-ac2/net/packet: packet.o
Only in work-2.4.9-ac2/net/rose: .depend
Only in work-2.4.9-ac2/net/sched: .depend
Only in work-2.4.9-ac2/net/sched: .sch_generic.o.flags
Only in work-2.4.9-ac2/net/sched: .sched.o.flags
Only in work-2.4.9-ac2/net/sched: sch_generic.o
Only in work-2.4.9-ac2/net/sched: sched.o
Only in work-2.4.9-ac2/net: socket.o
Only in work-2.4.9-ac2/net/sunrpc: .auth.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .auth_null.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .auth_unix.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .clnt.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .depend
Only in work-2.4.9-ac2/net/sunrpc: .pmap_clnt.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .sched.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .stats.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .sunrpc.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .sunrpc_syms.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .svc.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .svcauth.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .svcsock.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .sysctl.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .xdr.o.flags
Only in work-2.4.9-ac2/net/sunrpc: .xprt.o.flags
Only in work-2.4.9-ac2/net/sunrpc: auth.o
Only in work-2.4.9-ac2/net/sunrpc: auth_null.o
Only in work-2.4.9-ac2/net/sunrpc: auth_unix.o
Only in work-2.4.9-ac2/net/sunrpc: clnt.o
Only in work-2.4.9-ac2/net/sunrpc: pmap_clnt.o
Only in work-2.4.9-ac2/net/sunrpc: sched.o
Only in work-2.4.9-ac2/net/sunrpc: stats.o
Only in work-2.4.9-ac2/net/sunrpc: sunrpc.o
Only in work-2.4.9-ac2/net/sunrpc: sunrpc_syms.o
Only in work-2.4.9-ac2/net/sunrpc: svc.o
Only in work-2.4.9-ac2/net/sunrpc: svcauth.o
Only in work-2.4.9-ac2/net/sunrpc: svcsock.o
Only in work-2.4.9-ac2/net/sunrpc: sysctl.o
Only in work-2.4.9-ac2/net/sunrpc: xdr.o
Only in work-2.4.9-ac2/net/sunrpc: xprt.o
Only in work-2.4.9-ac2/net: sysctl_net.o
Only in work-2.4.9-ac2/net/unix: .af_unix.o.flags
Only in work-2.4.9-ac2/net/unix: .depend
Only in work-2.4.9-ac2/net/unix: .garbage.o.flags
Only in work-2.4.9-ac2/net/unix: .sysctl_net_unix.o.flags
Only in work-2.4.9-ac2/net/unix: .unix.o.flags
Only in work-2.4.9-ac2/net/unix: af_unix.o
Only in work-2.4.9-ac2/net/unix: garbage.o
Only in work-2.4.9-ac2/net/unix: sysctl_net_unix.o
Only in work-2.4.9-ac2/net/unix: unix.o
Only in work-2.4.9-ac2/net/wanrouter: .depend
Only in work-2.4.9-ac2/net/x25: .depend
Only in work-2.4.9-ac2/scripts/lxdialog: checklist.o
Only in work-2.4.9-ac2/scripts/lxdialog: inputbox.o
Only in work-2.4.9-ac2/scripts/lxdialog: lxdialog
Only in work-2.4.9-ac2/scripts/lxdialog: lxdialog.o
Only in work-2.4.9-ac2/scripts/lxdialog: menubox.o
Only in work-2.4.9-ac2/scripts/lxdialog: msgbox.o
Only in work-2.4.9-ac2/scripts/lxdialog: textbox.o
Only in work-2.4.9-ac2/scripts/lxdialog: util.o
Only in work-2.4.9-ac2/scripts/lxdialog: yesno.o
Only in work-2.4.9-ac2/scripts: mkdep
Only in work-2.4.9-ac2/scripts: split-include
Only in work-2.4.9-ac2: vmlinux
