;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*- ;;; Patch file for System version 121.24 ;;; Reason: ;;; The 3com microcode does not check the bits the 3com board sets to indicate that the received packet ;;; had FCS or framing errors. Neither does the routine chaos:lambda-get-next-packet. Thus, if the ;;; 3com receives a bad packet, the chaos code won't know. The microcode should probably not pass such ;;; packets up, but it is easy enough to discard them in lambda-get-next-pkt... ;;; Written 6-Feb-87 20:57:02 by pld (Peter L. DeWolf) at site LMI Cambridge ;;; while running on Azathoth from band 3 ;;; with Experimental System 121.23, Experimental Lambda-Diag 15.0, Experimental ZMail 70.2, Experimental KERMIT 32.0, Experimental Unix-Interface 10.0, Experimental Local-File 72.0, Experimental FILE-Server 21.0, Experimental Tape 13.0, Experimental Site Data Editor 5.0, microcode 1733, SDU Boot Tape 3.12, SDU ROM 102, the old ones. ; From modified file DJ: L.NETWORK.CHAOS; CHSNCP.LISP#376 at 6-Feb-87 20:57:03 #8R CHAOS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "CHAOS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; CHAOS; CHSNCP  " (defun lambda-get-next-pkt (&aux int-pkt) (cond ((null fake-receive-list) (setq int-pkt (chaos-list-get int-receive-list-pointer)) (when (and int-pkt (not (zerop (logand #o250 (int-pkt-csr-2 int-pkt))))) (incf ethernet:*ethernet-fcs-errors*) (setf (int-pkt-thread int-pkt) nil) (free-int-pkt int-pkt) (return-from lambda-get-next-pkt nil))) (t (without-interrupts (setq int-pkt fake-receive-list) (setq fake-receive-list (int-pkt-thread fake-receive-list))))) (incf pkts-received) int-pkt) ))