Patch Name: PHNE_21390 Patch Description: s700_800 11.00 HSC FDDI B.11.00.0[0-7] cumulative patch Creation Date: 00/03/22 Post Date: 00/07/18 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: HSC FDDI B.11.00 B.11.00.01 B.11.00.02 B.11.00.05 B.11.00.07 Filesets: FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_32,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_32,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.05,fa=HP-UX_B.11.00_32,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_32,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_64,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_64,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.05,fa=HP-UX_B.11.00_64,v=HP FDDI-HSC.FDDI3-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_64,v=HP FDDI-HSC.FDDI3-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP FDDI-HSC.FDDI3-RUN,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64,v=HP FDDI-HSC.FDDI3-RUN,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64,v=HP FDDI-HSC.FDDI3-RUN,fr=B.11.00.05,fa=HP-UX_B.11.00_32/64,v=HP FDDI-HSC.FDDI3-RUN,fr=B.11.00.07,fa=HP-UX_B.11.00_32/64,v=HP FDDI-CMD-COM.FDDI-CMD,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64,v=HP FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64,v=HP FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.05,fa=HP-UX_B.11.00_32/64,v=HP FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.07,fa=HP-UX_B.11.00_32/64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_21390: PANIC MEMORY_LEAK PHNE_18523: PANIC PHNE_16504: PANIC PHNE_15668: OTHER Card hang. PHNE_14076: MEMORY_LEAK OTHER Card is not recognized on certain T600 configurations. PHNE_13192: HANG 64-bit T-600 systems hang with the HSC FDDI link. Category Tags: defect_repair enhancement general_release critical panic halts_system memory_leak Path Name: /hp-ux_patches/s700_800/11.X/PHNE_21390 Symptoms: PHNE_21390: 1. CR JAGac40039 / SR 8606124656 Card reset code stops and resets wrong transmit ring. 2. CR JAGac20348 / SR 8606114078 HSC FDDI Support for LAN Monitor. 3. CR JAGab65940 / SR 5003442004 ER: Default Transmit Threshold value to be made configurable. 4. CR JAGac40038 / SR 8606124655 Potential Memory leak in EISA/HSC FDDI drivers. 5. CR JAGab75863 / SR 8606106601 Multicast addresses not reloaded after a Card reset. 6. CR JAGab75691 / SR 8606106495 Incorrect arguments to fddi3_log_msg. 7. CR JAGab74656 / SR 8606105918 Spinlock held during copyout. 8. CR JAGab74653 / SR 8606105915 Spinunlock done for the lock which was not held by the driver. 9. CR JAGab64949 / SR 5003451047 ER: Add option for fddiif/fddilink utilities to support writing to an output file. PHNE_18523: 1. When the MTU of the HSC FDDI interface is set or reset using the lanadmin(1M) command with -M or -R options respectively, the command completes without any errors but does not set/reset the MTU value for the interface. 2. When lanadmin(1M) is used to set the physical address of the interface to the broadcast address ( 0xffffffffffff ) or to 0 ( 0x000000000000 ), the command succeeds. 3. The system panics with a 'Data page fault' when promiscuous mode is repeatedly turned on and off over the HSC FDDI interface. 4. The system may panic with a 'Data page fault' when the HSC FDDI interface is operating in promiscuous mode with heavy inbound traffic. 5. The system HPMCs while running multiple netperf streams over the HSC FDDI interface. 6. The system panics with a 'Data page fault' while running multiple netperf streams over the HSC FDDI interface. 7. The HSC FDDI card does not receive any inbound traffic and the fddiif command shows the receive overflow interrupts count incrementing at a rapid rate. 8. Enhancement for DLPI Promiscuous mode to see outbound packets also. PHNE_16504: 1. The driver fails to disable previously enabled multicast addresses, with error code set to 'EINVAL'. 2. The driver returns garbled data when queried for statistics by applications using the Network Management library calls. 3. During periods of heavy traffic on the HSC FDDI link and low memory resources, system may panic with a data page fault. PHNE_15668: 1. The HSC FDDI interface may hang after logging the message "Waited for stat2_ine4 but it never came" to syslog. 2. When the MAC address of the HSC FDDI card is changed, the link becomes unusable for up to 10 seconds during which a large number of void frames are seen on the ring. 3. Under certain conditions, too many informative driver messages are logged to syslog, causing it to overflow. 4. The fddiif utility sometimes reports negative numbers in the statistics. 5. When the locale is set and lanadmin(1M) is used in the interactive mode, the following error message is displayed after a certain number of commands are executed: Cannot open shared library ... PHNE_14076: 1. When multicast packets are received on the HSC FDDI link, memory leaks occur in the driver. The system eventually runs out of free memory. 2. Applications cannot send or receive multicast packets over HSC FDDI. 3. The data rate over HSC FDDI is low. 4. On T600 machines with certain specific configurations, the HSC FDDI card may not be recognized. PHNE_13192: 1. The HSC FDDI link does not work on D-210, 310, 220, 320, 230, and 330 systems. The "ioscan -f" shows the HSC FDDI S/W State is unclaimed. 2. The "lanadmin -S Txthreshold" command does not work with the 64-bit kernel. The command does not return any error but the command has no effect. 3. The HSC FDDI link hangs in T-600 systems. Defect Description: PHNE_21390: 1. CR JAGac40039 / SR 8606124656 The card reset code was stopping and resetting transmit ring 0 (synchronous), which is not used. The Asynchronous ring(1) is the one which should be stopped and reset. Resolution: The code has been modified to stop and reset transmit ring 1 in the card reset code path. 2. CR JAGac20348 / SR 8606114078: ER: HSC FDDI Support for LAN Monitor. Resolution: The driver code has been modified to support the LAN Monitor product. 3. CR JAGab65940 / SR 5003442004 Enhancement request to be able to customize the transmit threshold according to the user's requirements at every system boot. Resolution: The HSC FDDI configuration file is being provided for the user to be able to set the Transmit Threshold. 4. CR JAGac40038 / SR 8606124655 There were 2 potential problems in the code: a) When a packet is sent up in the receive path, the write pointer of the receive ring is updated with the local write pointer value. This can create a memory leak, if the watchdog runs on another processor when the packet is sent up, and allocs buffers for the receive ring, thus changing the write pointer. b) Similarly, when all the packets have been processed in the receive path, the read and write pointers of the receive ring are updated with the local pointer values. This would again cause a leak if the watchdog had run on another processor and allocated receive buffers. Resolution: The fix is to not update the ring write pointers when processing received packets, since the write pointers do not change in this code path. 5. CR JAGab75863 / SR 8606106601 Multicast addresses are not reloaded after a Card reset. Resolution: All multicast addresses are now reloaded after a card reset. 6. CR JAGab75691 / SR 8606106495 Call to fddi3_log_msg was been made with incorrect number of arguments. Resolution: fddi3_log_msg is been called with correct number of arguments. 7. CR JAGab74656 / SR 8606105918 The driver calls copyout while still holding a spinlock. However design considerations do not allow spinlocks to be held across copyout, since a call to copyout can block. Resolution: The spinlock is now released prior to calling copyout and is locked again after the call. 8. CR JAGab74653 / SR 8606105915 In receive path, when physical promiscuous mode was enabled on the interface the driver used to spinunlock the card-stat lock when the received packets destination address did not match cards MAC address. The card-stat lock which was being unlocked was previously not locked by driver. Resolution: The extra unlock of the spinlock has now been removed. 9. CR JAGab64949 / SR 5003451047 Enhancement request for fddiif/fddilink to support writing to output file. Resolution: Added a '-o' command line option to fddiif/fddilink to support writing the output to a file. PHNE_18523: 1. When lanadmin(1M) is run with the -M option to set the MTU for the interface or with the -R option to reset it to the default value, it sends 'change MTU' ioctl (I/O Control) request to the driver. The driver neither handled this ioctl request nor returned an error. As a result, the lanadmin(1M) command completed without errors, but did not set/reset the MTU. Resolution: The driver has been fixed to handle the ioctl request and hence set/reset the MTU as expected. An error ( EINVAL ) is returned if the driver cannot handle the request. For example, EINVAL is returned when the requested MTU value is too high (>4352) or too low (<100). 2. When the lanadmin(1M) command is used with the -A option to set the physical address of the interface to either 0xffffffffffff or 0x000000000000, the driver did not check for these addresses and set the physical address as such. This is inconsistent with the behavior of other networking cards/drivers, that prevent the physical address being set to the above values. Resolution: The driver has been fixed to return an error (EINVAL) for the above values. 3. When promiscuous mode is turned on/off repeatedly, there was a time window during which the stream which had previously turned promiscuous mode off was closed before the card's promiscuous mode was turned off by the driver. The time window was introduced because of the order in which the driver carried out the steps to disable promiscuous mode on the interface. Due to this time-window, some packets were still sent up to a non-existent stream. This led to a system panic. Resolution: Apart from correcting the order of steps followed to disable promicuous mode, the driver code has been changed to synchronize access to the promiscuous mode related data structures, by using locks. 4. Under heavy network traffic, with the HSC FDDI interface in promiscuous mode, when a call to allocate memory failed, an inbound buffer could be freed more than once, resulting in a system panic. Resolution: The driver code has now been modified to ensure that the free of the buffer happens only once. 5. The problem was happening due to an FSI interrupt being handled when the card was being reset. The ISR routine was reading a register, which causes a HPMC as the card is in a unstable state. Resolution: The fix is to not process FSI interrupts during a card reset. Also incorporated code changes to leave the ESGSC+ bit off on the DINO chip, irrespective of the UPCIFIC chip version. 6. The problem happens during a card reset, due to the card doing DMA to receive buffers which have been freed by the reset code. This can result in data page faults or memory corruptions. Resolution: The fix is to send a stop DMA command to the card, before freeing the receive buffers in the reset path. 7. Due to a card problem, no packets are received with receiver overflow interrupts occurring frequently. This problem was earlier noticed with the EISA FDDI driver for which a firmware workaround was provided. Resolution: The fix is to reset the card when a receiver hang is detected. The hang detection code has been ported from EISA FDDI. 8. The earlier implementation of promiscuous mode in the HSC FDDI driver was not looping back the outbound packets. With previously existing applications, this feature was not necessary, however now applications like tcpdump require this feature. Resolution: Support for the outbound promiscuous feature has now been provided. Enabling promiscuous mode will enable both inbound and outbound promiscuous on that stream. PHNE_16504: 1. The driver was comparing the canonical form of the address with its non-canonical form stored in its private data structure. Since the comparision failed, the driver always returned an error. 2. The Network Management library calls use the DL_HP_GET_MIB_STATS ioctl to communicate with the driver. This ioctl was not supported. 3. The driver usually compresses a large buffer chain into one single buffer, before it transmits. This buffer is allocated dynamically. Under heavy network load and low memory resources, the allocation may fail. The driver, under this condition, frees the original message in the compress routine. However, there was an attempt to free this chain in the main transmit routine also, which resulted in a data page fault causing the system to panic. PHNE_15668: 1. A software reset mechanism was introduced in the HSC FDDI driver to work around hardware defects in the Motorola FDDI System Interface (FSI) chip. This mechanism did not detect all the circumstances under which the card had to be reset. 2. The HSC FDDI driver is required to disconnect the card from the FDDI ring before changing the MAC address. This was not being done. 3. SMT and other informative messages were incorrectly sent to syslog instead of the NetTL log by the HSC FDDI driver. 4. Though the statistics are maintained as unsigned integers by the driver, fddiif displayed them as signed values. 5. The HSC FDDI lanadmin(1M) shared library did not close the catalog file after using it. PHNE_14076: 1. The driver relies on upper layers of the networking stack to free the memory allocated for the packets that are received. When multicast packets are received, they are not sent to the upper layers and consequently the memory allocated is not freed. 2. When checking for multicast packets (while sending or receiving data) the driver erroneously assumes that the link-level multicast address is in canonical format, while, in reality, the address is in wire format. 3. The driver uses mbufs instead of mblks for storing data. Also, optimizations like code path reduction can be done to enhance performance and therefore the data rate. 4. The driver depends on the "wsio" module being in the kernel. However, this dependency is not explicitly specified and certain configurations exist where the "wsio" module has to be specified as a dependency to ensure it is in the kernel. PHNE_13192: 1. The HSC FDDI driver scans through the IO node's "id" property to identify a T-600 system. Since the D-210, 310, 220, 320, 230, and 330 systems do not have the "id" property in the node above the HSC FDDI node, the HSC FDDI driver terminates the initialization. The fix is to continue the initialization sequence if a node's "id" property does not exist. 2. lanadmin(1M), being a 32-bit application, issues a certain command to the driver to change the transmit threshold. The command appears different within the 64-bit kernel due to 64-bit alignment. The HSC FDDI driver in the 64-bit kernel does not recognize the 32-bit "lanadmin -S" command. The fix is to make the driver accept both the 32-bit and the 64-bit commands. 3. 64-bit T-600 systems may experience a hang with the HSC FDDI link while receiving packets. The patch will detect the problem and initiate auto recovery. SR: 8606124656 8606114078 5003442004 8606124655 8606106601 8606106495 8606105918 8606105915 5003451047 5003432179 5003418723 4701379297 5003404764 Patch Files: FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_32,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_32,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.05,fa=HP-UX_B.11.00_32,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libfddi3.a /usr/conf/master.d/fddi3 FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_64,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_64,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.05,fa=HP-UX_B.11.00_64,v=HP: FDDI-HSC.FDDI3-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libfddi3.a /usr/conf/master.d/fddi3 FDDI-HSC.FDDI3-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: FDDI-HSC.FDDI3-RUN,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64, v=HP: FDDI-HSC.FDDI3-RUN,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64, v=HP: FDDI-HSC.FDDI3-RUN,fr=B.11.00.05,fa=HP-UX_B.11.00_32/64, v=HP: FDDI-HSC.FDDI3-RUN,fr=B.11.00.07,fa=HP-UX_B.11.00_32/64, v=HP: /usr/lib/lanadmin/libdsfddi3.1 /usr/lib/lanscan/libpefddi3.1 /usr/lib/libfddifmt3.1 /usr/lib/nls/msg/C/fddi3.cat /usr/newconfig/etc/rc.config.d/hphscfddiconf /sbin/init.d/hscfddi FDDI-CMD-COM.FDDI-CMD,fr=B.11.00,fa=HP-UX_B.11.00_32/64, v=HP: FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64, v=HP: FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64, v=HP: FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.05,fa=HP-UX_B.11.00_32/64, v=HP: FDDI-CMD-COM.FDDI-CMD,fr=B.11.00.07,fa=HP-UX_B.11.00_32/64, v=HP: /usr/bin/fddidump /usr/bin/fddiif /usr/bin/fddilink what(1) Output: FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libfddi3.a: HSC FDDI fddi3 libfddi3 B.11.00.08 PHNE_21390 $Date: 2000/05/08 18:51:23 $ /usr/conf/master.d/fddi3: None FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libfddi3.a: HSC FDDI fddi3 libfddi3 B.11.00.08 PHNE_21390 $Date: 2000/05/08 18:51:23 $ /usr/conf/master.d/fddi3: None FDDI-HSC.FDDI3-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/lib/lanadmin/libdsfddi3.1: libdsfddi3.1 HSC FDDI B.11.00.08 PHNE_21390 $Date: 0 0/05/15 05:00:53 $ /usr/lib/lanscan/libpefddi3.1: libpefddi3.1 HSC FDDI B.11.00.08 PHNE_21390 $Date: 0 0/05/15 05:03:56 $ /usr/lib/libfddifmt3.1: libfddifmt3.1 HSC FDDI B.11.00.08 PHNE_21390 $Date: 00/05/15 00:03:17 $ /usr/lib/nls/msg/C/fddi3.cat: None /usr/newconfig/etc/rc.config.d/hphscfddiconf: hphscfddiconf $Revision: 1.1 $ $Date: 97/08/22 03:12 :32 $ /sbin/init.d/hscfddi: None FDDI-CMD-COM.FDDI-CMD,fr=B.11.00,fa=HP-UX_B.11.00_32/64, v=HP: /usr/bin/fddidump: fddidump EISA/HSC FDDI B.11.00.08 PHNE_21389/21390 $ Date: 00/05/15 12:34:56 $ /usr/bin/fddiif: fddiif EISA/HSC FDDI B.11.00.08 PHNE_21389/21390 $Da te: 00/05/15 12:34:56 $ /usr/bin/fddilink: fddilink EISA/HSC FDDI B.11.00.08 PHNE_21389/21390 $ Date: 00/05/15 12:34:56 $ cksum(1) Output: FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 4252228211 86176 /usr/conf/lib/libfddi3.a 470285026 3734 /usr/conf/master.d/fddi3 FDDI-HSC.FDDI3-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 3880886733 164496 /usr/conf/lib/libfddi3.a 470285026 3734 /usr/conf/master.d/fddi3 FDDI-HSC.FDDI3-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 2512490910 16384 /usr/lib/lanadmin/libdsfddi3.1 3873824761 12288 /usr/lib/lanscan/libpefddi3.1 3510531544 20480 /usr/lib/libfddifmt3.1 3409149713 6468 /usr/lib/nls/msg/C/fddi3.cat 2799143050 1440 /usr/newconfig/etc/rc.config.d/hphscfddiconf 2169303946 4239 /sbin/init.d/hscfddi FDDI-CMD-COM.FDDI-CMD,fr=B.11.00,fa=HP-UX_B.11.00_32/64, v=HP: 229417212 20480 /usr/bin/fddidump 402380439 20480 /usr/bin/fddiif 3410294289 69632 /usr/bin/fddilink Patch Conflicts: None Patch Dependencies: s700: 11.00: PHKL_15551 s800: 11.00: PHKL_15551 Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_13192 PHNE_14076 PHNE_15668 PHNE_16504 PHNE_18523 Equivalent Patches: None Patch Package Size: 480 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_21390 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHNE_21390.depot By default swinstall will archive the original software in /var/adm/sw/save/PHNE_21390. If you do not wish to retain a copy of the original software, use the patch_save_files option: swinstall -x autoreboot=true -x patch_match_target=true \ -x patch_save_files=false -s /tmp/PHNE_21390.depot WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHNE_21390.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHNE_21390.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_21390.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: 1) If the EISA FDDI product (versions B.11.00 and above) is also installed on the system, then PHNE_16503 or a superseding patch should also be installed for the common utilities fddiif, fddilink and fddidump to work over both links. 2) The HSC FDDI configuration file, /etc/rc.config.d/hphscfddiconf has been provided in patch version PHNE_21390 or product version B.11.00.07 of the driver, to allow setting of the transmit threshold values on the card. If this functionality is desired, copy the /usr/newconfig/etc/rc.config.d/hphscfddiconf file to /etc/rc.config.d/hphscfddiconf and set appropriate transmit threshold values.