kernel-fxtec-pro1x/include/asm-mips
Dave Johnson 1d464c26b5 [MIPS] Fix wrong checksum for split TCP packets on 64-bit MIPS
I've traced down an off-by-one TCP checksum calculation error under
the following conditions:

1) The TCP code needs to split a full-sized packet due to a reduced
   MSS (typically due to the addition of TCP options mid-stream like
   SACK).
   _AND_
2) The checksum of the 2nd fragment is larger than the checksum of the
   original packet.  After subtraction this results in a checksum for
   the 1st fragment with bits 16..31 set to 1. (this is ok)
   _AND_
3) The checksum of the 1st fragment's TCP header plus the previously
   32bit checksum of the 1st fragment DOES NOT cause a 32bit overflow
   when added together.  This results in a checksum of the TCP header
   plus TCP data that still has the upper 16 bits as 1's.
   _THEN_
4) The TCP+data checksum is added to the checksum of the pseudo IP
   header with csum_tcpudp_nofold() incorrectly (the bug).
    
The problem is the checksum of the TCP+data is passed to
csum_tcpudp_nofold() as an 32bit unsigned value, however the assembly
code acts on it as if it is a 64bit unsigned value.

This causes an incorrect 32->64bit extension if the sum has bit 31
set.  The resulting checksum is off by one.
    
This problems is data and TCP header dependent due to  and 
above so it doesn't occur on every TCP packet split.
    
Signed-off-by: Dave Johnson <djohnson+linux-mips@sw.starentnetworks.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2007-04-20 14:58:37 +01:00
..
arc
ddb5xxx [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
dec [TC] TURBOchannel support for the DECstation 2007-02-09 16:23:16 +00:00
emma2rh [MIPS] Define MIPS_CPU_IRQ_BASE in generic header 2007-02-06 16:53:08 +00:00
ip32
jmr3927 [MIPS] Convert to RTC-class ds1742 driver 2007-03-04 19:02:34 +00:00
lasat [MIPS] Fix and cleanup the mess that a dozen prom_printf variants are. 2007-03-04 19:02:37 +00:00
mach-atlas [MIPS] SNI: Fix mc146818_decode_year 2007-03-04 19:02:31 +00:00
mach-au1x00 ide: remove static prototypes from include/asm-mips/mach-au1x00/au1xxx_ide.h 2007-03-17 21:57:24 +01:00
mach-cobalt [MIPS] Define MIPS_CPU_IRQ_BASE in generic header 2007-02-06 16:53:08 +00:00
mach-db1x00
mach-dec
mach-emma2rh [MIPS] Define MIPS_CPU_IRQ_BASE in generic header 2007-02-06 16:53:08 +00:00
mach-ev64120 [MIPS] Add UART IRQ number for EV64120 2006-10-01 23:16:59 +01:00
mach-excite [MIPS] s/__ASSEMBLER__/__ASSEMBLY__/ for clarity sake. 2006-09-27 13:37:57 +01:00
mach-generic [MIPS] DMA: Fix a bunch of warnings due to missing inline keywords. 2007-03-04 19:02:39 +00:00
mach-ip22
mach-ip27 [MIPS] IP27, IP35: Fix warnings. 2007-03-17 01:03:24 +00:00
mach-ip32 [MIPS] IP27, IP35: Fix warnings. 2007-03-17 01:03:24 +00:00
mach-ja
mach-jazz [MIPS] Unify dma-{coherent,noncoherent.ip27,ip32} 2007-02-13 22:40:50 +00:00
mach-jmr3927 [MIPS] Convert to RTC-class ds1742 driver 2007-03-04 19:02:34 +00:00
mach-lasat
mach-mips [MIPS] SNI: Fix mc146818_decode_year 2007-03-04 19:02:31 +00:00
mach-ocelot
mach-ocelot3
mach-pb1x00
mach-pnx8550 [MIPS] PNX8550 fixups 2006-10-04 18:06:15 +01:00
mach-qemu [MIPS] Qemu does not have D-cache aliases 2006-09-27 13:37:49 +01:00
mach-rm [MIPS] RM: It should be #ifdef CONFIG_FOO not #if CONFIG_FOO ... 2007-03-04 19:02:38 +00:00
mach-sibyte
mach-sim
mach-vr41xx [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
mach-wrppmc
mach-yosemite
mips-boards [MIPS] Fix and cleanup the mess that a dozen prom_printf variants are. 2007-03-04 19:02:37 +00:00
pci
sgi [MIPS] Define MIPS_CPU_IRQ_BASE in generic header 2007-02-06 16:53:08 +00:00
sibyte [MIPS] Add missing silicon revisions for BCM112x 2007-04-20 14:58:37 +01:00
sn [MIPS] IP27: Move definition of nic_t to its sole user. 2006-12-12 01:46:24 +00:00
tx4927
tx4938 fix file specification in comments 2006-10-03 23:01:26 +02:00
vr41xx [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
xtalk
8253pit.h
a.out.h
abi.h [MIPS] signals: Share even more code. 2007-02-18 21:31:35 +00:00
addrspace.h [MIPS] Use "long" for 64-bit values on 64-bit kernel. 2006-11-30 01:14:43 +00:00
asm.h [MIPS] 16K & 64K page size fixes 2006-11-01 17:46:09 +00:00
asmmacro-32.h
asmmacro-64.h
asmmacro.h
atomic.h [MIPS] Lockdep: Fix recursion bug. 2007-03-17 01:03:29 +00:00
auxvec.h
barrier.h [MIPS] Cleanup memory barriers for weakly ordered systems. 2006-12-04 22:43:14 +00:00
bcache.h
bitops.h [MIPS] Lockdep: Fix recursion bug. 2007-03-17 01:03:29 +00:00
bootinfo.h [MIPS] prom_free_prom_memory cleanup 2007-02-06 16:53:09 +00:00
branch.h
break.h
bug.h [MIPS] Fix BUG(), BUG_ON() handling 2007-04-20 14:58:37 +01:00
bugs.h
byteorder.h
cache.h
cachectl.h
cacheflush.h [MIPS] Implement flush_anon_page(). 2007-03-24 17:01:49 +00:00
cacheops.h
checksum.h [MIPS] Fix wrong checksum for split TCP packets on 64-bit MIPS 2007-04-20 14:58:37 +01:00
compat-signal.h [MIPS] signals: Share even more code. 2007-02-18 21:31:35 +00:00
compat.h [MIPS] compat.h uses struct pt_regs so needs to include ptrace.h. 2006-12-12 01:46:24 +00:00
compiler.h
cpu-features.h [MIPS] FPU ownership management & preemption fixes 2007-03-17 01:03:26 +00:00
cpu-info.h [MIPS] FPU ownership management & preemption fixes 2007-03-17 01:03:26 +00:00
cpu.h
cputime.h
current.h
debug.h
delay.h [MIPS] Make MIPS udelay() preempt safe under DEBUG_PREEMPT 2007-03-24 17:01:49 +00:00
device.h Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
div64.h [MIPS] Fixup migration to GENERIC_TIME 2006-10-31 20:13:23 +00:00
dma-mapping.h [MIPS] Don't claim we support dma_declare_coherent_memory - we don't. 2007-02-13 22:40:50 +00:00
dma.h [MIPS] ISA: Fix typo 2007-03-08 01:10:30 +00:00
ds1216.h [MIPS] Support for several more SNI RM models. 2007-02-18 21:31:37 +00:00
ds1286.h
dsp.h
elf.h
emergency-restart.h
errno.h
fcntl.h [MIPS] Remove F_SETSIG and F_GETSIG in favor of the asm-generic definitions. 2006-09-27 13:37:48 +01:00
fixmap.h [MIPS] Fix aliasing bug in copy_to_user_page / copy_from_user_page 2006-10-21 23:17:35 +01:00
floppy.h
fpregdef.h
fpu.h [MIPS] Retry {save,restore}_fp_context if failed in atomic context. 2007-04-20 14:58:37 +01:00
fpu_emulator.h
futex.h [PATCH] mm: pagefault_{disable,enable}() 2006-12-07 08:39:21 -08:00
gdb-stub.h
gfx.h
gt64120.h [MIPS] Rewrite GALILEO_INL/GALILEO_OUTL to GT_READ/GT_WRITE 2006-11-30 01:14:43 +00:00
gt64240.h
hardirq.h
hazards.h [MIPS] Fix pipeline hazard. 2007-03-24 17:01:49 +00:00
highmem.h [PATCH] mm: k{,um}map_atomic() vs in_atomic() 2006-12-07 08:39:21 -08:00
hw_irq.h
i8259.h [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
ide.h
inst.h
inventory.h
io.h [MIPS] Iomap implementation. 2007-02-18 21:31:34 +00:00
ioctl.h [MIPS] Remove unreferenced _IOC_SLMASK macro in ioctl.h. 2007-02-26 23:06:06 +00:00
ioctls.h
ipc.h
ipcbuf.h
irq.h [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
irq_cpu.h [MIPS] Define MIPS_CPU_IRQ_BASE in generic header 2007-02-06 16:53:08 +00:00
irq_regs.h [MIPS] Complete fixes after removal of pt_regs argument to int handlers. 2006-10-08 02:38:28 +01:00
irqflags.h [MIPS] SMTC: Fix recursion in instant IPI replay code. 2007-03-29 23:46:36 +01:00
isadep.h
jazz.h
jazzdma.h
Kbuild [MIPS] Have headers_install install <asm/cachectl.h> and <asm/sysmips.h>. 2006-09-27 13:37:56 +01:00
kexec.h [MIPS] Add support for kexec 2006-11-30 01:14:44 +00:00
kmap_types.h
kspd.h
linkage.h
local.h
m48t35.h
m48t37.h
marvell.h [MIPS] MV64340: Add missing prototype for mv64340_irq_init(). 2007-03-29 23:46:35 +01:00
mc146818-time.h
mc146818rtc.h
mips_mt.h [MIPS] SMTC: <asm/mips_mt.h> must include <linux/cpumask.h> 2007-03-07 00:07:15 +00:00
mipsmtregs.h [MIPS] MT: Nuke duplicate mips_mt_regdump() prototype. 2007-02-06 16:53:24 +00:00
mipsprom.h
mipsregs.h [MIPS] Remove unused R10000 performance counter definitions. 2006-11-30 01:14:45 +00:00
mman.h [PATCH] Remove final references to deprecated "MAP_ANON" page protection flag 2007-02-11 10:51:17 -08:00
mmu.h
mmu_context.h [MIPS] Reformat missformated SMTC bits. 2006-09-27 13:37:49 +01:00
mmzone.h
module.h
msc01_ic.h [MIPS] Complete fixes after removal of pt_regs argument to int handlers. 2006-10-08 02:38:28 +01:00
msgbuf.h
mutex.h
namei.h
nile4.h
paccess.h
page.h [MIPS] FLATMEM: introduce PHYS_OFFSET. 2007-02-06 16:53:13 +00:00
param.h
parport.h
pci.h [MIPS] Iomap implementation. 2007-02-18 21:31:34 +00:00
percpu.h
pgalloc.h [MIPS] Add external declaration of pagetable_init() to pgalloc.h 2007-02-18 21:31:36 +00:00
pgtable-32.h [MIPS] pte_offset(dir,addr): parenthesis fix 2006-12-06 20:16:08 +00:00
pgtable-64.h [MIPS] Always use virt_to_phys() when translating kernel addresses 2007-03-24 17:01:49 +00:00
pgtable-bits.h
pgtable.h [MIPS] Always use virt_to_phys() when translating kernel addresses 2007-03-24 17:01:49 +00:00
pmon.h
poll.h
posix_types.h
prctl.h
prefetch.h
processor.h
ptrace.h [MIPS] Add basic SMARTMIPS ASE support 2007-02-22 00:50:44 +00:00
qemu.h
r4kcache.h
reboot.h
reg.h
regdef.h
resource.h
rm9k-ocd.h
rtc.h
rtlx.h [MIPS] RTLX: Handle copy_*_user return values. 2007-03-17 01:03:29 +00:00
scatterlist.h
sections.h [MIPS] Remove _fdata from asm-mips/sections.h 2007-02-06 16:53:15 +00:00
segment.h
semaphore.h
sembuf.h
serial.h [MIPS] Remove IT8172-based platforms, ITE 8172G and Globespan IVR support. 2006-10-03 17:59:17 +01:00
setup.h [PATCH] cleanup asm/setup.h userspace visibility 2006-12-07 08:39:46 -08:00
sgialib.h [MIPS] Fix and cleanup the mess that a dozen prom_printf variants are. 2007-03-04 19:02:37 +00:00
sgiarcs.h [MIPS] ARC: Fix warning. 2007-03-24 17:01:49 +00:00
sgidefs.h
shmbuf.h
shmparam.h
sigcontext.h [MIPS] Add basic SMARTMIPS ASE support 2007-02-22 00:50:44 +00:00
siginfo.h
signal.h [MIPS] signals: Share even more code. 2007-02-18 21:31:35 +00:00
sim.h
smp.h
smtc.h [MIPS] SMTC: Add fordward declarations for mm_struct and task_struct. 2007-03-07 00:07:16 +00:00
smtc_ipi.h [MIPS] SMTC: Fix recursion in instant IPI replay code. 2007-03-29 23:46:36 +01:00
smtc_proc.h
sni.h [MIPS] SNI: MIPS_CPU_IRQ_BASE cleanup 2007-02-26 23:06:06 +00:00
socket.h
sockios.h
sparsemem.h
spinlock.h [MIPS] Fix __raw_read_trylock() to allow multiple readers 2007-03-07 00:07:17 +00:00
spinlock_types.h
stackframe.h [MIPS] Add basic SMARTMIPS ASE support 2007-02-22 00:50:44 +00:00
stacktrace.h [MIPS] Make unwind_stack() can dig into interrupted context 2006-10-01 23:16:59 +01:00
stat.h
statfs.h
string.h
suspend.h
sysmips.h
system.h [MIPS] Lockdep: Fix recursion bug. 2007-03-17 01:03:29 +00:00
termbits.h [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
termios.h [PATCH] consolidate line discipline number definitions 2007-02-11 10:51:26 -08:00
thread_info.h [MIPS] Disallow CpU exception in kernel again. 2007-04-20 14:58:37 +01:00
time.h [MIPS] mips HPT cleanup: make clocksource_mips public 2006-11-30 01:14:49 +00:00
timex.h [MIPS] Fix errors detected by "make headers_check" 2006-09-27 13:37:40 +01:00
titan_dep.h
tlb.h
tlbdebug.h
tlbflush.h
topology.h
traps.h
tx3912.h
types.h [PATCH] Centralise definitions of sector_t and blkcnt_t 2006-12-04 19:41:15 -08:00
uaccess.h [MIPS] Export __copy_user_inatomic. 2007-03-07 00:07:17 +00:00
ucontext.h
unaligned.h
unistd.h [MIPS] Wire up ioprio_set and ioprio_get. 2007-03-07 00:07:18 +00:00
user.h [MIPS] Fix errors detected by "make headers_check" 2006-09-27 13:37:40 +01:00
vga.h
vpe.h
war.h [MIPS] Rename SNI_RM200_PCI to just SNI_RM preparing for more RM machines 2006-12-09 01:03:58 +00:00
watch.h
wbflush.h
xor.h
xxs1500.h