home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / kernel-s / v1.2 / patch-1.009 / patch-1.2.4
Text File  |  1995-04-06  |  42KB  |  1,177 lines

  1. diff -u --recursive --new-file v1.2.3/linux/Makefile linux/Makefile
  2. --- v1.2.3/linux/Makefile    Tue Apr  4 09:05:33 1995
  3. +++ linux/Makefile    Tue Apr  4 09:42:08 1995
  4. @@ -1,6 +1,6 @@
  5.  VERSION = 1
  6.  PATCHLEVEL = 2
  7. -SUBLEVEL = 3
  8. +SUBLEVEL = 4
  9.  
  10.  ARCH = i386
  11.  
  12. diff -u --recursive --new-file v1.2.3/linux/README linux/README
  13. --- v1.2.3/linux/README    Wed Mar 29 06:52:56 1995
  14. +++ linux/README    Tue Apr  4 07:30:53 1995
  15. @@ -58,8 +58,8 @@
  16.          cd /usr/include
  17.          rm -rf linux
  18.          rm -rf asm
  19. -        ln -s /usr/src/linux/include/linux .
  20. -        ln -s /usr/src/linux/include/asm-i386 .
  21. +        ln -s /usr/src/linux/include/linux linux
  22. +        ln -s /usr/src/linux/include/asm-i386 asm
  23.  
  24.   - make sure you have no stale .o files and dependencies lying around:
  25.  
  26. diff -u --recursive --new-file v1.2.3/linux/drivers/block/README.aztcd linux/drivers/block/README.aztcd
  27. --- v1.2.3/linux/drivers/block/README.aztcd    Wed Mar 29 06:52:57 1995
  28. +++ linux/drivers/block/README.aztcd    Wed Apr  5 12:59:50 1995
  29. @@ -129,7 +129,7 @@
  30.  must *not* configure your kernel for AZTECH support. But you need to have
  31.  the ISO9660-filesystem included! So rebuild your kernel, if necessary.
  32.  
  33. -Now edit the base adress of your AZTECH interface card in
  34. +Now edit the base address of your AZTECH interface card in
  35.  /usr/src/linux/include/linux/aztcd.h to the appropriate value. Then change
  36.  to /usr/src/linux and do a 
  37.                      make modules  
  38. diff -u --recursive --new-file v1.2.3/linux/drivers/block/blk.h linux/drivers/block/blk.h
  39. --- v1.2.3/linux/drivers/block/blk.h    Sun Feb 12 15:00:45 1995
  40. +++ linux/drivers/block/blk.h    Tue Apr  4 09:06:42 1995
  41. @@ -9,11 +9,6 @@
  42.   * NR_REQUEST is the number of entries in the request-queue.
  43.   * NOTE that writes may use only the low 2/3 of these: reads
  44.   * take precedence.
  45. - *
  46. - * 32 seems to be a reasonable number: enough to get some benefit
  47. - * from the elevator-mechanism, but not so much as to lock a lot of
  48. - * buffers when they are in the queue. 64 seems to be too many (easily
  49. - * long pauses in reading when heavy writing/syncing is going on)
  50.   */
  51.  #define NR_REQUEST    64
  52.  
  53. diff -u --recursive --new-file v1.2.3/linux/drivers/block/floppy.c linux/drivers/block/floppy.c
  54. --- v1.2.3/linux/drivers/block/floppy.c    Thu Mar  9 20:37:33 1995
  55. +++ linux/drivers/block/floppy.c    Mon Apr  3 11:31:31 1995
  56. @@ -844,6 +844,17 @@
  57.  static void setup_DMA(void)
  58.  {
  59.  #ifdef CONFIG_FLOPPY_SANITY
  60. +    if (raw_cmd.length == 0){
  61. +        int i;
  62. +
  63. +        printk("zero dma transfer size:");
  64. +        for(i=0; i< raw_cmd.cmd_count; i++)
  65. +            printk("%x,", raw_cmd.cmd[i]);
  66. +        printk("\n");
  67. +        cont->done(0);
  68. +        FDCS->reset = 1;
  69. +        return;
  70. +    }
  71.      if ((!CURRENT ||
  72.           CURRENT->buffer != current_addr ||
  73.           raw_cmd.length > 512 * CURRENT->nr_sectors) &&
  74. @@ -2306,15 +2317,21 @@
  75.           * This means we should be able to read a sector even if there
  76.           * are other bad sectors on this track.
  77.           */
  78. -        if ((indirect - sector_t) * 2 > (direct - sector_t) * 3 &&
  79. -            *errors < DP->max_errors.read_track &&
  80. -            /*!TESTF( FD_NEED_TWADDLE) &&*/
  81. -            ( ( !probing || (DP->read_track &
  82. -               (1 <<DRS->probed_format))))){
  83. +        if (!direct ||
  84. +            (indirect * 2 > direct * 3 &&
  85. +             *errors < DP->max_errors.read_track &&
  86. +             /*!TESTF( FD_NEED_TWADDLE) &&*/
  87. +             ((!probing || (DP->read_track&(1<<DRS->probed_format)))))){
  88.              max_size = CURRENT->nr_sectors;
  89.          } else {
  90.              current_addr = CURRENT->buffer;
  91.              raw_cmd.length = current_count_sectors << 9;
  92. +            if (raw_cmd.length == 0){
  93. +                DPRINT("zero dma transfer attempted from make_raw_request\n");
  94. +                DPRINT3("indirect=%d direct=%d sector_t=%d",
  95. +                    indirect, direct, sector_t);
  96. +                return 0;
  97. +            }
  98.              return 2;
  99.          }
  100.      }
  101. @@ -2411,6 +2428,10 @@
  102.          printk("bytes=%ld\n", raw_cmd.length >> 9 );
  103.          printk("sectors=%ld\n", current_count_sectors);
  104.      }
  105. +    if (raw_cmd.length == 0){
  106. +        DPRINT("zero dma transfer attempted from make_raw_request\n");
  107. +        return 0;
  108. +    }
  109.  #endif
  110.      return 2;
  111.  }
  112. @@ -2652,6 +2673,10 @@
  113.      if (raw_cmd.flags & (FD_RAW_WRITE | FD_RAW_READ)){
  114.          if(count > max_buffer_sectors * 1024 )
  115.              return -ENOMEM;
  116. +        if(count == 0){
  117. +            printk("attempt to do a 0 byte dma transfer\n");
  118. +            return -EINVAL;
  119. +        }
  120.          buffer_track = -1;
  121.      }
  122.      if ( raw_cmd.flags & FD_RAW_WRITE ){
  123. diff -u --recursive --new-file v1.2.3/linux/drivers/block/hd.c linux/drivers/block/hd.c
  124. --- v1.2.3/linux/drivers/block/hd.c    Tue Jan 31 09:30:47 1995
  125. +++ linux/drivers/block/hd.c    Wed Apr  5 12:47:54 1995
  126. @@ -893,6 +893,8 @@
  127.      int target;
  128.      target =  DEVICE_NR(inode->i_rdev);
  129.  
  130. +    if (target >= NR_HD)
  131. +        return -ENODEV;
  132.      while (busy[target])
  133.          sleep_on(&busy_wait);
  134.      access_count[target]++;
  135. diff -u --recursive --new-file v1.2.3/linux/drivers/block/ll_rw_blk.c linux/drivers/block/ll_rw_blk.c
  136. --- v1.2.3/linux/drivers/block/ll_rw_blk.c    Wed Feb 15 10:51:06 1995
  137. +++ linux/drivers/block/ll_rw_blk.c    Tue Apr  4 09:16:57 1995
  138. @@ -100,6 +100,43 @@
  139.  int * hardsect_size[MAX_BLKDEV] = { NULL, NULL, };
  140.  
  141.  /*
  142. + * "plug" the device if there are no outstanding requests: this will
  143. + * force the transfer to start only after we have put all the requests
  144. + * on the list.
  145. + */
  146. +static void plug_device(struct blk_dev_struct * dev, struct request * plug)
  147. +{
  148. +    unsigned long flags;
  149. +
  150. +    plug->dev = -1;
  151. +    plug->cmd = -1;
  152. +    plug->next = NULL;
  153. +    save_flags(flags);
  154. +    cli();
  155. +    if (!dev->current_request)
  156. +        dev->current_request = plug;
  157. +    restore_flags(flags);
  158. +}
  159. +
  160. +/*
  161. + * remove the plug and let it rip..
  162. + */
  163. +static void unplug_device(struct blk_dev_struct * dev)
  164. +{
  165. +    struct request * req;
  166. +    unsigned long flags;
  167. +
  168. +    save_flags(flags);
  169. +    cli();
  170. +    req = dev->current_request;
  171. +    if (req && req->dev == -1 && req->cmd == -1) {
  172. +        dev->current_request = req->next;
  173. +        (dev->request_fn)();
  174. +    }
  175. +    restore_flags(flags);
  176. +}
  177. +
  178. +/*
  179.   * look for a free request in the first N entries.
  180.   * NOTE: interrupts must be disabled on the way in, and will still
  181.   *       be disabled on the way out.
  182. @@ -139,8 +176,10 @@
  183.  {
  184.      register struct request *req;
  185.  
  186. -    while ((req = get_request(n, dev)) == NULL)
  187. +    while ((req = get_request(n, dev)) == NULL) {
  188. +        unplug_device(MAJOR(dev)+blk_dev);
  189.          sleep_on(&wait_for_request);
  190. +    }
  191.      return req;
  192.  }
  193.  
  194. @@ -332,6 +371,7 @@
  195.              unlock_buffer(bh);
  196.              return;
  197.          }
  198. +        unplug_device(major+blk_dev);
  199.          sleep_on(&wait_for_request);
  200.          sti();
  201.          goto repeat;
  202. @@ -395,7 +435,6 @@
  203.  {
  204.      unsigned int major;
  205.      struct request plug;
  206. -    int plugged;
  207.      int correct_size;
  208.      struct blk_dev_struct * dev;
  209.      int i;
  210. @@ -445,15 +484,8 @@
  211.         from starting until we have shoved all of the blocks into the
  212.         queue, and then we let it rip.  */
  213.  
  214. -    plugged = 0;
  215. -    cli();
  216. -    if (!dev->current_request && nr > 1) {
  217. -        dev->current_request = &plug;
  218. -        plug.dev = -1;
  219. -        plug.next = NULL;
  220. -        plugged = 1;
  221. -    }
  222. -    sti();
  223. +    if (nr > 1)
  224. +        plug_device(dev, &plug);
  225.      for (i = 0; i < nr; i++) {
  226.          if (bh[i]) {
  227.              bh[i]->b_req = 1;
  228. @@ -464,12 +496,7 @@
  229.                  kstat.pgpgout++;
  230.          }
  231.      }
  232. -    if (plugged) {
  233. -        cli();
  234. -        dev->current_request = plug.next;
  235. -        (dev->request_fn)();
  236. -        sti();
  237. -    }
  238. +    unplug_device(dev);
  239.      return;
  240.  
  241.        sorry:
  242. diff -u --recursive --new-file v1.2.3/linux/drivers/net/README.arcnet-jumpers linux/drivers/net/README.arcnet-jumpers
  243. --- v1.2.3/linux/drivers/net/README.arcnet-jumpers    Wed Mar 29 06:52:58 1995
  244. +++ linux/drivers/net/README.arcnet-jumpers    Wed Apr  5 12:59:50 1995
  245. @@ -55,7 +55,7 @@
  246.       About the jumpers: On my PC130 there is one more jumper, located near the
  247.       cable-connector and it's for changing to star or bus topology; 
  248.       closed: star - open: bus
  249. -     On the PC500 are some more jumper-pins, one block labled with RX,PDN,TXI
  250. +     On the PC500 are some more jumper-pins, one block labeled with RX,PDN,TXI
  251.       and another with ALE,LA17,LA18,LA19 these are undocumented..
  252.  
  253.       [...more parts deleted...]
  254. @@ -71,7 +71,7 @@
  255.      values, as of v0.14, are only from 0x200 through 0x3F0. (If your card
  256.      has additional ones, which is possible, please tell me.) This should not
  257.      be the same as any other device on your system.  Supposedly MS Windows
  258. -    prefers values of 0x300 or more, eating netconnections on my system
  259. +    prefers values of 0x300 or more, eating net connections on my system
  260.      otherwise.
  261.      - Avery's favourite: 0x300.
  262.  
  263. @@ -270,7 +270,7 @@
  264.  
  265.  The eight switches in group S2 are used to set the node ID.
  266.  Each node attached to the network must have an unique node ID which
  267. -must be diffrent from 0.
  268. +must be different from 0.
  269.  Switch 1 serves as the least significant bit (LSB).
  270.  
  271.  The node ID is the sum of the values of all switches set to "1"  
  272. @@ -309,7 +309,7 @@
  273.  ----------------------------
  274.  
  275.  The first three switches in switch group S1 are used to select one
  276. -of eight possible I/O Base addresses using the followig table
  277. +of eight possible I/O Base addresses using the following table
  278.  
  279.  
  280.     Switch | Hex I/O
  281. @@ -317,7 +317,7 @@
  282.     -------|--------
  283.     0 0 0  |  260
  284.     0 0 1  |  290
  285. -   0 1 0  |  2E0  (Manufactor's default)
  286. +   0 1 0  |  2E0  (Manufacturer's default)
  287.     0 1 1  |  2F0
  288.     1 0 0  |  300
  289.     1 0 1  |  350
  290. @@ -352,7 +352,7 @@
  291.     0 1 0  1 0 |  CD000  |  CE000
  292.     0 1 0  1 1 |  CD800  |  CE000
  293.                |         |
  294. -   0 1 1  0 0 |  D0000  |  D2000  (Manufactor's default)
  295. +   0 1 1  0 0 |  D0000  |  D2000  (Manufacturer's default)
  296.     0 1 1  0 1 |  D0800  |  D2000
  297.     0 1 1  1 0 |  D1000  |  D2000
  298.     0 1 1  1 1 |  D1800  |  D2000
  299. @@ -389,7 +389,7 @@
  300.  Refer to the COM9026 Data Sheet for alternate configurations.
  301.  
  302.  To select a hardware interrupt level set one (only one!) of the jumpers
  303. -IRQ2, IRQ3, IRQ4, IRQ5, IRQ7. The Manufactor's default is IRQ2.
  304. +IRQ2, IRQ3, IRQ4, IRQ5, IRQ7. The manufacturer's default is IRQ2.
  305.   
  306.  
  307.  Configuring the PC130E for Star or Bus Topology
  308. @@ -412,7 +412,7 @@
  309.   -------|-------------------   ---------|-------------------
  310.    on    | normal activity      flash/on | data transfer
  311.    blink | reconfiguration      off      | no data transfer;
  312. -  off   | defectiv board or             | incorect memory or
  313. +  off   | defective board or            | incorrect memory or
  314.          | node ID is zero               | I/O address
  315.  
  316.  
  317. @@ -506,7 +506,7 @@
  318.  
  319.  The eight switches in group SW3 are used to set the node ID. Each node
  320.  attached to the network must have an unique node ID which must be 
  321. -diffrent from 0.
  322. +different from 0.
  323.  Switch 1 serves as the least significant bit (LSB).
  324.  
  325.  The node ID is the sum of the values of all switches set to "1"  
  326. @@ -546,7 +546,7 @@
  327.  ----------------------------
  328.  
  329.  The first six switches in switch group SW1 are used to select one
  330. -of 32 possible I/O Base addresses using the followig table
  331. +of 32 possible I/O Base addresses using the following table
  332.  
  333.     Switch       | Hex I/O
  334.     6 5  4 3 2 1 | Address
  335. @@ -565,7 +565,7 @@
  336.     0 1  1 0 1 1 |  2B0
  337.     0 1  1 1 0 0 |  2C0
  338.     0 1  1 1 0 1 |  2D0
  339. -   0 1  1 1 1 0 |  2E0 (Manufactor's default)
  340. +   0 1  1 1 1 0 |  2E0 (Manufacturer's default)
  341.     0 1  1 1 1 1 |  2F0
  342.     1 1  0 0 0 0 |  300
  343.     1 1  0 0 0 1 |  310
  344. @@ -634,7 +634,7 @@
  345.   -------|-------------------   ---------|-------------------
  346.    on    | normal activity      flash/on | data transfer
  347.    blink | reconfiguration      off      | no data transfer;
  348. -  off   | defectiv board or             | incorect memory or
  349. +  off   | defective board or            | incorrect memory or
  350.          | node ID is zero               | I/O address
  351.  
  352.  
  353. @@ -690,7 +690,7 @@
  354.  
  355.  DIP Switches:
  356.  
  357. -    The dipswitches accessible on the accessible end of the card while
  358. +    The dip switches accessible on the accessible end of the card while
  359.          it is installed, is used to set the arcnet address.  There are 8
  360.          switches.  Use an address from 1 to 254.
  361.  
  362. @@ -856,7 +856,7 @@
  363.  -------------------
  364.  
  365.  The eight switches in SW2 are used to set the node ID. Each node attached
  366. -to the network must have an unique node ID which must be diffrent from 0.
  367. +to the network must have an unique node ID which must be different from 0.
  368.  Switch 1 (ID0) serves as the least significant bit (LSB).
  369.  
  370.  The node ID is the sum of the values of all switches set to "1"  
  371. @@ -896,7 +896,7 @@
  372.  ----------------------------
  373.  
  374.  The last three switches in switch block SW1 are used to select one
  375. -of eight possible I/O Base addresses using the followig table
  376. +of eight possible I/O Base addresses using the following table
  377.  
  378.  
  379.     Switch      | Hex I/O
  380. @@ -904,7 +904,7 @@
  381.     ------------|--------
  382.     ON  ON  ON  |  260
  383.     OFF ON  ON  |  290
  384. -   ON  OFF ON  |  2E0  (Manufactor's default)
  385. +   ON  OFF ON  |  2E0  (Manufacturer's default)
  386.     OFF OFF ON  |  2F0
  387.     ON  ON  OFF |  300
  388.     OFF ON  OFF |  350
  389. @@ -926,7 +926,7 @@
  390.     ON  ON  ON  ON  ON  |  C0000  |  C2000
  391.     ON  ON  OFF ON  ON  |  C4000  |  C6000
  392.     ON  ON  ON  OFF ON  |  CC000  |  CE000
  393. -   ON  ON  OFF OFF ON  |  D0000  |  D2000  (Manufactor's default)
  394. +   ON  ON  OFF OFF ON  |  D0000  |  D2000  (Manufacturer's default)
  395.     ON  ON  ON  ON  OFF |  D4000  |  D6000
  396.     ON  ON  OFF ON  OFF |  D8000  |  DA000
  397.     ON  ON  ON  OFF OFF |  DC000  |  DE000
  398. @@ -937,7 +937,7 @@
  399.  Note: Since the switches 1 and 2 are always set to ON it may be possible
  400.        that they can be used to add an offset of 2K, 4K or 6K to the base
  401.        address, but this feature is not documented in the manual and I
  402. -      haven't testet it yet.
  403. +      haven't tested it yet.
  404.  
  405.  
  406.  Setting the Interrupt Line
  407. @@ -1066,7 +1066,7 @@
  408.  -------------------
  409.  
  410.  The eight switches in SW2 are used to set the node ID. Each node attached
  411. -to the network must have an unique node ID which must be diffrent from 0.
  412. +to the network must have an unique node ID which must be different from 0.
  413.  Switch 1 (ID0) serves as the least significant bit (LSB).
  414.  
  415.  The node ID is the sum of the values of all switches set to "1"  
  416. @@ -1106,14 +1106,14 @@
  417.  ----------------------------
  418.  
  419.  The first six switches in switch block SW1 are used to select the I/O Base
  420. -address using the followig table:
  421. +address using the following table:
  422.  
  423.               Switch        | Hex I/O
  424.      1   2   3   4   5   6  | Address
  425.     ------------------------|--------
  426.     OFF ON  ON  OFF OFF ON  |  260
  427.     OFF ON  OFF ON  ON  OFF |  290
  428. -   OFF ON  OFF OFF OFF ON  |  2E0  (Manufactor's default)
  429. +   OFF ON  OFF OFF OFF ON  |  2E0  (Manufacturer's default)
  430.     OFF ON  OFF OFF OFF OFF |  2F0
  431.     OFF OFF ON  ON  ON  ON  |  300
  432.     OFF OFF ON  OFF ON  OFF |  350
  433. @@ -1162,9 +1162,9 @@
  434.      13    |   2 (=9) Default!
  435.  
  436.  Note:  - Do not use JP11=IRQ6, it may conflict with your Floppy Disk
  437. -         Controler
  438. +         Controller
  439.         - Use JP3=IRQ14 only, if you don't have an IDE-, MFM-, or RLL-
  440. -         Hard Disk, it may conflict with their controlers
  441. +         Hard Disk, it may conflict with their controllers
  442.  
  443.  
  444.  Setting the Timeout Parameters
  445. @@ -1185,8 +1185,8 @@
  446.  ===================
  447.  
  448.  I have named this ARCnet card "NONAME", since there is no name of any
  449. -manufactor on the Installation manual nor on the shipping box. The only
  450. -hint to the existence of a manufactor at all is written into cupper,
  451. +manufacturer on the Installation manual nor on the shipping box. The only
  452. +hint to the existence of a manufacturer at all is written into copper,
  453.  it is "Made in Taiwan"
  454.  
  455.  This description has been written by Juergen Seifert <seifert@htwm.de>
  456. @@ -1230,7 +1230,7 @@
  457.  ROM     ROM Enable Select
  458.  CN              RG62 Coax Connector
  459.  STAR| BUS | T/P Three fields for placing a sign (colored circle)
  460. -                indicating the topologie of the card
  461. +                indicating the topology of the card
  462.  
  463.  Setting one of the switches to Off means "1", On means "0".
  464.  
  465. @@ -1240,7 +1240,7 @@
  466.  
  467.  The eight switches in group SW1 are used to set the node ID.
  468.  Each node attached to the network must have an unique node ID which
  469. -must be diffrent from 0.
  470. +must be different from 0.
  471.  Switch 8 serves as the least significant bit (LSB).
  472.  
  473.  The node ID is the sum of the values of all switches set to "1"  
  474. @@ -1280,14 +1280,14 @@
  475.  ----------------------------
  476.  
  477.  The first three switches in switch group SW2 are used to select one
  478. -of eight possible I/O Base addresses using the followig table
  479. +of eight possible I/O Base addresses using the following table
  480.  
  481.     Switch      | Hex I/O
  482.      1   2   3  | Address
  483.     ------------|--------
  484.     ON  ON  ON  |  260
  485.     ON  ON  OFF |  290
  486. -   ON  OFF ON  |  2E0  (Manufactor's default)
  487. +   ON  OFF ON  |  2E0  (Manufacturer's default)
  488.     ON  OFF OFF |  2F0
  489.     OFF ON  ON  |  300
  490.     OFF ON  OFF |  350
  491. @@ -1322,7 +1322,7 @@
  492.     0 1 0  1 0 |  CD000  |  CE000
  493.     0 1 0  1 1 |  CD800  |  CE000
  494.                |         |
  495. -   0 1 1  0 0 |  D0000  |  D2000  (Manufactor's default)
  496. +   0 1 1  0 0 |  D0000  |  D2000  (Manufacturer's default)
  497.     0 1 1  0 1 |  D0800  |  D2000
  498.     0 1 1  1 0 |  D1000  |  D2000
  499.     0 1 1  1 1 |  D1800  |  D2000
  500. @@ -1355,14 +1355,14 @@
  501.  -------------------------------------
  502.  
  503.  To select a hardware interrupt level set one (only one!) of the jumpers
  504. -IRQ2, IRQ3, IRQ4, IRQ5 or IRQ7. The Manufactor's default is IRQ2.
  505. +IRQ2, IRQ3, IRQ4, IRQ5 or IRQ7. The manufacturer's default is IRQ2.
  506.   
  507.  
  508.  Setting the Timeouts
  509.  --------------------
  510.  
  511.  The two jumpers labeled ET1 and ET2 are used to determine the timeout
  512. -parameters (respons and reconfiguration time). Every node in a network
  513. +parameters (response and reconfiguration time). Every node in a network
  514.  must be set to the same timeout values.
  515.  
  516.     ET1 ET2 | Response Time (us) | Reconfiguration Time (ms)
  517. @@ -1382,7 +1382,7 @@
  518.  of a 16-Bit Coax / Twisted Pair Card. This description is incomplete,
  519.  because there are missing two pages in the manual booklet. (The table
  520.  of contents reports pages ... 2-9, 2-11, 2-12, 3-1, ... but inside
  521. -the booklet there is a diffrent way of counting ... 2-9, 2-10, A-1,
  522. +the booklet there is a different way of counting ... 2-9, 2-10, A-1,
  523.  (empty page), 3-1, ..., 3-18, A-1 (again), A-2)
  524.  Also the picture of the board layout is not as good as the picture of
  525.  8-Bit card, because there isn't any letter like "SW1" written to the
  526. @@ -1429,7 +1429,7 @@
  527.  
  528.  The eight switches in group SW2 are used to set the node ID.
  529.  Each node attached to the network must have an unique node ID which
  530. -must be diffrent from 0.
  531. +must be different from 0.
  532.  Switch 8 serves as the least significant bit (LSB).
  533.  
  534.  The node ID is the sum of the values of all switches set to "1"  
  535. @@ -1469,14 +1469,14 @@
  536.  ----------------------------
  537.  
  538.  The first three switches in switch group SW1 are used to select one
  539. -of eight possible I/O Base addresses using the followig table
  540. +of eight possible I/O Base addresses using the following table
  541.  
  542.     Switch      | Hex I/O
  543.      3   2   1  | Address
  544.     ------------|--------
  545.     ON  ON  ON  |  260
  546.     ON  ON  OFF |  290
  547. -   ON  OFF ON  |  2E0  (Manufactor's default)
  548. +   ON  OFF ON  |  2E0  (Manufacturer's default)
  549.     ON  OFF OFF |  2F0
  550.     OFF ON  ON  |  300
  551.     OFF ON  OFF |  350
  552. @@ -1511,7 +1511,7 @@
  553.     0 1 0  1 0 |  CD000  |  CE000
  554.     0 1 0  1 1 |  CD800  |  CE000
  555.                |         |
  556. -   0 1 1  0 0 |  D0000  |  D2000  (Manufactor's default)
  557. +   0 1 1  0 0 |  D0000  |  D2000  (Manufacturer's default)
  558.     0 1 1  0 1 |  D0800  |  D2000
  559.     0 1 1  1 0 |  D1000  |  D2000
  560.     0 1 1  1 1 |  D1800  |  D2000
  561. diff -u --recursive --new-file v1.2.3/linux/drivers/net/arcnet.c linux/drivers/net/arcnet.c
  562. --- v1.2.3/linux/drivers/net/arcnet.c    Wed Mar 29 06:52:58 1995
  563. +++ linux/drivers/net/arcnet.c    Wed Apr  5 12:59:50 1995
  564. @@ -291,7 +291,7 @@
  565.                   *   but WE MUST GET RID OF IT BEFORE SENDING A
  566.                   *   PACKET!!
  567.                   */
  568. -    u_char  saddr;        /* Source address - neccesary for IPX protocol */
  569. +    u_char  saddr;        /* Source address - necessary for IPX protocol */
  570.      
  571.      /* data that IS part of real packet */
  572.      u_char    protocol_id,    /* ARC_P_IP, ARC_P_ARP, or ARC_P_RARP */
  573. diff -u --recursive --new-file v1.2.3/linux/drivers/net/ne.c linux/drivers/net/ne.c
  574. --- v1.2.3/linux/drivers/net/ne.c    Sat Mar 18 12:45:46 1995
  575. +++ linux/drivers/net/ne.c    Thu Apr  6 08:50:11 1995
  576. @@ -1,4 +1,3 @@
  577. -#define rw_bugfix
  578.  /* ne.c: A general non-shared-memory NS8390 ethernet driver for linux. */
  579.  /*
  580.      Written 1992-94 by Donald Becker.
  581. @@ -348,6 +347,7 @@
  582.         encountering problems that it is still here.  If you see
  583.         this message you either 1) have a slightly incompatible clone
  584.         or 2) have noise/speed problems with your bus. */
  585. +#ifdef CONFIG_NE_SANITY
  586.      if (ei_debug > 1) {        /* DMA termination address check... */
  587.      int addr, tries = 20;
  588.      do {
  589. @@ -364,6 +364,7 @@
  590.             "%#4.4x (expected) vs. %#4.4x (actual).\n",
  591.             dev->name, ring_offset + xfer_count, addr);
  592.      }
  593. +#endif
  594.      ei_status.dmaing &= ~0x01;
  595.      return ring_offset + count;
  596.  }
  597. @@ -409,7 +410,14 @@
  598.      SLOW_DOWN_IO;
  599.  #endif  /* rw_bugfix */
  600.  
  601. -    /* Now the normal output. */
  602. +   /*
  603. +        Now the normal output. I believe that if we don't lock this, a
  604. +    race condition will munge the remote byte count values, and then
  605. +    the ne2k will hang the machine by holding I/O CH RDY because it
  606. +    expects more data. Hopefully fixes the lockups. -- Paul Gortmaker.
  607. +    */
  608. +
  609. +    cli();
  610.      outb_p(count & 0xff, nic_base + EN0_RCNTLO);
  611.      outb_p(count >> 8,   nic_base + EN0_RCNTHI);
  612.      outb_p(0x00, nic_base + EN0_RSARLO);
  613. @@ -421,7 +429,9 @@
  614.      } else {
  615.      outsb(NE_BASE + NE_DATAPORT, buf, count);
  616.      }
  617. +    sti();
  618.  
  619. +#ifdef CONFIG_NE_SANITY
  620.      /* This was for the ALPHA version only, but enough people have
  621.         encountering problems that it is still here. */
  622.      if (ei_debug > 1) {        /* DMA termination address check... */
  623. @@ -443,6 +453,7 @@
  624.          goto retry;
  625.      }
  626.      }
  627. +#endif
  628.      ei_status.dmaing &= ~0x02;
  629.      return;
  630.  }
  631. diff -u --recursive --new-file v1.2.3/linux/drivers/scsi/st.c linux/drivers/scsi/st.c
  632. --- v1.2.3/linux/drivers/scsi/st.c    Tue Apr  4 09:05:34 1995
  633. +++ linux/drivers/scsi/st.c    Tue Apr  4 08:05:34 1995
  634. @@ -572,7 +572,7 @@
  635.      save_flags (processor_flags);
  636.      cli();
  637.      if (SCpnt->request.dev == dev) sleep_on( &(STp->waiting) );
  638. -    restore_flags(flags);
  639. +    restore_flags(processor_flags);
  640.  
  641.      if ((STp->buffer)->last_result_fatal != 0) {
  642.  #ifdef DEBUG
  643. diff -u --recursive --new-file v1.2.3/linux/fs/ext2/CHANGES linux/fs/ext2/CHANGES
  644. --- v1.2.3/linux/fs/ext2/CHANGES    Wed Mar 29 06:52:59 1995
  645. +++ linux/fs/ext2/CHANGES    Wed Apr  5 12:59:50 1995
  646. @@ -2,7 +2,7 @@
  647.  ========================================
  648.      - Zero the partial block following the end of the file when a file
  649.        is truncated.
  650. -    - Dates updated in the copyrigth.
  651. +    - Dates updated in the copyright.
  652.      - More checks when the filesystem is mounted: the count of blocks,
  653.        fragments, and inodes per group is checked against the block size.
  654.      - The buffers used by the error routines are now static variables, to
  655. diff -u --recursive --new-file v1.2.3/linux/fs/ext2/truncate.c linux/fs/ext2/truncate.c
  656. --- v1.2.3/linux/fs/ext2/truncate.c    Wed Mar 29 06:52:59 1995
  657. +++ linux/fs/ext2/truncate.c    Wed Apr  5 12:59:50 1995
  658. @@ -351,7 +351,7 @@
  659.      /*
  660.       * If the file is not being truncated to a block boundary, the
  661.       * contents of the partial block following the end of the file must be
  662. -     * zero'ed in case it ever become accessible again because of
  663. +     * zeroed in case it ever becomes accessible again because of
  664.       * subsequent file growth.
  665.       */
  666.      offset = inode->i_size % inode->i_sb->s_blocksize;
  667. diff -u --recursive --new-file v1.2.3/linux/fs/hpfs/hpfs.h linux/fs/hpfs/hpfs.h
  668. --- v1.2.3/linux/fs/hpfs/hpfs.h    Thu Mar  9 20:37:35 1995
  669. +++ linux/fs/hpfs/hpfs.h    Wed Apr  5 12:59:50 1995
  670. @@ -134,8 +134,9 @@
  671.  
  672.  
  673.  /* The code page info pointed to by the spare block consists of an index
  674. -   block and blocks containing character maps.  The following is pretty
  675. -   sketchy, but Linux doesn't use code pages so it doesn't matter. */
  676. +   block and blocks containing uppercasing tables.  I don't know what
  677. +   these are for (CHKDSK, maybe?) -- OS/2 does not seem to use them
  678. +   itself.  Linux doesn't use them either. */
  679.  
  680.  /* block pointed to by spareblock->code_page_dir */
  681.  
  682. @@ -174,7 +175,7 @@
  683.      unsigned short ix;            /* index */
  684.      unsigned short code_page_number;    /* code page number */
  685.      unsigned short zero1;
  686. -    unsigned char map[128];        /* map for chars 80..ff */
  687. +    unsigned char map[128];        /* upcase table for chars 80..ff */
  688.      unsigned short zero2;
  689.    } code_page[3];
  690.    unsigned char incognita[78];
  691. @@ -256,7 +257,8 @@
  692.    time_t creation_date;            /* ctime */
  693.    unsigned ea_size;            /* total EA length, bytes */
  694.    unsigned char zero1;
  695. -  unsigned char locality;        /* 0=unk 1=seq 2=random 3=both */
  696. +  unsigned char ix;            /* code page index (of filename), see
  697. +                       struct code_page_data */
  698.    unsigned char namelen, name[1];    /* file name */
  699.    /* dnode_secno down;      btree down pointer, if present,
  700.                     follows name on next word boundary, or maybe it
  701. diff -u --recursive --new-file v1.2.3/linux/fs/hpfs/hpfs_caps.c linux/fs/hpfs/hpfs_caps.c
  702. --- v1.2.3/linux/fs/hpfs/hpfs_caps.c    Sun Feb  5 14:44:32 1995
  703. +++ linux/fs/hpfs/hpfs_caps.c    Wed Apr  5 12:59:50 1995
  704. @@ -27,8 +27,10 @@
  705.     necessary case folding this is impossible.)
  706.  
  707.     There is a map from Latin-1 into code page 850 for every printing
  708. -   character in Latin-1.  Most, maybe all, OS/2 installations have code
  709. -   page 850 available, and surely all (on PC hardware) have 437 available.
  710. +   character in Latin-1.  The NLS documentation of OS/2 shows that
  711. +   everybody has 850 available unless they don't have Western latin
  712. +   chars available at all (so fitting them to Linux without Unicode
  713. +   is a doomed exercise).
  714.  
  715.     It is not clear exactly how HPFS.IFS handles the situation when
  716.     multiple code pages are in use.  Experiments show that
  717. @@ -45,8 +47,8 @@
  718.     This means, I think, that HPFS.IFS operates in the current code
  719.     page, without regard to the uppercasing information recorded in
  720.     the tables on the disk.  It does record the uppercasing rules
  721. -   it used, perhaps for alien operating systems such as us, but it
  722. -   does not appear to use them itself.
  723. +   it used, perhaps for CHKDSK, but it does not appear to use them
  724. +   itself.
  725.  
  726.     So: Linux, a Latin-1 system, will operate in code page 850.  We
  727.     recode between 850 and Latin-1 when dealing with the names actually
  728. @@ -102,22 +104,29 @@
  729.  };
  730.  #endif
  731.  
  732. +#define A_GRAVE 0300
  733. +#define THORN    0336   
  734. +#define MULTIPLY 0327
  735. +#define a_grave 0340
  736. +#define thorn    0376
  737. +#define divide    0367
  738. +
  739.  static inline unsigned latin1_upcase (unsigned c)
  740.  {
  741. -  if (c - (unsigned char) 'a' <= (unsigned char) 'z' - (unsigned char) 'a'
  742. -      || (c - (unsigned char) '`' <= (unsigned char) '~' - (unsigned char) '`'
  743. -      && c != (unsigned char) 'w'))
  744. -    return c - (unsigned char) 'a' + (unsigned char) 'A';
  745. +  if (c - 'a' <= 'z' - 'a'
  746. +      || (c - a_grave <= thorn - a_grave
  747. +      && c != divide))
  748. +    return c - 'a' + 'A';
  749.    else
  750.      return c;
  751.  }
  752.  
  753.  static inline unsigned latin1_downcase (unsigned c)
  754.  {
  755. -  if (c - (unsigned char) 'A' <= (unsigned char) 'Z' - (unsigned char) 'A'
  756. -      || (c - (unsigned char) '@' <= (unsigned char) '^' - (unsigned char) '@'
  757. -      && c != (unsigned char) 'W'))
  758. -    return c + (unsigned char) 'a' - (unsigned char) 'A';
  759. +  if (c - 'A' <= 'Z' - 'A'
  760. +      || (c - A_GRAVE <= THORN - A_GRAVE
  761. +      && c != MULTIPLY))
  762. +    return c + 'a' - 'A';
  763.    else
  764.      return c;
  765.  }
  766. diff -u --recursive --new-file v1.2.3/linux/fs/namei.c linux/fs/namei.c
  767. --- v1.2.3/linux/fs/namei.c    Sun Jan 22 14:38:25 1995
  768. +++ linux/fs/namei.c    Mon Apr  3 08:28:30 1995
  769. @@ -483,7 +483,7 @@
  770.      case 0:
  771.          mode |= S_IFREG;
  772.          break;
  773. -    case S_IFREG: case S_IFCHR: case S_IFBLK: case S_IFIFO:
  774. +    case S_IFREG: case S_IFCHR: case S_IFBLK: case S_IFIFO: case S_IFSOCK:
  775.          break;
  776.      default:
  777.          return -EINVAL;
  778. diff -u --recursive --new-file v1.2.3/linux/fs/proc/array.c linux/fs/proc/array.c
  779. --- v1.2.3/linux/fs/proc/array.c    Thu Feb 23 13:31:41 1995
  780. +++ linux/fs/proc/array.c    Wed Apr  5 06:11:47 1995
  781. @@ -177,10 +177,11 @@
  782.      a = avenrun[0] + (FIXED_1/200);
  783.      b = avenrun[1] + (FIXED_1/200);
  784.      c = avenrun[2] + (FIXED_1/200);
  785. -    return sprintf(buffer,"%d.%02d %d.%02d %d.%02d\n",
  786. +    return sprintf(buffer,"%d.%02d %d.%02d %d.%02d %d/%d\n",
  787.          LOAD_INT(a), LOAD_FRAC(a),
  788.          LOAD_INT(b), LOAD_FRAC(b),
  789. -        LOAD_INT(c), LOAD_FRAC(c));
  790. +        LOAD_INT(c), LOAD_FRAC(c),
  791. +        nr_running, nr_tasks);
  792.  }
  793.  
  794.  static int get_kstat(char * buffer)
  795. diff -u --recursive --new-file v1.2.3/linux/include/linux/pci.h linux/include/linux/pci.h
  796. --- v1.2.3/linux/include/linux/pci.h    Thu Mar  9 20:37:36 1995
  797. +++ linux/include/linux/pci.h    Wed Apr  5 12:59:50 1995
  798. @@ -200,6 +200,7 @@
  799.  
  800.  #define PCI_VENDOR_ID_ADAPTEC        0x9004
  801.  #define PCI_DEVICE_ID_ADAPTEC_2940    0x7178
  802. +#define PCI_DEVICE_ID_ADAPTEC_294x    0x7078
  803.  
  804.  #define PCI_VENDOR_ID_DPT               0x1044   
  805.  #define PCI_DEVICE_ID_DPT               0xa400  
  806. @@ -220,7 +221,7 @@
  807.  #define PCI_DEVICE_ID_UMC_UM8881F    0x8881
  808.  #define PCI_DEVICE_ID_UMC_UM8891A    0x0891
  809.  #define PCI_DEVICE_ID_UMC_UM8886F    0x8886
  810. -#define PCI_DEVICE_ID_UMC_UM8673F    0x0101
  811. +#define PCI_DEVICE_ID_UMC_UM8673F    0x886a
  812.  
  813.  #define PCI_VENDOR_ID_DEC        0x1011
  814.  #define PCI_DEVICE_ID_DEC_TULIP        0x0002
  815. @@ -253,12 +254,14 @@
  816.  #define PCI_DEVICE_ID_WEITEK_P9100    0x9100
  817.  
  818.  #define PCI_VENDOR_ID_CIRRUS        0x1013
  819. +#define PCI_DEVICE_ID_CIRRUS_5430    0x00A0
  820.  #define PCI_DEVICE_ID_CIRRUS_5434_4    0x00A4
  821.  #define PCI_DEVICE_ID_CIRRUS_5434_8    0x00A8
  822.  #define PCI_DEVICE_ID_CIRRUS_6729    0x1100
  823.  
  824.  #define PCI_VENDOR_ID_BUSLOGIC        0x104B
  825.  #define PCI_DEVICE_ID_BUSLOGIC_946C    0x1040
  826. +#define PCI_DEVICE_ID_BUSLOGIC_946C_2    0x0140
  827.  
  828.  #define PCI_VENDOR_ID_N9        0x105D
  829.  #define PCI_DEVICE_ID_N9_I128        0x2309
  830. @@ -267,6 +270,7 @@
  831.  #define PCI_DEVICE_ID_AI_M1435        0x1435
  832.  
  833.  #define PCI_VENDOR_ID_AL        0x10b9
  834. +#define PCI_DEVICE_ID_AL_M1445        0x1445
  835.  #define PCI_DEVICE_ID_AL_M1449        0x1449
  836.  #define PCI_DEVICE_ID_AL_M1451        0x1451
  837.  #define PCI_DEVICE_ID_AL_M4803        0x5215
  838. @@ -282,6 +286,7 @@
  839.  
  840.  #define PCI_VENDOR_ID_VISION        0x1098
  841.  #define PCI_DEVICE_ID_VISION_QD8500    0x0001
  842. +#define PCI_DEVICE_ID_VISION_QD8580    0x0002
  843.  
  844.  #define PCI_VENDOR_ID_AMD        0x1022
  845.  #define PCI_DEVICE_ID_AMD_LANCE        0x2000
  846. @@ -335,13 +340,25 @@
  847.  #define PCI_VENDOR_ID_CT        0x102c
  848.  #define PCI_DEVICE_ID_CT_65545        0x00d8
  849.  
  850. +#define PCI_VENDOR_ID_FUTUR        0x1036
  851. +#define PCI_DEVICE_ID_FUTUR_18C30    0x0000
  852. +
  853. +#define PCI_VENDOR_ID_WINBOND        0x10ad
  854. +#define PCI_DEVICE_ID_WINBOND_83769    0x0001
  855. +
  856. +#define PCI_VENDOR_ID_3COM        0x10b7
  857. +#define PCI_DEVICE_ID_3COM_3C590    0x5900
  858. +#define PCI_DEVICE_ID_3COM_3C595TX    0x5950
  859. +#define PCI_DEVICE_ID_3COM_3C595T4    0x5951
  860. +#define PCI_DEVICE_ID_3COM_3C595MII    0x5952
  861. +
  862.  struct pci_vendor_type {
  863.      unsigned short vendor_id;
  864.      char *vendor_name;
  865.  };
  866.  
  867.  
  868. -#define PCI_VENDOR_NUM 36
  869. +#define PCI_VENDOR_NUM 39
  870.  #define PCI_VENDOR_TYPE { \
  871.      {PCI_VENDOR_ID_NCR,        "NCR"}, \
  872.      {PCI_VENDOR_ID_ADAPTEC,        "Adaptec"}, \
  873. @@ -378,7 +395,10 @@
  874.      {PCI_VENDOR_ID_EF,        "Efficient Networks"}, \
  875.      {PCI_VENDOR_ID_HER,        "Hercules"}, \
  876.      {PCI_VENDOR_ID_ATRONICS,    "Atronics"}, \
  877. -    {PCI_VENDOR_ID_CT,        "Chips & Technologies"} \
  878. +    {PCI_VENDOR_ID_CT,        "Chips & Technologies"}, \
  879. +    {PCI_VENDOR_ID_FUTUR,        "Future Domain"},\
  880. +    {PCI_VENDOR_ID_WINBOND,        "Winbond"}, \
  881. +    {PCI_VENDOR_ID_3COM,        "3Com"} \
  882.  }
  883.  
  884.  
  885. @@ -397,13 +417,14 @@
  886.      char *device_name;
  887.  };
  888.  
  889. -#define PCI_DEVICE_NUM 71
  890. +#define PCI_DEVICE_NUM 82
  891.  #define PCI_DEVICE_TYPE { \
  892.      {0xff,    PCI_VENDOR_ID_NCR,    PCI_DEVICE_ID_NCR_53C810,    "53c810"}, \
  893.      {0xff,    PCI_VENDOR_ID_NCR,    PCI_DEVICE_ID_NCR_53C815,    "53c815"}, \
  894.      {0xff,    PCI_VENDOR_ID_NCR,    PCI_DEVICE_ID_NCR_53C820,    "53c820"}, \
  895.      {0xff,    PCI_VENDOR_ID_NCR,    PCI_DEVICE_ID_NCR_53C825,    "53c825"}, \
  896.      {0xff,    PCI_VENDOR_ID_ADAPTEC,    PCI_DEVICE_ID_ADAPTEC_2940,    "2940"}, \
  897. +    {0xff,    PCI_VENDOR_ID_ADAPTEC,    PCI_DEVICE_ID_ADAPTEC_294x,    "294x"}, \
  898.      {0xff,    PCI_VENDOR_ID_DPT,    PCI_DEVICE_ID_DPT,        "SmartCache/Raid"}, \
  899.      {0xff,    PCI_VENDOR_ID_S3,    PCI_DEVICE_ID_S3_864_1,        "Vision 864-P"}, \
  900.      {0xff,    PCI_VENDOR_ID_S3,    PCI_DEVICE_ID_S3_864_2,        "Vision 864-P"}, \
  901. @@ -435,12 +456,15 @@
  902.      {0xff,    PCI_VENDOR_ID_ATI,    PCI_DEVICE_ID_ATI_M64,        "Mach 64"}, \
  903.      {0xff,    PCI_VENDOR_ID_WEITEK,    PCI_DEVICE_ID_WEITEK_P9000,    "P9000"}, \
  904.      {0xff,    PCI_VENDOR_ID_WEITEK,    PCI_DEVICE_ID_WEITEK_P9100,    "P9100"}, \
  905. +    {0xff,    PCI_VENDOR_ID_CIRRUS,    PCI_DEVICE_ID_CIRRUS_5430,    "GD 5430"}, \
  906.      {0xff,    PCI_VENDOR_ID_CIRRUS,    PCI_DEVICE_ID_CIRRUS_5434_4,    "GD 5434"}, \
  907.      {0xff,    PCI_VENDOR_ID_CIRRUS,    PCI_DEVICE_ID_CIRRUS_5434_8,    "GD 5434"}, \
  908.      {0xff,    PCI_VENDOR_ID_CIRRUS,    PCI_DEVICE_ID_CIRRUS_6729,    "CL 6729"}, \
  909.      {0xff,    PCI_VENDOR_ID_BUSLOGIC,PCI_DEVICE_ID_BUSLOGIC_946C,    "946C"}, \
  910. +    {0xff,    PCI_VENDOR_ID_BUSLOGIC,PCI_DEVICE_ID_BUSLOGIC_946C_2,    "946C"}, \
  911.      {0xff,    PCI_VENDOR_ID_N9,    PCI_DEVICE_ID_N9_I128,        "Imagine 128"}, \
  912.      {0xff,    PCI_VENDOR_ID_AI,    PCI_DEVICE_ID_AI_M1435,        "M1435"}, \
  913. +    {0xff,    PCI_VENDOR_ID_AL,    PCI_DEVICE_ID_AL_M1445,        "M1445"}, \
  914.      {0xff,    PCI_VENDOR_ID_AL,    PCI_DEVICE_ID_AL_M1449,        "M1449"}, \
  915.      {0xff,    PCI_VENDOR_ID_AL,    PCI_DEVICE_ID_AL_M1451,        "M1451"}, \
  916.      {0xff,    PCI_VENDOR_ID_AL,    PCI_DEVICE_ID_AL_M4803,        "MS4803"}, \
  917. @@ -449,7 +473,8 @@
  918.      {0xff,    PCI_VENDOR_ID_TSENG,    PCI_DEVICE_ID_TSENG_W32P_c,    "ET4000W32P rev C"}, \
  919.      {0xff,    PCI_VENDOR_ID_TSENG,    PCI_DEVICE_ID_TSENG_W32P_d,    "ET4000W32P rev D"}, \
  920.      {0xff,    PCI_VENDOR_ID_CMD,    PCI_DEVICE_ID_CMD_640,        "640A"}, \
  921. -    {0xff,    PCI_VENDOR_ID_VISION,    PCI_DEVICE_ID_VISION_QD8500,    "QD-8500PCI"}, \
  922. +    {0xff,    PCI_VENDOR_ID_VISION,    PCI_DEVICE_ID_VISION_QD8500,    "QD-8500"}, \
  923. +    {0xff,    PCI_VENDOR_ID_VISION,    PCI_DEVICE_ID_VISION_QD8580,    "QD-8580"}, \
  924.      {0xff,    PCI_VENDOR_ID_AMD,    PCI_DEVICE_ID_AMD_LANCE,    "79C970"}, \
  925.      {0xff,    PCI_VENDOR_ID_AMD,    PCI_DEVICE_ID_AMD_SCSI,        "53C974"}, \
  926.      {0xff,    PCI_VENDOR_ID_VLSI,    PCI_DEVICE_ID_VLSI_82C593,    "82C593-FC1"}, \
  927. @@ -469,7 +494,13 @@
  928.      {0xff,    PCI_VENDOR_ID_EF,    PCI_DEVICE_ID_EF_ATM,        "155P-MF1"}, \
  929.      {0xff,    PCI_VENDOR_ID_HER,    PCI_DEVICE_ID_HER_STING,    "Stingray"}, \
  930.      {0xff,    PCI_VENDOR_ID_ATRONICS,    PCI_DEVICE_ID_ATRONICS_2015,    "IDE-2015PL"}, \
  931. -    {0xff,    PCI_VENDOR_ID_CT,    PCI_DEVICE_ID_CT_65545,        "65545"} \
  932. +    {0xff,    PCI_VENDOR_ID_CT,    PCI_DEVICE_ID_CT_65545,        "65545"}, \
  933. +    {0xff,    PCI_VENDOR_ID_FUTUR,    PCI_DEVICE_ID_FUTUR_18C30,        "TMC-18C30"}, \
  934. +    {0xff,    PCI_VENDOR_ID_WINBOND,    PCI_DEVICE_ID_WINBOND_83769,        "W83769F"}, \
  935. +    {0xff,    PCI_VENDOR_ID_3COM,    PCI_DEVICE_ID_3COM_3C590,        "3C590 10bT"}, \
  936. +    {0xff,    PCI_VENDOR_ID_3COM,    PCI_DEVICE_ID_3COM_3C595TX,        "3C595 100bTX"}, \
  937. +    {0xff,    PCI_VENDOR_ID_3COM,    PCI_DEVICE_ID_3COM_3C595T4,        "3C595 100bT4"}, \
  938. +    {0xff,    PCI_VENDOR_ID_3COM,    PCI_DEVICE_ID_3COM_3C595MII,        "3C595 100b-MII"} \
  939.  }
  940.  
  941.  /* An item of this structure has the following meaning    */
  942. diff -u --recursive --new-file v1.2.3/linux/include/linux/sched.h linux/include/linux/sched.h
  943. --- v1.2.3/linux/include/linux/sched.h    Thu Mar  9 20:37:36 1995
  944. +++ linux/include/linux/sched.h    Wed Apr  5 06:12:24 1995
  945. @@ -47,6 +47,8 @@
  946.  #define CT_TO_SECS(x)    ((x) / HZ)
  947.  #define CT_TO_USECS(x)    (((x) % HZ) * 1000000/HZ)
  948.  
  949. +extern int nr_running, nr_tasks;
  950. +
  951.  #define FIRST_TASK task[0]
  952.  #define LAST_TASK task[NR_TASKS-1]
  953.  
  954. diff -u --recursive --new-file v1.2.3/linux/kernel/exit.c linux/kernel/exit.c
  955. --- v1.2.3/linux/kernel/exit.c    Tue Apr  4 09:05:34 1995
  956. +++ linux/kernel/exit.c    Wed Apr  5 06:06:10 1995
  957. @@ -91,6 +91,7 @@
  958.      }
  959.      for (i=1 ; i<NR_TASKS ; i++)
  960.          if (task[i] == p) {
  961. +            nr_tasks--;
  962.              task[i] = NULL;
  963.              REMOVE_LINKS(p);
  964.              if (STACK_MAGIC != *(unsigned long *)p->kernel_stack_page)
  965. diff -u --recursive --new-file v1.2.3/linux/kernel/fork.c linux/kernel/fork.c
  966. --- v1.2.3/linux/kernel/fork.c    Wed Mar  1 13:31:54 1995
  967. +++ linux/kernel/fork.c    Wed Apr  5 06:13:00 1995
  968. @@ -24,6 +24,8 @@
  969.  #include <asm/segment.h>
  970.  #include <asm/system.h>
  971.  
  972. +int nr_tasks=1;
  973. +int nr_running=1;
  974.  long last_pid=0;
  975.  
  976.  static int find_empty_process(void)
  977. @@ -203,6 +205,7 @@
  978.      p->mm->swappable = 0;    /* don't try to swap it out before it's set up */
  979.      task[nr] = p;
  980.      SET_LINKS(p);
  981. +    nr_tasks++;
  982.  
  983.      /* copy all the process information */
  984.      copy_thread(nr, clone_flags, usp, p, regs);
  985. @@ -221,6 +224,7 @@
  986.  bad_fork_cleanup:
  987.      task[nr] = NULL;
  988.      REMOVE_LINKS(p);
  989. +    nr_tasks--;
  990.  bad_fork_free:
  991.      free_page(new_stack);
  992.      free_page((long) p);
  993. diff -u --recursive --new-file v1.2.3/linux/kernel/ksyms.c linux/kernel/ksyms.c
  994. --- v1.2.3/linux/kernel/ksyms.c    Wed Mar 29 06:53:00 1995
  995. +++ linux/kernel/ksyms.c    Wed Apr  5 13:00:05 1995
  996. @@ -38,8 +38,10 @@
  997.  #include <linux/net.h>
  998.  #include <linux/netdevice.h>
  999.  #include <linux/ip.h>
  1000. +#include <linux/tcp.h>
  1001.  #include "../net/inet/protocol.h"
  1002.  #include "../net/inet/arp.h"
  1003. +#include "../drivers/net/slhc.h"
  1004.  #endif
  1005.  #ifdef CONFIG_PCI
  1006.  #include <linux/pci.h>
  1007. @@ -271,6 +273,11 @@
  1008.  #ifdef CONFIG_INET    
  1009.      X(inet_add_protocol),
  1010.      X(inet_del_protocol),
  1011. +    X(slhc_init),
  1012. +    X(slhc_free),
  1013. +    X(slhc_remember),
  1014. +    X(slhc_compress),
  1015. +    X(slhc_uncompress),
  1016.  #endif
  1017.      /* Device callback registration */
  1018.      X(register_netdevice_notifier),
  1019. diff -u --recursive --new-file v1.2.3/linux/kernel/sched.c linux/kernel/sched.c
  1020. --- v1.2.3/linux/kernel/sched.c    Wed Mar 29 06:53:00 1995
  1021. +++ linux/kernel/sched.c    Wed Apr  5 06:16:01 1995
  1022. @@ -125,6 +125,7 @@
  1023.      itimer_next = ~0;
  1024.      sti();
  1025.      need_resched = 0;
  1026. +    nr_running = 0;
  1027.      p = &init_task;
  1028.      for (;;) {
  1029.          if ((p = p->next_task) == &init_task)
  1030. @@ -174,8 +175,11 @@
  1031.      for (;;) {
  1032.          if ((p = p->next_task) == &init_task)
  1033.              goto confuse_gcc2;
  1034. -        if (p->state == TASK_RUNNING && p->counter > c)
  1035. -            c = p->counter, next = p;
  1036. +        if (p->state == TASK_RUNNING) {
  1037. +            nr_running++;
  1038. +            if (p->counter > c)
  1039. +                c = p->counter, next = p;
  1040. +        }
  1041.      }
  1042.  confuse_gcc2:
  1043.      if (!c) {
  1044. diff -u --recursive --new-file v1.2.3/linux/mm/memory.c linux/mm/memory.c
  1045. --- v1.2.3/linux/mm/memory.c    Thu Mar  2 09:42:00 1995
  1046. +++ linux/mm/memory.c    Thu Apr  6 07:22:54 1995
  1047. @@ -159,7 +159,7 @@
  1048.          panic("task[0] (swapper) doesn't support exec()\n");
  1049.      page_dir = pgd_offset(tsk, 0);
  1050.      if (!page_dir || page_dir == swapper_pg_dir) {
  1051. -        printk("Trying to clear kernel page-directory: not good\n");
  1052. +        printk("%s trying to clear kernel page-directory: not good\n", tsk->comm);
  1053.          return;
  1054.      }
  1055.      if (pgd_inuse(page_dir)) {
  1056. @@ -197,7 +197,7 @@
  1057.      }
  1058.      page_dir = pgd_offset(tsk, 0);
  1059.      if (!page_dir || page_dir == swapper_pg_dir) {
  1060. -        printk("Trying to free kernel page-directory: not good\n");
  1061. +        printk("%s trying to free kernel page-directory: not good\n", tsk->comm);
  1062.          return;
  1063.      }
  1064.      SET_PAGE_DIR(tsk, swapper_pg_dir);
  1065. diff -u --recursive --new-file v1.2.3/linux/mm/swap.c linux/mm/swap.c
  1066. --- v1.2.3/linux/mm/swap.c    Wed Mar 29 06:53:00 1995
  1067. +++ linux/mm/swap.c    Wed Apr  5 06:08:40 1995
  1068. @@ -523,7 +523,7 @@
  1069.      int loop, counter;
  1070.      struct task_struct *p;
  1071.  
  1072. -    counter = 2*NR_TASKS >> priority;
  1073. +    counter = 2*nr_tasks >> priority;
  1074.      for(; counter >= 0; counter--) {
  1075.          /*
  1076.           * Check that swap_task is suitable for swapping.  If not, look for
  1077. diff -u --recursive --new-file v1.2.3/linux/net/inet/icmp.c linux/net/inet/icmp.c
  1078. --- v1.2.3/linux/net/inet/icmp.c    Thu Mar  9 20:37:37 1995
  1079. +++ linux/net/inet/icmp.c    Thu Apr  6 11:54:28 1995
  1080. @@ -210,7 +210,7 @@
  1081.       */
  1082.       
  1083.      len = dev->hard_header_len + sizeof(struct iphdr) + sizeof(struct icmphdr) +
  1084. -        sizeof(struct iphdr) + 8;    /* amount of header to return */
  1085. +        sizeof(struct iphdr) + 32;    /* amount of header to return */
  1086.         
  1087.      skb = (struct sk_buff *) alloc_skb(len, GFP_ATOMIC);
  1088.      if (skb == NULL) 
  1089. diff -u --recursive --new-file v1.2.3/linux/net/inet/ip.c linux/net/inet/ip.c
  1090. --- v1.2.3/linux/net/inet/ip.c    Sat Mar 18 12:45:46 1995
  1091. +++ linux/net/inet/ip.c    Thu Apr  6 10:42:05 1995
  1092. @@ -68,6 +68,7 @@
  1093.   *        Bjorn Ekwall    :    Removed ip_csum (from slhc.c too)
  1094.   *        Bjorn Ekwall    :    Moved ip_fast_csum to ip.h (inline!)
  1095.   *        Stefan Becker   :       Send out ICMP HOST REDIRECT
  1096. + *        Alan Cox    :    Only send ICMP_REDIRECT if src/dest are the same net.
  1097.   *  
  1098.   *
  1099.   * To Fix:
  1100. @@ -1365,11 +1366,11 @@
  1101.       *    arrived upon. We now generate an ICMP HOST REDIRECT giving the route
  1102.       *    we calculated.
  1103.       */
  1104. -#ifdef IP_NO_ICMP_REDIRECT
  1105. +#ifdef CONFIG_IP_NO_ICMP_REDIRECT
  1106.      if (dev == dev2)
  1107.          return;
  1108.  #else
  1109. -    if (dev == dev2)
  1110. +    if (dev == dev2 && (iph->saddr&dev->pa_mask) == (iph->daddr & dev->pa_mask))
  1111.          icmp_send(skb, ICMP_REDIRECT, ICMP_REDIR_HOST, raddr, dev);
  1112.  #endif        
  1113.  
  1114. diff -u --recursive --new-file v1.2.3/linux/net/inet/ipx.c linux/net/inet/ipx.c
  1115. --- v1.2.3/linux/net/inet/ipx.c    Wed Mar 29 06:53:00 1995
  1116. +++ linux/net/inet/ipx.c    Thu Apr  6 08:50:11 1995
  1117. @@ -431,6 +431,8 @@
  1118.  
  1119.      /* Hopefully, most cases */
  1120.      if (in_offset == out_offset) {
  1121. +        skb->len += out_offset;
  1122. +        skb->arp = skb->free = 1;
  1123.          return skb;
  1124.      }
  1125.  
  1126. @@ -440,6 +442,7 @@
  1127.          skb->h.raw = &(skb->data[out_offset]);
  1128.          memmove(skb->h.raw, oldraw, skb->len);
  1129.          skb->len += out_offset;
  1130. +        skb->arp = skb->free = 1;
  1131.          return skb;
  1132.      }
  1133.  
  1134. @@ -570,6 +573,11 @@
  1135.          }
  1136.      }
  1137.  
  1138. +    if (ipx->ipx_dest.net == 0L)
  1139. +        ipx->ipx_dest.net = intrfc->if_netnum;
  1140. +    if (ipx->ipx_source.net == 0L)
  1141. +        ipx->ipx_source.net = intrfc->if_netnum;
  1142. +
  1143.      if (intrfc->if_netnum != ipx->ipx_dest.net) {
  1144.          /* We only route point-to-point packets. */
  1145.          if ((skb->pkt_type != PACKET_BROADCAST) &&
  1146. @@ -1708,9 +1716,9 @@
  1147.  {
  1148.      ipx_socket *sk=(ipx_socket *)sock->data;
  1149.      struct sockaddr_ipx *sipx=(struct sockaddr_ipx *)sip;
  1150. -    struct ipx_packet    *ipx = NULL;
  1151. -    /* FILL ME IN */
  1152. +    struct ipx_packet *ipx = NULL;
  1153.      int copied = 0;
  1154. +    int truesize;
  1155.      struct sk_buff *skb;
  1156.      int er;
  1157.      
  1158. @@ -1732,7 +1740,8 @@
  1159.          return er;
  1160.  
  1161.      ipx = (ipx_packet *)(skb->h.raw);
  1162. -    copied=ntohs(ipx->ipx_pktsize) - sizeof(ipx_packet);
  1163. +    truesize=ntohs(ipx->ipx_pktsize) - sizeof(ipx_packet);
  1164. +    copied = (truesize > size) ? size : truesize;
  1165.      skb_copy_datagram(skb,sizeof(struct ipx_packet),ubuf,copied);
  1166.      
  1167.      if(sipx)
  1168. @@ -1744,7 +1753,7 @@
  1169.          sipx->sipx_type = ipx->ipx_type;
  1170.      }
  1171.      skb_free_datagram(skb);
  1172. -    return(copied);
  1173. +    return(truesize);
  1174.  }        
  1175.  
  1176.  static int ipx_write(struct socket *sock, char *ubuf, int size, int noblock)
  1177.