diff -u --recursive --new-file v1.1.26/linux/Makefile linux/Makefile --- v1.1.26/linux/Makefile Sat Jul 9 16:30:44 1994 +++ linux/Makefile Sat Jul 9 11:56:20 1994 @@ -1,6 +1,6 @@ VERSION = 1 PATCHLEVEL = 1 -SUBLEVEL = 26 +SUBLEVEL = 27 all: Version zImage diff -u --recursive --new-file v1.1.26/linux/drivers/net/3c509.c linux/drivers/net/3c509.c --- v1.1.26/linux/drivers/net/3c509.c Mon Jun 27 16:46:59 1994 +++ linux/drivers/net/3c509.c Sat Jul 9 11:53:31 1994 @@ -1,7 +1,8 @@ /* 3c509.c: A 3c509 EtherLink3 ethernet driver for linux. */ /* - Written 1993 by Donald Becker. + Written 1993,1994 by Donald Becker. + Copyright 1994 by Donald Becker. Copyright 1993 United States Government as represented by the Director, National Security Agency. This software may be used and distributed according to the terms of the GNU Public License, @@ -9,11 +10,21 @@ This driver is for the 3Com EtherLinkIII series. - The author may be reached as becker@super.org or - C/O Supercomputing Research Ctr., 17100 Science Dr., Bowie MD 20715 + The author may be reached as becker@cesdis.gsfc.nasa.gov or + C/O Center of Excellence in Space Data and Information Sciences + Code 930.5, Goddard Space Flight Center, Greenbelt MD 20771 + + Known limitations: + Because of the way 3c509 ISA detection works it's difficult to predict + a priori which of several ISA-mode cards will be detected first. + + This driver does not use predictive interrupt mode, resulting in higher + packet latency but lower overhead. If interrupts are disabled for an + unusually long time it could also result in missed packets, but in + practice this rarely happens. */ -static char *version = "3c509.c:pl15k 3/5/94 becker@super.org\n"; +static char *version = "3c509.c:1.01 7/5/94 becker@cesdis.gsfc.nasa.gov\n"; #include #include @@ -92,11 +103,14 @@ short *phys_addr = (short *)dev->dev_addr; static int current_tag = 0; - /* First check for a board on the EISA bus. */ + /* First check all slots of the EISA bus. The next slot address to + probe is kept in 'eisa_addr' to support multiple probe() calls. */ if (EISA_bus) { - static int eisa_addr; - for (ioaddr=0x1000 ; ioaddr < 0x9000; ioaddr += 0x1000) { - eisa_addr = ioaddr; + static int eisa_addr = 0x1000; + while (eisa_addr < 0x9000) { + ioaddr = eisa_addr; + eisa_addr += 0x1000; + /* Check the standard EISA ID register for an encoded '3Com'. */ if (inw(ioaddr + 0xC80) != 0x6d50) continue; @@ -136,7 +150,10 @@ } #endif - /* Send the ID sequence to the ID_PORT. */ + /* Next check for all ISA bus boards by sending the ID sequence to the + ID_PORT. We find cards past the first by setting the 'current_tag' + on cards as they are found. Cards with their tag set will not + respond to subseqent ID seqences. */ outb(0x00, ID_PORT); outb(0x00, ID_PORT); for(i = 0; i < 255; i++) { @@ -169,9 +186,6 @@ } irq = id_read_eeprom(9) >> 12; - /* The current Space.c structure makes it difficult to have more - than one adaptor initialized. Send me email if you have a need for - multiple adaptors, and we'll work out something. -becker@super.org */ if (dev->base_addr != 0 && dev->base_addr != (unsigned short)ioaddr) { return -ENODEV; diff -u --recursive --new-file v1.1.26/linux/fs/devices.c linux/fs/devices.c --- v1.1.26/linux/fs/devices.c Sat Jul 9 16:30:46 1994 +++ linux/fs/devices.c Sat Jul 9 11:42:27 1994 @@ -127,10 +127,10 @@ i = MAJOR(dev); if (i >= MAX_BLKDEV || (fops = blkdevs[i].fops) == NULL) return 0; - if (fops->check_media_change != NULL) { - if (!fops->check_media_change(dev)) - return 0; - } + if (fops->check_media_change == NULL) + return 0; + if (!fops->check_media_change(dev)) + return 0; printk("VFS: Disk change detected on device %d/%d\n", MAJOR(dev), MINOR(dev)); diff -u --recursive --new-file v1.1.26/linux/include/linux/nfs_fs.h linux/include/linux/nfs_fs.h --- v1.1.26/linux/include/linux/nfs_fs.h Tue Jun 21 14:16:25 1994 +++ linux/include/linux/nfs_fs.h Sat Jul 9 11:53:58 1994 @@ -22,7 +22,7 @@ #define NFS_READDIR_CACHE_SIZE 64 -#define NFS_MAX_FILE_IO_BUFFER_SIZE (7*512) +#define NFS_MAX_FILE_IO_BUFFER_SIZE 16834 #define NFS_DEF_FILE_IO_BUFFER_SIZE 1024 /* diff -u --recursive --new-file v1.1.26/linux/net/inet/icmp.c linux/net/inet/icmp.c --- v1.1.26/linux/net/inet/icmp.c Fri Jul 8 13:26:42 1994 +++ linux/net/inet/icmp.c Sat Jul 9 11:53:20 1994 @@ -21,6 +21,8 @@ * Alan Cox : Routing errors * Alan Cox : Changes for newer routing code * Alan Cox : Removed old debugging junk + * Alan Cox : Fixed the ICMP error status of net/host unreachable + * Gerhard Koerting : Fixed broadcast ping properly * * * @@ -65,8 +67,8 @@ /* An array of errno for error messages from dest unreach. */ struct icmp_err icmp_err_convert[] = { - { ENETUNREACH, 1 }, /* ICMP_NET_UNREACH */ - { EHOSTUNREACH, 1 }, /* ICMP_HOST_UNREACH */ + { ENETUNREACH, 0 }, /* ICMP_NET_UNREACH */ + { EHOSTUNREACH, 0 }, /* ICMP_HOST_UNREACH */ { ENOPROTOOPT, 1 }, /* ICMP_PROT_UNREACH */ { ECONNREFUSED, 1 }, /* ICMP_PORT_UNREACH */ { EOPNOTSUPP, 0 }, /* ICMP_FRAG_NEEDED */ @@ -370,7 +372,7 @@ skb2->free = 1; /* Build Layer 2-3 headers for message back to source */ - offset = ip_build_header(skb2, daddr, dev->pa_addr, &ndev, + offset = ip_build_header(skb2, daddr, saddr, &ndev, IPPROTO_ICMP, opt, len, skb->ip_hdr->tos,255); if (offset < 0) { @@ -611,12 +613,16 @@ * Parse the ICMP message */ - if (ip_chk_addr(daddr) == IS_BROADCAST && icmph->type != ICMP_ECHO) + if (ip_chk_addr(daddr) == IS_BROADCAST) { - icmp_statistics.IcmpInErrors++; - kfree_skb(skb1, FREE_READ); - return(0); - } + if (icmph->type != ICMP_ECHO) + { + icmp_statistics.IcmpInErrors++; + kfree_skb(skb1, FREE_READ); + return(0); + } + daddr=dev->pa_addr; + } switch(icmph->type) {