android_kernel_xiaomi_sm8350/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 #2 and #3
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 [PATCH] Au1550/1200: add missing PSC #define's, make OSS driver use the proper ones 2006-06-23 07:42:56 -07:00
mach-dec [PATCH] char/rtc: Handle memory-mapped chips properly 2006-07-10 13:24:25 -07:00
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 Merge git://git.infradead.org/hdrcleanup-2.6 2006-06-20 15:10:08 -07:00
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 [MIPS] Use the proper technical term for naming some of the cache macros. 2006-07-13 21:26:04 +01:00
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 [MIPS] Use the proper technical term for naming some of the cache macros. 2006-07-13 21:26:04 +01:00
mach-pb1x00 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 [MIPS] Use the proper technical term for naming some of the cache macros. 2006-07-13 21:26:04 +01:00
mach-sim [MIPS] Use the proper technical term for naming some of the cache macros. 2006-07-13 21:26:04 +01:00
mach-vr41xx [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
mach-wrppmc [MIPS] Wind River 4KC PPMC Eval Board Support 2006-06-19 17:39:18 +01:00
mach-yosemite [MIPS] Use the proper technical term for naming some of the cache macros. 2006-07-13 21:26:04 +01:00
mips-boards [MIPS] Fix and cleanup the mess that a dozen prom_printf variants are. 2007-03-04 19:02:37 +00:00
pci [MIPS] SN: include asm/sn/types.h for nasid_t. 2006-06-19 17:39:24 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 [MIPS] Fix fpu_save_double on 64-bit. 2006-06-19 17:39:13 +01:00
asmmacro-64.h [MIPS] Fix fpu_save_double on 64-bit. 2006-06-19 17:39:13 +01:00
asmmacro.h [MIPS] Fix use of ehb instruction for non-R2 configurations. 2006-06-29 21:10:49 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
byteorder.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
cache.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 [MIPS] Use the proper technical term for naming some of the cache macros. 2006-07-13 21:26:04 +01:00
cputime.h
current.h
debug.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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_emulator.h [MIPS] Unify mips_fpu_soft_struct and mips_fpu_hard_structs. 2006-06-19 17:39:18 +01:00
fpu.h [MIPS] Retry {save,restore}_fp_context if failed in atomic context. 2007-04-20 14:58:37 +01:00
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 [PATCH] genirq: add ->retrigger() irq op to consolidate hw_irq_resend() 2006-06-29 10:26:23 -07:00
i8259.h [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
ide.h
inst.h [MIPS] Fix rdhwr_op definition. 2006-07-13 21:26:08 +01:00
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_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
irq.h [MIPS] Make I8259A_IRQ_BASE customizable 2007-02-06 16:53:09 +00:00
irqflags.h [MIPS] SMTC: Fix recursion in instant IPI replay code. 2007-03-29 23:46:36 +01:00
isadep.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
kspd.h [MIPS] kpsd and other AP/SP improvements. 2006-04-19 04:14:27 +02:00
linkage.h [PATCH] abstract type/size specification for assembly 2006-03-24 07:33:25 -08:00
local.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 [PATCH] RTC: Remove RTC UIP synchronization on MIPS MC146818 2006-03-28 09:16:00 -08:00
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_context.h [MIPS] Reformat missformated SMTC bits. 2006-09-27 13:37:49 +01:00
mmu.h
mmzone.h [PATCH] Delete unused definitions of kvaddr_to_nid 2006-06-23 07:42:52 -07:00
module.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
mutex.h
namei.h
nile4.h
paccess.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
page.h [MIPS] FLATMEM: introduce PHYS_OFFSET. 2007-02-06 16:53:13 +00:00
param.h [MIPS] Make timer interrupt frequency configurable from kconfig. 2006-06-19 17:39:27 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
pgtable.h [MIPS] Always use virt_to_phys() when translating kernel addresses 2007-03-24 17:01:49 +00:00
pmon.h
poll.h [PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications 2006-03-25 08:22:56 -08:00
posix_types.h
prctl.h
prefetch.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
processor.h Merge git://git.infradead.org/hdrcleanup-2.6 2006-06-20 15:10:08 -07:00
ptrace.h [MIPS] Add basic SMARTMIPS ASE support 2007-02-22 00:50:44 +00:00
qemu.h [MIPS] Qemu system shutdown support 2006-06-19 17:39:19 +01:00
r4kcache.h [MIPS] MT: Improved multithreading support. 2006-04-19 04:14:28 +02:00
reboot.h
reg.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
regdef.h
resource.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
rm9k-ocd.h [MIPS] Support for the RM9000-based Basler eXcite smart camera platform. 2006-06-19 17:39:26 +01:00
rtc.h [MIPS] Fix genrtc compilation. 2006-04-19 04:14:22 +02:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
signal.h [MIPS] signals: Share even more code. 2007-02-18 21:31:35 +00:00
sim.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
smp.h Merge git://git.infradead.org/hdrcleanup-2.6 2006-06-20 15:10:08 -07:00
smtc_ipi.h [MIPS] SMTC: Fix recursion in instant IPI replay code. 2007-03-29 23:46:36 +01:00
smtc_proc.h [MIPS] MT: Improved multithreading support. 2006-04-19 04:14:28 +02:00
smtc.h [MIPS] SMTC: Add fordward declarations for mm_struct and task_struct. 2007-03-07 00:07:16 +00:00
sni.h [MIPS] SNI: MIPS_CPU_IRQ_BASE cleanup 2007-02-26 23:06:06 +00:00
socket.h [AF_UNIX]: Datagram getpeersec 2006-06-29 16:58:06 -07:00
sockios.h
sparsemem.h [MIPS] Fix sparsemem support. 2006-06-06 00:15:20 +01:00
spinlock_types.h
spinlock.h [MIPS] Fix __raw_read_trylock() to allow multiple readers 2007-03-07 00:07:17 +00:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
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 [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
vpe.h [MIPS] kpsd and other AP/SP improvements. 2006-04-19 04:14:27 +02:00
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 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
xor.h
xxs1500.h