]> git.neil.brown.name Git - history.git/commitdiff
Linux 2.2.20pre2 2.2.20pre2
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Fri, 23 Nov 2007 20:23:38 +0000 (15:23 -0500)
committerAlan Cox <alan@lxorguk.ukuu.org.uk>
Fri, 23 Nov 2007 20:23:38 +0000 (15:23 -0500)
o Fix ip_decrease_ttl as per 2.4 (Dave Miller)
o Fix tcp retransmit state bug (Alexey Kuznetsov)
o Fix a few obscure sparc tree bugs (Dave Miller)
o Fix fb /proc bug and OF fb name size bug (Segher Boessenkool)
o Fix complie with CONFIG_INTEL_RNG=y (Andrzej Krzysztofowicz)
o Fix rio driver when HZ!=100 (Andrzej Krzysztofowicz)
o Stop 3c509 grabbing other EISA boards (Andrzej Krzysztofowicz)
o Remove surplus defines for root= names (Andrzej Krzysztofowicz)
o Revert pre1 APIC change

28 files changed:
Makefile
arch/i386/kernel/io_apic.c
arch/sparc64/kernel/devices.c
arch/sparc64/kernel/setup.c
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/sparc64_ksyms.c
drivers/char/misc.c
drivers/char/rio/riodrvr.h
drivers/net/3c509.c
drivers/net/sunhme.c
drivers/sbus/char/zs.c
drivers/video/fbmem.c
drivers/video/offb.c
include/asm-sparc64/smp.h
include/asm-sparc64/ttable.h
include/net/ip.h
init/main.c
net/core/sock.c
net/ipv4/ip_sockglue.c
net/ipv4/ipmr.c
net/ipv4/raw.c
net/ipv4/route.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/ipv4/tcp_output.c
net/ipv6/ipv6_sockglue.c
net/ipv6/raw.c

index 2a7b4880fbbc9865e73554b5b4d1fec187e05985..be8c98cc60de94345518a90af9b262afafc862cc 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 2
 SUBLEVEL = 20
-EXTRAVERSION = pre1
+EXTRAVERSION = pre2
 
 ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
 
index 00fb90d43a093e1a4f0ab46a2610e43f24b51678..2877363afe54cf4630920a9af184148b2a3ec1de 100644 (file)
@@ -200,6 +200,8 @@ static void name##_IO_APIC_irq(unsigned int irq)                    \
  * We disable IO-APIC IRQs by setting their 'destination CPU mask' to
  * zero. Trick by Ramesh Nalluri.
  */
+DO_ACTION( disable, 1, &= 0x00ffffff, io_apic_sync(entry->apic))/* destination = 0x00 */
+DO_ACTION( enable,  1, |= 0xff000000, )                                /* destination = 0xff */
 DO_ACTION( mask,    0, |= 0x00010000, io_apic_sync(entry->apic))/* mask = 1 */
 DO_ACTION( unmask,  0, &= 0xfffeffff, )                                /* mask = 0 */
 
@@ -610,7 +612,7 @@ void __init setup_IO_APIC_irqs(void)
                entry.delivery_mode = dest_LowestPrio;
                entry.dest_mode = 1;                    /* logical delivery */
                entry.mask = 0;                         /* enable IRQ */
-               entry.dest.logical.logical_dest = 0xff; /* but no route */
+               entry.dest.logical.logical_dest = 0;    /* but no route */
 
                idx = find_irq_entry(apic,pin,mp_INT);
                if (idx == -1) {
@@ -1015,10 +1017,13 @@ static inline void self_IPI(unsigned int irq)
 static void enable_edge_ioapic_irq(unsigned int irq)
 {
        self_IPI(irq);
-       unmask_IO_APIC_irq(irq);
+       enable_IO_APIC_irq(irq);
 }
 
-static void disable_edge_ioapic_irq(unsigned int irq) { /* nothing */ }
+static void disable_edge_ioapic_irq(unsigned int irq)
+{
+       disable_IO_APIC_irq(irq);
+}
 
 /*
  * Starting up a edge-triggered IO-APIC interrupt is
@@ -1234,7 +1239,7 @@ static inline void check_timer(void)
 
        pin1 = find_timer_pin(mp_INT);
        pin2 = find_timer_pin(mp_ExtINT);
-       unmask_IO_APIC_irq(0);
+       enable_IO_APIC_irq(0);
        if (!timer_irq_works()) {
 
                if (pin1 != -1)
index 0aef0b01982be8e0a4c34dd31b4fc503bbffdf49..ffc978d9b3cf8a23a6b5d0facd3f22aa5c162eef 100644 (file)
@@ -73,6 +73,15 @@ device_scan(unsigned long mem_start))
        
        prom_cpu_nodes[0] = prom_node_cpu;
 
+#ifndef __SMP__
+       {
+               extern unsigned int up_clock_tick;
+               up_clock_tick = prom_getintdefault(prom_node_cpu,
+                                                  "clock-frequency",
+                                                  0);
+       }
+#endif
+
        mem_start = central_probe(mem_start);
 
        cpu_probe();
index 0c230f2cc27ea99d5fda00211a59060048235188..aee6f94651dc50fa49c5d245968505dd5650da1d 100644 (file)
@@ -1,4 +1,4 @@
-/*  $Id: setup.c,v 1.43.2.5 2000/10/02 02:05:37 anton Exp $
+/*  $Id: setup.c,v 1.43.2.6 2001/04/24 21:58:20 davem Exp $
  *  linux/arch/sparc64/kernel/setup.c
  *
  *  Copyright (C) 1995,1996  David S. Miller (davem@caip.rutgers.edu)
@@ -620,6 +620,10 @@ extern int smp_info(char *);
 extern int smp_bogo(char *);
 extern int mmu_info(char *);
 
+#ifndef __SMP__
+unsigned int up_clock_tick;
+#endif
+
 int get_cpuinfo(char *buffer)
 {
        int cpuid=smp_processor_id();
@@ -634,7 +638,8 @@ int get_cpuinfo(char *buffer)
            "ncpus probed\t: %d\n"
            "ncpus active\t: %d\n"
 #ifndef __SMP__
-            "BogoMips\t: %lu.%02lu\n"
+            "Cpu0Bogo\t: %lu.%02lu\n"
+           "Cpu0ClkTck\t: %016lx\n"
 #endif
            ,
             sparc_cpu_type[cpuid],
@@ -642,7 +647,8 @@ int get_cpuinfo(char *buffer)
             prom_rev, prom_prev >> 16, (prom_prev >> 8) & 0xff, prom_prev & 0xff,
            linux_num_cpus, smp_num_cpus
 #ifndef __SMP__
-            , loops_per_jiffy/(500000/HZ), (loops_per_jiffy/(5000/HZ)) % 100
+           , loops_per_jiffy/(500000/HZ), (loops_per_jiffy/(5000/HZ)) % 100,
+           (unsigned long) up_clock_tick
 #endif
            );
 #ifdef __SMP__
index f4963632ed3d38ee0eb1b81f95412e0ef4372ce8..7a7dd2167b17b962b31198bba3d167a0395ccf70 100644 (file)
@@ -77,15 +77,17 @@ int smp_bogo(char *buf)
        for (i = 0; i < NR_CPUS; i++)
                if(cpu_present_map & (1UL << i))
                        len += sprintf(buf + len,
-                                      "Cpu%dBogo\t: %lu.%02lu\n",
+                                      "Cpu%dBogo\t: %lu.%02lu\n"
+                                      "Cpu%dClkTck\t: %016lx\n",
                                       i, cpu_data[i].udelay_val / (500000/HZ),
-                                      (cpu_data[i].udelay_val / (5000/HZ)) % 100);
+                                      (cpu_data[i].udelay_val / (5000/HZ)) % 100,
+                                      i, (unsigned long) cpu_data[i].clock_tick);
        return len;
 }
 
 __initfunc(void smp_store_cpu_info(int id))
 {
-       int i;
+       int i, no;
 
        cpu_data[id].irq_count                  = 0;
        cpu_data[id].bh_count                   = 0;
@@ -93,6 +95,13 @@ __initfunc(void smp_store_cpu_info(int id))
           smp_setup_percpu_timer()  */
        cpu_data[id].udelay_val                 = loops_per_jiffy;
 
+
+       for (no = 0; no < linux_num_cpus; no++)
+               if (linux_cpus[no].mid == id)
+                       break;
+
+       cpu_data[id].clock_tick = prom_getintdefault(linux_cpus[no].prom_node,
+                                                    "clock-frequency", 0);
        cpu_data[id].pgcache_size               = 0;
        cpu_data[id].pte_cache[0]               = NULL;
        cpu_data[id].pte_cache[1]               = NULL;
index e064bbde6ca4d5eceb7d45c1e414eab202e5e028..d3270210d480a235efd6a867dbe03e1fa19e1ebc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: sparc64_ksyms.c,v 1.58.2.13 2001/01/03 22:05:54 anton Exp $
+/* $Id: sparc64_ksyms.c,v 1.58.2.14 2001/03/01 00:48:59 davem Exp $
  * arch/sparc64/kernel/sparc64_ksyms.c: Sparc64 specific ksyms support.
  *
  * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
index d1f7a09c975bb314c6d62a8c60a3ab3bb4d2d7d9..195b454bbf3224075f0d9d6378a147a2a8272d25 100644 (file)
@@ -84,7 +84,6 @@ extern void hfmodem_init(void);
 extern int pc110pad_init(void);
 extern int pmu_device_init(void);
 extern int tosh_init(void);
-extern int rng_init(void);
 
 static int misc_read_proc(char *buf, char **start, off_t offset,
                          int len, int *eof, void *private)
@@ -287,9 +286,6 @@ int __init misc_init(void)
 #ifdef CONFIG_SGI
        streamable_init ();
 #endif
-#ifdef CONFIG_INTEL_RNG
-       rng_init ();
-#endif
 #ifdef CONFIG_TOSHIBA
        tosh_init();
 #endif
index 9a429e16bb41bfbe8f516435a620e4617a8be83b..5c1a3de537fb39c6d41832457f8f0d1578f53688 100644 (file)
 #ifndef __riodrvr_h
 #define __riodrvr_h
 
+#include <asm/param.h> /* for HZ */
+
 #ifdef SCCS_LABELS
 static char *_riodrvr_h_sccs_ = "@(#)riodrvr.h 1.3";
 #endif
 
 #define MEMDUMP_SIZE   32
-#define HZ                             100
 #define        MOD_DISABLE     (RIO_NOREAD|RIO_NOWRITE|RIO_NOXPRINT)
 
 
index ae0325212e3e26b0cc07fe62fe23e2b74fe87318..7fe481cb9eb699ae93606c7d010d85a1ef168dfb 100644 (file)
@@ -180,6 +180,8 @@ int __init el3_probe(struct device *dev)
        if (EISA_bus) {
                static int eisa_addr = 0x1000;
                while (eisa_addr < 0x9000) {
+                       int device_id;
+
                        ioaddr = eisa_addr;
                        eisa_addr += 0x1000;
 
@@ -187,6 +189,12 @@ int __init el3_probe(struct device *dev)
                        if (inw(ioaddr + 0xC80) != 0x6d50)
                                continue;
 
+                       /* Avoid conflict with 3c590, 3c592, 3c597, etc */
+                       device_id = (inb(ioaddr + 0xC82)<<8) + inb(ioaddr + 0xC83);
+                       if ((device_id & 0xFF00) == 0x5900) {
+                               continue;
+                       }
+
                        /* Change the register set to the configuration window 0. */
                        outw(SelectWindow | 0, ioaddr + 0xC80 + EL3_CMD);
 
index a3bde7c72ab7d008a34155be15b959600baccedd..66502718710f8e569e181fe345648b4c78409288 100644 (file)
@@ -3019,27 +3019,23 @@ static struct quattro * __init quattro_sbus_find(struct linux_sbus_device *goal_
        struct linux_sbus *sbus;
        struct linux_sbus_device *sdev;
        struct quattro *qp;
+       int i;
 
        if(qfe_sbus_list == NULL)
                goto found;
 
        for(qp = qfe_sbus_list; qp != NULL; qp = qp->next) {
-               for(sdev = qp->quattro_sbus_dev;
-                   sdev != NULL;
-                   sdev = sdev->next) {
+               for(i = 0, sdev = qp->quattro_sbus_dev;
+                   (sdev != NULL) && (i < 4);
+                   sdev = sdev->next, i++) {
                        if(sdev == goal_sdev)
                                return qp;
                }
        }
        for_each_sbus(sbus) {
                for_each_sbusdev(sdev, sbus) {
-                       if(sdev->child != NULL) {
-                               struct linux_sbus_device *p;
-
-                               for(p = sdev->child; p != NULL; p = p->next)
-                                       if(p == goal_sdev)
-                                               goto found;
-                       }
+                       if (sdev == goal_sdev)
+                               goto found;
                }
        }
 
index 06fdd45a4c88c03825d39104c87dd459561727b2..ed69458afcbfc775407fdf5df317371e5fbd997c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zs.c,v 1.41.2.7 2001/01/03 08:07:04 ecd Exp $
+/* $Id: zs.c,v 1.41.2.8 2001/04/17 07:14:47 davem Exp $
  * zs.c: Zilog serial port driver for the Sparc.
  *
  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -173,7 +173,7 @@ static struct termios **serial_termios_locked;
  * buffer across all the serial ports, since it significantly saves
  * memory if large numbers of serial ports are open.
  */
-static unsigned char tmp_buf[4096]; /* This is cheating */
+static unsigned char tmp_buf[SERIAL_XMIT_SIZE]; /* This is cheating */
 static struct semaphore tmp_buf_sem = MUTEX;
 
 static inline int serial_paranoia_check(struct sun_serial *info,
@@ -1856,7 +1856,7 @@ int zs_open(struct tty_struct *tty, struct file * filp)
 
 static void show_serial_version(void)
 {
-       char *revision = "$Revision: 1.41.2.7 $";
+       char *revision = "$Revision: 1.41.2.8 $";
        char *version, *p;
 
        version = strchr(revision, ' ');
index 2c1283688704fdb2016d765e35be5429be24ead0..22f3b7f3f7608e6534c3ddbd0f1ee4e27dedde26 100644 (file)
@@ -251,14 +251,16 @@ static int fbmem_read_proc(char *buf, char **start, off_t offset,
 {
        struct fb_info **fi;
 
-       len = 0;
+       int buflen = 0;
        for (fi = registered_fb; fi < &registered_fb[FB_MAX] && len < 4000; fi++)
                if (*fi)
-                       len += sprintf(buf + len, "%d %s\n",
+                       buflen += sprintf(buf + buflen, "%d %s\n",
                                       GET_FB_IDX((*fi)->node),
                                       (*fi)->modename);
        *start = buf + offset;
-       return len > offset ? len - offset : 0;
+
+       buflen = buflen > offset ? buflen - offset : 0;
+       return len < buflen ? len : buflen;
 }
 
 static ssize_t
index 19dfda72f00c66b1b3eb7d79c5fd0f8cd4e64a66..9614eba97a5821edeeccedaf601d7e289501f52a 100644 (file)
@@ -733,7 +733,7 @@ __initfunc(static void offb_init_fb(const char *name, const char *full_name,
     disp->scrollmode = SCROLL_YREDRAW;
 
     strcpy(info->info.modename, "OFfb ");
-    strncat(info->info.modename, full_name, sizeof(info->info.modename));
+    strncat(info->info.modename, full_name, sizeof(info->info.modename)-6);
     info->info.node = -1;
     info->info.fbops = &offb_ops;
     info->info.disp = disp;
index 15c8080e248b56b0e43602dfd74c7e16cf7ab4f4..8f3ed7bb23f6bdbc67e70108b598760ab07ee663 100644 (file)
@@ -38,7 +38,7 @@ struct cpuinfo_sparc {
        unsigned int    multiplier;
        unsigned int    counter;
        unsigned int    idle_volume;
-       unsigned int    __pad;
+       unsigned int    clock_tick;     /* %tick's per second */
        unsigned long   udelay_val;
 
        /* Dcache line 2 */
index 94c4b5b57bd3a86d6b4acf3a71ccca65957f79df..ba1a0eed0fc429de3f1e55b8025d144da064d78a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ttable.h,v 1.11.2.3 1999/10/07 20:48:25 davem Exp $ */
+/* $Id: ttable.h,v 1.11.2.5 2001/03/28 11:24:15 davem Exp $ */
 #ifndef _SPARC64_TTABLE_H
 #define _SPARC64_TTABLE_H
 
         clr    %l6;                                    \
        nop;
        
+       /* The grotty trick to save %g1 into current->thread.kernel_cntd0
+        * is because when we take this trap we could be interrupting trap
+        * code already using the trap alternate global registers.  It is
+        * better to corrupt a performance counter than corrupt trap register
+        * state.  We cross our fingers and pray that this store/load does
+        * not cause yet another CEE trap.
+        */
 #define TRAPTL1_CEE                    \
+       membar  #Sync;                  \
+       stx     %g1, [%g6 + AOFF_task_tss + AOFF_thread_kernel_cntd0]; \
        ldxa    [%g0] ASI_AFSR, %g1;    \
        membar  #Sync;                  \
        stxa    %g1, [%g0] ASI_AFSR;    \
        membar  #Sync;                  \
-       retry; nop; nop; nop;
+       ldx     [%g6 + AOFF_task_tss + AOFF_thread_kernel_cntd0], %g1; \
+       retry;
 
 #define TRAP_ARG(routine, arg)                         \
        sethi   %hi(109f), %g7;                         \
index 47f7eeb94a022425d2f203e5c793fabda3cbdfbf..2a2dd72e113e9479c2573fe0165f2b69ee154022 100644 (file)
@@ -170,7 +170,7 @@ extern __inline__ void ip_send(struct sk_buff *skb)
 extern __inline__
 int ip_decrease_ttl(struct iphdr *iph)
 {
-       u16 check = iph->check;
+       u32 check = iph->check;
        check += __constant_htons(0x0100);
        iph->check = check + ((check>=0xFFFF) ? 1 : 0);
        return --iph->ttl;
index 13955227edd7f0952ac3511cea2cfda5ab12b219..1feddc15057cf4457ebfd7cd97e450279e98ce4f 100644 (file)
@@ -462,13 +462,8 @@ static struct dev_name_struct {
        const char *name;
        const int num;
 } root_dev_names[] __initdata = {
-#ifdef CONFIG_ROOT_NFS
        { "nfs",     0x00ff },
-#endif
-#ifdef CONFIG_BLK_DEV_LOOP
        { "loop",    0x0700 },
-#endif
-#ifdef CONFIG_BLK_DEV_IDE
        { "hda",     0x0300 },
        { "hdb",     0x0340 },
        { "hdc",     0x1600 },
@@ -481,8 +476,6 @@ static struct dev_name_struct {
        { "hdj",     0x3840 },
        { "hdk",     0x3900 },
        { "hdl",     0x3940 },
-#endif
-#ifdef CONFIG_BLK_DEV_SD
        { "sda",     0x0800 },
        { "sdb",     0x0810 },
        { "sdc",     0x0820 },
@@ -499,8 +492,6 @@ static struct dev_name_struct {
        { "sdn",     0x08d0 },
        { "sdo",     0x08e0 },
        { "sdp",     0x08f0 },
-#endif
-#ifdef CONFIG_BLK_DEV_DAC960
        { "rd/c0d0p",0x3000 },
        { "rd/c0d1p",0x3008 },
        { "rd/c0d2p",0x3010 },
@@ -517,8 +508,6 @@ static struct dev_name_struct {
        { "rd/c0d13p",0x3068 },
        { "rd/c0d14p",0x3070 },
        { "rd/c0d15p",0x3078 },
-#endif
-#if defined(CONFIG_BLK_CPQ_DA) || defined(CONFIG_BLK_CPQ_DA_MODULE)
        { "ida/c0d0p",0x4800 },
        { "ida/c0d1p",0x4810 },
        { "ida/c0d2p",0x4820 },
@@ -535,71 +524,34 @@ static struct dev_name_struct {
        { "ida/c0d13p",0x48D0 },
        { "ida/c0d14p",0x48E0 },
        { "ida/c0d15p",0x48F0 },
-#endif
-#ifdef CONFIG_ATARI_ACSI
        { "ada",     0x1c00 },
        { "adb",     0x1c10 },
        { "adc",     0x1c20 },
        { "add",     0x1c30 },
        { "ade",     0x1c40 },
-#endif
-#ifdef CONFIG_BLK_DEV_FD
        { "fd",      0x0200 },
-#endif
-#ifdef CONFIG_MD_BOOT
        { "md",      0x0900 },       
-#endif     
-#ifdef CONFIG_BLK_DEV_XD
        { "xda",     0x0d00 },
        { "xdb",     0x0d40 },
-#endif
-#ifdef CONFIG_BLK_DEV_RAM
        { "ram",     0x0100 },
-#endif
-#ifdef CONFIG_BLK_DEV_SR
        { "scd",     0x0b00 },
-#endif
-#ifdef CONFIG_MCD
        { "mcd",     0x1700 },
-#endif
-#ifdef CONFIG_CDU535
        { "cdu535",  0x1800 },
        { "sonycd",  0x1800 },
-#endif
-#ifdef CONFIG_AZTCD
        { "aztcd",   0x1d00 },
-#endif
-#ifdef CONFIG_CM206
        { "cm206cd", 0x2000 },
-#endif
-#ifdef CONFIG_GSCD
        { "gscd",    0x1000 },
-#endif
-#ifdef CONFIG_SBPCD
        { "sbpcd",   0x1900 },
-#endif
-#ifdef CONFIG_BLK_DEV_PS2
        { "eda",     0x2400 },
        { "edb",     0x2440 },
-#endif
-#ifdef CONFIG_PARIDE_PD
        { "pda",        0x2d00 },
        { "pdb",        0x2d10 },
        { "pdc",        0x2d20 },
        { "pdd",        0x2d30 },
-#endif
-#ifdef CONFIG_PARIDE_PCD
        { "pcd",        0x2e00 },
-#endif
-#ifdef CONFIG_PARIDE_PF
        { "pf",         0x2f00 },
-#endif
-#if CONFIG_APBLOCK
        { "apblock", APBLOCK_MAJOR << 8},
-#endif
-#if CONFIG_DDV
        { "ddv", DDV_MAJOR << 8},
-#endif
 #ifdef CONFIG_MDISK
         { "mnda", (MDISK_MAJOR << MINORBITS)},
         { "mndb", (MDISK_MAJOR << MINORBITS) + 1},
index 2b3fc9b5f0d77295e5c808d01f1ab5d67b9ab5b4..e7d6067e7f8a6a55cc5d26bef41651a9e726de1a 100644 (file)
@@ -7,7 +7,7 @@
  *             handler for protocols to use and generic option handler.
  *
  *
- * Version:    $Id: sock.c,v 1.80.2.3 2000/08/10 00:37:05 davem Exp $
+ * Version:    $Id: sock.c,v 1.80.2.4 2001/02/20 04:21:46 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
index 4b7cbd934233ff87eadf92fed2f186850e9a79d1..90dd8ab4689cf1c73e38a9bf6af4cf402393c50a 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             The IP to API glue.
  *             
- * Version:    $Id: ip_sockglue.c,v 1.42 1999/04/22 10:07:34 davem Exp $
+ * Version:    $Id: ip_sockglue.c,v 1.42.2.1 2001/02/20 04:21:46 davem Exp $
  *
  * Authors:    see ip.c
  *
index ad3955e55d05fac7e78d50e2b4a71bd489bc338f..beaf700bb8d1f154948c71e4b060c6980cb17c8d 100644 (file)
@@ -9,7 +9,7 @@
  *     as published by the Free Software Foundation; either version
  *     2 of the License, or (at your option) any later version.
  *
- *     Version: $Id: ipmr.c,v 1.40.2.2 1999/06/20 21:27:44 davem Exp $
+ *     Version: $Id: ipmr.c,v 1.40.2.3 2001/02/20 04:21:46 davem Exp $
  *
  *     Fixes:
  *     Michael Chastain        :       Incorrect size of copying.
index 859b44e8387c561c5aa6a9fd6ba3586cd62d6d97..a202138b8953afb6ed7d3f6f728ca4d7fc0cab37 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             RAW - implementation of IP "raw" sockets.
  *
- * Version:    $Id: raw.c,v 1.39.2.1 1999/06/20 20:14:50 davem Exp $
+ * Version:    $Id: raw.c,v 1.39.2.2 2001/02/20 04:21:46 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
index 2de3d6b624867d7c23866ead2ce9b0f920debb91..bb07d1ed3307e835add5ffa3f370d521da3234b5 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             ROUTE - implementation of the IP router.
  *
- * Version:    $Id: route.c,v 1.67.2.5 2000/09/01 23:19:46 davem Exp $
+ * Version:    $Id: route.c,v 1.67.2.6 2001/02/09 08:43:58 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
index edf12604f283fcb4dc13aa0e3df327f2f61c463c..9da20bb63ff29748d67856cd3a6eefbc152f1fee 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * sysctl_net_ipv4.c: sysctl interface to net IPV4 subsystem.
  *
- * $Id: sysctl_net_ipv4.c,v 1.38.2.4 2000/09/16 09:40:00 davem Exp $
+ * $Id: sysctl_net_ipv4.c,v 1.38.2.5 2001/02/09 08:43:58 davem Exp $
  *
  * Begun April 1, 1996, Mike Shaver.
  * Added /proc/sys/net/ipv4 directory entry (empty =) ). [MS]
index 4f7e4f1ad0f493a1ae3e457054adb0f212767ae0..21f55e0bdf3652542b81e6bb010b5148bd7a8743 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             Implementation of the Transmission Control Protocol(TCP).
  *
- * Version:    $Id: tcp.c,v 1.140.2.16 2001/01/04 05:28:46 davem Exp $
+ * Version:    $Id: tcp.c,v 1.140.2.17 2001/02/20 04:21:46 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
index 6d5a62248d0937bf9a4ce8376c26f5590824d7be..7d7210a8f91dded12f8e40e03802f98453bfbbe9 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             Implementation of the Transmission Control Protocol(TCP).
  *
- * Version:    $Id: tcp_input.c,v 1.164.2.21 2001/03/06 05:39:39 davem Exp $
+ * Version:    $Id: tcp_input.c,v 1.164.2.22 2001/04/10 19:58:43 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
@@ -734,8 +734,6 @@ static void tcp_ack_saw_tstamp(struct sock *sk, struct tcp_opt *tp,
        if (tp->retransmits) {
                if (tp->packets_out == 0) {
                        tp->retransmits = 0;
-                       tp->fackets_out = 0;
-                       tp->retrans_out = 0;
                        tp->backoff = 0;
                        tcp_set_rto(tp);
                } else {
@@ -782,8 +780,10 @@ static int tcp_ack(struct sock *sk, struct tcphdr *th,
        if(sk->zapped)
                return(1);      /* Dead, can't ack any more so why bother */
 
-       if (tp->pending == TIME_KEEPOPEN)
+       if (tp->pending == TIME_KEEPOPEN) {
                tp->probes_out = 0;
+               tp->pending = 0;
+       }
 
        tp->rcv_tstamp = tcp_time_stamp;
 
@@ -851,8 +851,6 @@ static int tcp_ack(struct sock *sk, struct tcphdr *th,
                if (tp->retransmits) {
                        if (tp->packets_out == 0) {
                                tp->retransmits = 0;
-                               tp->fackets_out = 0;
-                               tp->retrans_out = 0;
                        }
                } else {
                        /* We don't have a timestamp. Can only use
@@ -879,6 +877,8 @@ static int tcp_ack(struct sock *sk, struct tcphdr *th,
                        tcp_ack_packets_out(sk, tp);
        } else {
                tcp_clear_xmit_timer(sk, TIME_RETRANS);
+               tp->fackets_out = 0;
+               tp->retrans_out = 0;
        }
 
        flag &= (FLAG_DATA | FLAG_WIN_UPDATE);
index eb96c82395a09c4afd3eb07c21c9e7fb6f935712..9fec42d493b56d935ab22742db7b2da33c156760 100644 (file)
@@ -5,7 +5,7 @@
  *
  *             Implementation of the Transmission Control Protocol(TCP).
  *
- * Version:    $Id: tcp_output.c,v 1.108.2.11 2000/11/10 12:43:29 davem Exp $
+ * Version:    $Id: tcp_output.c,v 1.108.2.12 2001/04/10 19:58:44 davem Exp $
  *
  * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
@@ -547,6 +547,8 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb, int m
                 */
                kfree_skb(next_skb);
                sk->tp_pinfo.af_tcp.packets_out--;
+               if (sk->tp_pinfo.af_tcp.fackets_out)
+                       sk->tp_pinfo.af_tcp.fackets_out--;
        }
 }
 
index 6d52fa4e19b8fee9016fb4a51fa340bd7650acce..98115c420c9c795116e8c43692e272614f9474cf 100644 (file)
@@ -7,7 +7,7 @@
  *
  *     Based on linux/net/ipv4/ip_sockglue.c
  *
- *     $Id: ipv6_sockglue.c,v 1.27 1999/04/22 10:07:43 davem Exp $
+ *     $Id: ipv6_sockglue.c,v 1.27.2.2 2001/02/21 01:08:55 davem Exp $
  *
  *     This program is free software; you can redistribute it and/or
  *      modify it under the terms of the GNU General Public License
index 8834cee567654379f1f999bcfbb5e66d793dde1e..b93f2ba626beefcf21998c43333376a708e63d67 100644 (file)
@@ -7,7 +7,7 @@
  *
  *     Adapted from linux/net/ipv4/raw.c
  *
- *     $Id: raw.c,v 1.24.2.1 1999/06/20 20:14:58 davem Exp $
+ *     $Id: raw.c,v 1.24.2.2 2001/02/20 04:21:47 davem Exp $
  *
  *     This program is free software; you can redistribute it and/or
  *      modify it under the terms of the GNU General Public License