Patch Name: PHNE_19564 Patch Description: s700_800 10.20 1000Base-SX B.10.20.0[123579] cumul. patch Creation Date: 99/11/10 Post Date: 99/12/08 Hardware Platforms - OS Releases: s700: 10.20 s800: 10.20 Products: HP HSC Gigabit Ethernet B.10.20.01 ; HP HSC_PCI Gigabit Ethernet Driver B.10.20.02 B.10.20.03 B.10.20.05 B.10.20.07 B.10.20.09 Filesets: GBE-HSC.GBE-KRN GBE-HSC.GBE-RUN GBE-CMD-COM.GBE-CMD GE-PCI.GE-KRN GE-PCI.GE-RUN GBE-PCI-CMD-COM.GBE-CMD GBE-HSC-PCI.GBE-HSC-PCI-KRN GBE-HSC-PCI.GBE-HSC-PCI-RUN GBE-CMD-COM.GBE-HSC-PCI-CMD Automatic Reboot?: Yes Status: General Superseded Critical: Yes PHNE_19564: PANIC PHNE_18505: PANIC PHNE_17408: PANIC Path Name: /hp-ux_patches/s700_800/10.X/PHNE_19564 Symptoms: PHNE_19564: 1. The gbeutil binary is corrupted and does not have execute permissions in revision B.10.20.07 of the Gigabit Ethernet Adapter product. 2. gbeutil displays the value of "Mapping failures" incorrectly when the driver statistics is printed. 3. On K, R and D-class servers, and B, C and J2240 workstations, the driver generates corrupted outbound packets. 4. The Gigabit Ethernet driver displays each outbound packet twice when nettl(1M) tracing is enabled. 5. NFS traffic may hang when outbound promiscuous mode is enabled. 6. A telnet session may hang or timeout under heavy traffic. 7. The Gigabit Ethernet driver displays an incorrect error message "Could not read from the card serial EEPROM" in the dmesg(1M) output when tuning parameters are modified through gbeutil. 8. The system may panic with a data page fault under outbound UDP traffic when outbound promiscuous mode is enabled. 9. The Gigabit Ethernet driver displays redundant debugging information in the dmesg(1M) output. 10. The system may panic under heavy outbound traffic when outbound promiscuous mode is enabled and disabled repeatedly. PHNE_18505: 1. The Gigabit Ethernet driver may not be able to send packets when a lanadmin(1M) station address change command is issued while the cable is disconnected. 2. The performance of the Gigabit Ethernet driver is sub-optimal. 3. The 1000Base-SX Gigabit Ethernet adapter hangs intermittently during heavy data transfer. 4. The system may panic due to a spinlock deadlock on outbound data transfer. 5. The Gigabit Ethernet driver displays an incorrect nettl(1M) logging message "unable to allocate buffers" when the system has adequate memory. PHNE_17408: 1. The system may panic while using lanadmin(1M) reset during data transfer. 2. TCP data transfer between EISA 100Base-T and 1000Base-SX adapters either hangs or is very slow. 3. The system may panic when the cable is disconnected during data transfer. Defect Description: PHNE_19564: 1. The gbeutil binary was corrupted due to incorrect product packaging. 2. The "Mapping failures" counter was incremented incorrectly. 3. On certain systems, the hardware was incorrectly prefetching cachelines on page boundaries, resulting in a data corruption. 4. The Gigabit Ethernet driver was incorrectly displaying each outbound packets twice when nettl(1M) tracing was enabled. 5. The outbound packet was not looped back to the promiscuous stream correctly. 6. The transmit routine of the Gigabit Ethernet driver did not initialize transmit buffers correctly for packets with more than 6 buffers. 7. The Gigabit Ethernet driver accessed the serial EEPROM on the adapter unnecessarily, after modifying the tuning parameters. 8. When outbound promiscuous mode was enabled, the Gigabit Ethernet driver did not check for buffer allocation failures before mapping buffers for DMA transfer. 9. The Gigabit Ethernet driver incorrectly displayed redundant debugging information in the dmesg(1M) output. 10. When outbound promiscuous mode was enabled and disabled repeatedly, the Gigabit Ethernet driver incorrectly referenced the checksum information for packets that need not be checksummed. Resolution: 1. The gbeutil binary has been packaged into the product bundle correctly. 2. The "Mapping failures" counter is incremented correctly. 3. A workaround has been implemented in the Gigabit Ethernet driver to prevent hardware from incorrectly prefetching cachelines on page boundaries, thus preventing a data corruption. 4. The transmit path of the Gigabit Ethernet driver has been modified to display each outbound packet once when nettl(1M) tracing is enabled. 5. Outbound packets are looped back to the promiscuous stream correctly. 6. The transmit routine of the Gigabit Ethernet driver initializes transmit buffers correctly for packets with more than 6 buffers. 7. The Gigabit Ethernet driver does not access the serial EEPROM on the adapter after modifying the tuning parameters. 8. When outbound promiscuous mode is enabled, the Gigabit Ethernet driver checks for buffer allocation failures before mapping buffers for DMA transfer. 9. The redundant debugging information has been removed from the dmesg(1M) output. 10. When outbound promiscuous mode is enabled and disabled repeatedly, the Gigabit Ethernet driver does not reference the checksum information for packets that need not be checksummed. PHNE_18505: 1. The station address maintained by the Gigabit Ethernet driver was not updated when a lanadmin(1M) station address change command is issued when the cable is disconnected. 2. The transmit and receive paths of the Gigabit Ethernet driver were not optimized. 3. The 1000Base-SX adapter firmware did not handle DMA transfers that end on a 32-bit boundary correctly. 4. The Gigabit Ethernet driver did not initialize transmit buffers correctly for packets with more than 6 buffers. 5. The receive buffers were incorrectly initialized during buffer replenishment. Resolution: 1. The Gigabit Ethernet driver has been modified to allow station address changes when the cable is disconnected. 2. The Gigabit Ethernet driver's transmit and receive paths have been modified to improve the driver performance. 3. The 1000Base-SX adapter firmware has been modified to to eliminate hangs during DMA transfers that end on a 32-bit boundary. 4. The transmit routine of the Gigabit Ethernet driver has been modified to initialize transmit buffers correctly for packets with more than 6 buffers. 5. The receive buffers are initialized correctly during buffer replenishment. PHNE_17408: 1. The reset routine of the driver was not initializing the addresses of receive buffers correctly on memory allocation failures. 2. The 1000Base-SX adapter firmware was computing the checksums of padded short packets incorrectly. 3. The receive routine of the driver was handling link down notifications incorrectly. SR: 1653283762 8606103655 8606112012 8606109057 8606104962 8606108254 8606108311 8606109364 8606109937 Patch Files: /usr/conf/lib/libgelan.a /usr/conf/lib/gelan_dbg.o /usr/conf/master.d/gelan /usr/bin/gbeutil /sbin/init.d/hpgelan /usr/lib/nls/msg/C/dsgelan.cat /usr/lib/lanadmin/libdsgelan.1 /usr/lib/nls/msg/C/pegelan.cat /usr/lib/lanscan/libpegelan.1 /usr/lib/nls/msg/C/fmgelan.cat /usr/lib/libfmgelan.1 /sbin/rc2.d/S308hpgelan /usr/lib/lanadmin/libdsgelan.sl /usr/lib/lanscan/libpegelan.sl /usr/lib/libfmgelan.sl /usr/newconfig/etc/rc.config.d/hpgelanconf what(1) Output: /usr/bin/gbeutil: gbeutil Revision: B.10.20.10 - PHNE_19564 Nov 30 199 9 17:04:52 /usr/lib/libfmgelan.1: GELAN Subsystem Formatter Revision: B.10.20.10 - PHN E_19564 Nov 30 1999 17:05:00 /usr/lib/libfmgelan.sl: GELAN Subsystem Formatter Revision: B.10.20.10 - PHN E_19564 Nov 30 1999 17:05:00 /usr/conf/lib/libgelan.a: gelan 1000Base-SX Revision: B.10.20.10 - PHNE_19564 Nov 30 1999 17:03:35 /usr/conf/master.d/gelan: None /usr/conf/lib/gelan_dbg.o: None /usr/lib/nls/msg/C/dsgelan.cat: None /usr/lib/lanadmin/libdsgelan.1: None /usr/lib/nls/msg/C/pegelan.cat: None /usr/lib/lanscan/libpegelan.1: None /usr/lib/nls/msg/C/fmgelan.cat: None /sbin/init.d/hpgelan: None /usr/newconfig/etc/rc.config.d/hpgelanconf: None /sbin/rc2.d/S308hpgelan: None /usr/lib/lanadmin/libdsgelan.sl: None /usr/lib/lanscan/libpegelan.sl: None cksum(1) Output: 3684250756 352646 /usr/conf/lib/libgelan.a 2310698921 172504 /usr/conf/lib/gelan_dbg.o 789094986 73874 /usr/bin/gbeutil 2598417103 3333 /usr/conf/master.d/gelan 456662446 3057 /usr/lib/nls/msg/C/dsgelan.cat 4084132777 16413 /usr/lib/lanadmin/libdsgelan.1 4084132777 16413 /usr/lib/lanadmin/libdsgelan.sl 3231781941 114 /usr/lib/nls/msg/C/pegelan.cat 208173111 12301 /usr/lib/lanscan/libpegelan.1 208173111 12301 /usr/lib/lanscan/libpegelan.sl 1224218730 3668 /usr/lib/nls/msg/C/fmgelan.cat 3316520135 12305 /usr/lib/libfmgelan.1 3316520135 12305 /usr/lib/libfmgelan.sl 365983731 11146 /sbin/init.d/hpgelan 365983731 11146 /sbin/rc2.d/S308hpgelan 964253364 2643 /usr/newconfig/etc/rc.config.d/hpgelanconf Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_17408 PHNE_18505 Equivalent Patches: None Patch Package Size: 730 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHNE_19564 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHNE_19564.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHNE_19564. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. WARNING: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHNE_19564.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_19564.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: A new /etc/rc.config.d/hpgelanconf was delivered as /usr/newconfig/etc/rc.config.d/hpgelanconf. If you edit /etc/rc.config.d/hpgelanconf you may want to merge the files.