Patch Name: PHNE_22216 Patch Description: s700_800 10.20 HSC 100BT lan cumulative patch Creation Date: 00/11/10 Post Date: 00/11/20 Hardware Platforms - OS Releases: s700: 10.20 s800: 10.20 Products: J3621AA_APZ B.10.20.00 J3621AA_APZ B.10.20.01 J3621AA_APZ B.10.20.02 J3621AA_APZ B.10.20.03 J3621AA_APZ B.10.20.04 J3620BA B.10.20.04 J3623BA B.10.20.04 J3620BA B.10.20.05 J3623BA B.10.20.05 J3620BA B.10.20.06 J3623BA B.10.20.06 J3620BA B.10.20.07 J3623BA B.10.20.07 J3514A B.10.20.07 J3515A B.10.20.07 J3516A B.10.20.07 J3850A B.10.20.07 Filesets: 100BT-GSC-KRN.100BT-KRN,B.10.20.00 100BT-GSC-KRN.100BT-KRN,B.10.20.01 100BT-GSC-KRN.100BT-KRN,B.10.20.02 100BT-GSC-KRN.100BT-KRN,B.10.20.03 100BT-GSC-KRN.100BT-KRN,B.10.20.04 100BT-GSC-KRN.100BT-KRN,B.10.20.05 100BT-GSC-KRN.100BT-KRN,B.10.20.06 100BT-GSC-KRN.100BT-KRN,B.10.20.07 100BT-GSC-RUN.100BT-RUN,B.10.20.00 100BT-GSC-RUN.100BT-RUN,B.10.20.01 100BT-GSC-RUN.100BT-RUN,B.10.20.02 100BT-GSC-RUN.100BT-RUN,B.10.20.03 100BT-GSC-RUN.100BT-RUN,B.10.20.04 100BT-GSC-RUN.100BT-RUN,B.10.20.05 100BT-GSC-RUN.100BT-RUN,B.10.20.06 100BT-GSC-RUN.100BT-RUN,B.10.20.07 100BT-GSC-RUN.100BT-INIT,B.10.20.00 100BT-GSC-RUN.100BT-INIT,B.10.20.01 100BT-GSC-RUN.100BT-INIT,B.10.20.02 100BT-GSC-RUN.100BT-INIT,B.10.20.03 100BT-GSC-RUN.100BT-INIT,B.10.20.04 100BT-GSC-RUN.100BT-INIT,B.10.20.05 100BT-GSC-RUN.100BT-INIT,B.10.20.06 100BT-GSC-RUN.100BT-INIT,B.10.20.07 100BT-GSC-FMT.100BT-FORMAT,B.10.20.00 100BT-GSC-FMT.100BT-FORMAT,B.10.20.01 100BT-GSC-FMT.100BT-FORMAT,B.10.20.02 100BT-GSC-FMT.100BT-FORMAT,B.10.20.03 100BT-GSC-FMT.100BT-FORMAT,B.10.20.04 100BT-GSC-FMT.100BT-FORMAT,B.10.20.05 100BT-GSC-FMT.100BT-FORMAT,B.10.20.06 100BT-GSC-FMT.100BT-FORMAT,B.10.20.07 Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_22216: PANIC PHNE_18762: PANIC PHNE_15151: PANIC PHNE_12400: PANIC PHNE_11229: OTHER Changing link address with 100bt makes ARP fail. Path Name: /hp-ux_patches/s700_800/10.X/PHNE_22216 Symptoms: PHNE_22216: 1. 100BT is randomly missing packets. 2. System panics due to instruction page fault. 3. ER: Display capabilities of the switch after auto negotiation completion in nettl log (informative). 4. ER: Provide driver revision in btlan4_ift_t_2 structure for Q4 support. 5. ER:for Q4 (dump reading tool) : change the name of the internal btlan structure. 6. ER: Startup scripts and conf files should show the cards that they support. 7. netfmt gets SIGSEGV signal when HP_APA LAN_MONITOR is active. 8. Cable disconnect for cards with AUI sends 3 events to APA as a result of which APA fails. 9. 100BT card receive engine hangs resulting in discard of all incoming packets. PHNE_20893: 1. Start up scripts fail if there are 10 or more lan cards. 2. btlan interface hangs after 36 hours of testing. 3. T600 HSC 100BaseT J3850A intermittent hangs until cable reset. This happens on 64 byte cache line machines. PHNE_19946: 1. 100BT-FX EGSC card does not recover from link disconnect & re-connect on D-class machine. 2. HSC 100BT reports bad stats via netstat and lanadmin. 3. Nettl displays incorrect informative message about speed and mode. 4. ER: Display capabilities of the switch after auto negotiation completion. PHNE_18762: 1. SAM does not support altering speed (10 or 100Mbps) and duplex mode (half or full) settings on the interface. 2. Applications (including lanadmin) receive 10 for 10Mbps or 100 for 100Mbps for the speed value in the ifSpeed field of the mib structure. lanadmin therefore displays 10 or 100 for the interface (link) speed. 3. 'lanadmin -x [nmid]' display does not indicate whether the card is running in auto-negotiation or manual mode. 4. lanadmin cannot alter the Maximum Transmission Unit (MTU) size value of the interface. 5. Applications do not receive outbound traffic from the interface when they enable promiscuous mode on the interface. 6. Spinlock deadlock panics. 7. Unable to set the card to auto-negotiation mode by assigning "auto_on" to SPEED variable in /etc/rc.config.d /hpgsc100conf. 8. The actual link configuration does not reflect what is manually configured in /etc/rc.config.d/hpgsc100conf. PHNE_15781: The following symptoms are seen for PHNE_15781: 1. Some sequences of packets will cause poor receive performance. PHNE_15636: The following symptoms are seen for PHNE_15636: 1. After being configured down, the driver continues to pass received packets to the IP layer. PHNE_15151: The following symptoms are seen for PHNE_15151: 1. After a cable disconnection, the operation status in the lan MIB was not correctly updated. 2. System panic in the btlan4 driver code. 3. The driver will receive packets without regard to the encapsulation type(s) configured on the interface. This can cause the link to be unable to transmit if ARP packets update the ARP cache with incorrect encapsulations. PHNE_14974: The following symptoms are seen for PHNE_14974: 1. The driver is unable to receive IP Multicast frames. 2. After a cable disconnect or a lanadmin reset, IP Multicast frames are no longer received. PHNE_13940: The following symptoms are seen for PHNE_13940: 1. When the AUI port is connected lanscan still shows the hardware state as being down. 2. Driver reports receive errors under heavy traffic 3. Manual Speed and Duplex configuration is now enabled. PHNE_12400: The following symptoms are seen for PHNE_12400: 1. System panic in the btlan4 driver code. 2. HSC 100BT port hung. PHNE_11229: The following symptoms are seen for PHNE_11229. 1. Changing the link address with 100bt makes ARP fail. 2. GSC 100BT driver reports incorrect statistics. 3. Lanadmin shows incorrect (bogus) value for outbound queue on HSC 100BT. 4. Receive performance will not be as good as with this patch. 5. FTP hangs. 6. Problem with 10BT and noheartbeats. 7. Low performance due to IEEE SNAP packets not being logged and going through expensive lanc_logging. 8. Cable disconnect/reconnect interrupts are not always acknowledged. 9. DHCP does not work correctly with GSC 100BT. Defect Description: PHNE_22216: 1. JAGad03897: If 100BT NIC does not have access to an available receive buffer the card will drop packets. Resolution: The driver has doubled the amount of receive buffers available for the card. 2. JAGad24136: The data portion of the receive buffers was not cacheline aligned. Stack trace follows, A. Original Dump: freeb_pullupmsg+0x2c4 freeb+0xe4c freemsg+0x18 ip_rput_local+0x1b80 ip_rput+0x40c putnext+0x228 hp_dlpi_unitdata_in+0x58 chp_dlpi_mblk_intr_put+0x17c streams_put_release+0x398 hp_dlpi_mblk_intr+0x7c lanc_ether_ics+0x230 btlan_receive_frame+0x550 btlan_isr+0x120 dino_isr+0x184 up_ext_interrupt+0x1e0 ivti_patch_to_nop2+0x0 idle+0x5ac swidle_exit+0x0 B. jaguar: freeb_pullupmsg+0x2c4 freeb+0xe4c soreceive+0x12cc recvit+0x1d4 recvfrom+0x94 syscall+0x758 $syscallrtn+0x0 C. kabalah: freeb+0xb64 freemsg+0x18 lanc_802_2_ics+0x130 btlan_receive_frame+0x590 btlan_isr+0x120 dino_isr+0x184 mp_ext_interrupt+0x378 ivti_patch_to_nop3+0x0 idle+0x598 swidle_exit+0x0 Resolution: The 100BT driver now ensures the receive buffers data is cacheline aligned. 3. JAGac87811: The driver was not logging the abilities of the remote partner after auto negotiation. Resolution: The driver is modified to log the capabilities of remote partner after auto negotiation completion in the nettl log as informative messages. 4. JAGac87814: The driver was not including the 'what' string in the btlan4_ift_t_2 structure. Resolution: The btlan4_ift_t_2 structure in the driver has been modified to include the what string. This is for Q4 support. 5. JAGac87812 The driver shared same data structure name with other network interface drivers. Resolution: Changed the name of btlan3_ift_t structure to btlan4_ift_t_2 6. JAGab76737: The startup files/scripts did not indicate the cards that they support. Resolution: Comments were added to the hpgsc100 and hpgsc100_init files to show the cards that they support. 7. JAGad28394: Netfmt core dumps when you want to format traces for 100BT. Resolution: The function call in netfmt file which caused the core dump was modified to solve this problem. 8. JAGad31485 Cable disconnect for cards with AUI sent 3 events to APA as a result of which APA fails. Resolution: The AUI_LINKUP event is not sent. The fix also includes checking for AUI loopback check & if it passes, only then send a NMV_LINKUP event to APA. 9. JAGad33760: When a very high number of receive errors occur, the driver will lose descriptors. Eventually the card will no longer be able to receive frames. Resolution: The driver now handles receiving errors correctly. PHNE_20893: 1. JAGac16214: The hpgsc100 script greps for a particular NMID, but this will match for multiple instances if there are more than 10 cards.(eg, the script greps for lan1, this will match lan1, lan10, lan11.. etc). Resolution: The script is modified so that it will match for only one instance. The script now greps for "lan ". 2. JAGac12427: The transmit engine of btlan hangs under following condition - Whenever the driver receives a packet to transmit containing more than 6 mbufs, it tries to coalesce this packet into one. If the memory allocation fails, then this packet is queued for transmit as it is, without coalescing. This can stall the transmit engine if the number of mbufs queued needs more transmit descriptors than what the driver has. Resolution: The driver drops the packet in this condition. 3. JAGac59685: this problem occurred due to cache line alignment mismatch on 64 byte cache line machines. The card may hang when this problem occurs. Resolution: This problem is resolved by redefining the cache line size value in the driver header file, if this value is less than 64 bytes. PHNE_19946: 1. JAGab77511: After cable is re-connected the driver detects cable connection and issues an internal reset command. The internal loop back fails during reset. This causes an endless loop of resets being done to recover from this error. The internal loop back fails due to Rx interrupt not being delivered to the driver during reset. Resolution: The driver recovers from this error condition in dma timeout routine by checking the owner bit for the descriptor and calls offline isr handling routine if driver owns the descriptor. 2. JAGab70255: The driver is not updating all the statistics correctly. Resolution: The driver is modified to update all the statistics that are supported by the card. 3. JAGab81818: The nettl logging message about speed and mode displays wrong values. Resolution: The driver is modified to display correct speed and mode. 4. JAGab64404(ER): The driver was not logging the abilities of the remote partner after auto negotiation. Resolution: The driver is modified to log the capabilities of remote partner after auto negotiation completion. PHNE_18762: 1. No supporting ioctls were implemented in the driver for SAM to use. Resolution: Implemented the required ioctls that the corresponding code in SAM uses. 2. The driver stores 10 for 10Mbps and 100 for 100Mbps in its local mib related data structures. Resolution: Modified driver code to store 10000000 for 10Mbps and 100000000 for 100Mbps in its local mib data structures. 3. The driver did not provide ioctls for lanadmin to use to obtain the information about the mode (autonegotiation or manual) mode in which it was operating. Resolution: The driver implemented the new ioctl for obtaining the above mode information. 4. The driver did not implement ioctl for lanadmin to use to alter the MTU size value on the interface. Resolution: The driver implemented the new ioctl for changing the MTU size value for the interface. 5. The driver did not implement appropriate functionality which would return a copy of the transmitted packet to the upper protocols. Resolution: The driver implemented appropriate functionality which would return a copy of the transmitted packet to the upper protocols. 6. The spinlock deadlock was actually a timeout on holding the spinlock. It was caused by 100BT driver holding the spinlock too long while trying to free a corrupted transmitted buffer. The corrupted transmitted buffer could be the result of passing the same map_context to multiple calls of the mapping function. Resolution: Instead of passing the same map_context to multiple calls of the mapping function, 100BT driver should pass one unique map_context to each call of the mapping function. 7. /sbin/init.d/hpgsc100 incorrectly compares "autoneg_on" with SPEED variable set in /etc/rc.config.d/hpgsc100. Resolution: /sbin/init.d/hpgsc100 should compares "auto_on", not "autoneg_on", with SPEED variable. 8. The array of link configuration data in /etc/rc.config.d/hpgsc100conf was non-sequential which the startup script (/sbin/init.d/hpgsc100) cannot handle correctly. Resolution: The startup script (/sbin/init.d/hpgsc100) is modified to skip over the missing indices in the array and work through all that are provided. PHNE_15781: The following defect descriptions are for PHNE_15781: 1. When the card receives a packet, it will only trigger an interrupt if there is not already a receive interrupt outstanding. There was a small timing window in the driver where the driver had finished processing the received packets, but had not informed the card to generate a new interrupt. This caused the last packet to be delayed. PHNE_15636: The following defect descriptions are for PHNE_15636: 1. The driver's fast path receive code did not check the correct flags before passing the packet up the network stack. PHNE_15151: The following defect descriptions are for PHNE_15151: 1. The 100BaseT driver was updating the interface state before it was informing the MIB code that the cable had been disconnected. Since the interface state was already marked down, the MIB code believed no state change had occurred and did not update the operation status. 2. The 100BaseT driver was releasing the buffers after the upper network layer had completed processing. If the upper network layer encountered a pullup error, it would free the buffer itself. The btlan4 driver would then free the buffer again causing a panic. 3. The 100BaseT driver passed received packets to the upper layer without first checking if the encapsulation was configured on the interface. PHNE_14974: The following defect descriptions are for PHNE_14974: 1. After the IP layer joined an IP multicast group, the driver did not correctly update the fast ethernet card's address list. Without the correct address list on the card, IP multicast frames were not received. 2. After a lanadmin reset or a cable disconnect, the card's address list is reset. The driver failed to update the card with the correct address list. This prevented IP multicast frames from being received. PHNE_13940: The following defect descriptions are for PHNE_13940: 1. The AUI port was not being properly initialized. 2. Modified receive path to ensure efficient processing under heavy inbound traffic PHNE_12400: The following defect descriptions are for PHNE_12400: 1. Under heavy inbound traffic for a long period of time, btlan4 driver will eventually exhaust all the receive descriptors and it can cause port hang or system panic. PHNE_11229: The following defect descriptions are for PHNE_11229. 1. Changing link address with 100bt makes ARP fail. 2. GSC 100BT driver reports incorrect statistics. 3. Lanadmin shows incorrect (bogus) value for outbound queue on HSC 100BT. 4. Modified receive path to increase performance. Use schednetisrmq instead of the older schednetisrsq. 5. Transmit and Receive data structures were not properly zero'ed out during initialization. This caused FTP's to occasionally hang the system. 6. Noheartbeat errors must be disabled when in 10BT mode. Otherwise, output packet counts will not be properly updated. 7. Low performance due to IEEE SNAP packets not being logged and going through expensive lanc_logging. 8. Transmit and Receive interrupts are not acknowledged during cable disconnect/reconnect conditions. 9. Fixed bug in BTLAN3_DO_FAST_IN which failed to check the strip header flag. This caused the GSC 100BT driver to not work correctly with DHCP. SR: 8606164461 8606162169 8606159065 8606107086 8606129477 8606129479 8606129476 8606154819 8606134762 8606126844 8606113907 8606113954 8606109120 1653292060 8606107322 8606103478 1653271023 4701430132 1653279240 1653286500 5003432179 1653292441 4701355917 1653232306 4701365569 5003405175 5003405225 1653240432 5003398388 5003407841 5003415356 5003416685 5003413443 1653265959 5003407973 1653254599 5003403618 5003419374 Patch Files: /usr/conf/lib/libbtlan4.a /usr/conf/lib/btlan4_dbg.o /usr/newconfig/etc/rc.config.d/hpgsc100conf /sbin/init.d/hpgsc100 /usr/sbin/hpgsc100_init /usr/lib/lanadmin/libdsbtlan4.sl /usr/lib/lanscan/libpebtlan4.sl /usr/lib/nls/msg/C/dsbtlan4.cat /usr/lib/nls/msg/C/pebtlan4.cat /usr/lib/libfmtbtlan4.sl /usr/lib/nls/msg/C/fmtbtlan4.cat what(1) Output: /usr/conf/lib/libbtlan4.a: 100BT : btlan4.c GSC 100BT Cleanup PHNE_22216 B.10.2 0.08 $Revision: 1.74 $ $Date: 2000/11/07 17: 00:48 $ /usr/conf/lib/btlan4_dbg.o: None /usr/newconfig/etc/rc.config.d/hpgsc100conf: hpGSC100conf $Revision: 1.7 $ $Date: 2000/03/03 15:5 4:04 $ /sbin/init.d/hpgsc100: hpgsc100 $Revision: 1.15 $ $Date: 2000/09/09 12:13:1 2 $ /usr/sbin/hpgsc100_init: hpgsc100_init $Revision: 1.7 $ $Date: 99/07/16 11:2 7:52 $ /usr/lib/lanadmin/libdsbtlan4.sl: libdsbtlan4.sl: Version: B.10.20 $Date: 2000/08/31 16:06:18 $ /usr/lib/lanscan/libpebtlan4.sl: libpebtlan4.sl: Version: B.10.20 $Date: 99/06/08 20: 09:38 $ /usr/lib/nls/msg/C/dsbtlan4.cat: None /usr/lib/nls/msg/C/pebtlan4.cat: None /usr/lib/libfmtbtlan4.sl: BTLAN4: Version: B.10.20 $Date: 2000/09/12 12: 25:40 $ /usr/lib/nls/msg/C/fmtbtlan4.cat: None cksum(1) Output: 3428731111 76008 /usr/conf/lib/libbtlan4.a 2767961391 164432 /usr/conf/lib/btlan4_dbg.o 1384492687 1344 /usr/newconfig/etc/rc.config.d/hpgsc100conf 2472658191 8502 /sbin/init.d/hpgsc100 2710659864 6217 /usr/sbin/hpgsc100_init 573875609 32822 /usr/lib/lanadmin/libdsbtlan4.sl 1272955719 12288 /usr/lib/lanscan/libpebtlan4.sl 2624246182 3996 /usr/lib/nls/msg/C/dsbtlan4.cat 3231781941 114 /usr/lib/nls/msg/C/pebtlan4.cat 256847153 98784 /usr/lib/libfmtbtlan4.sl 3313590868 14643 /usr/lib/nls/msg/C/fmtbtlan4.cat Patch Conflicts: None Patch Dependencies: s700: 10.20: PHKL_11351 PHNE_18173 s800: 10.20: PHKL_11352 PHNE_18924 Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_11229 PHNE_12400 PHNE_13940 PHNE_14974 PHNE_15151 PHNE_15636 PHNE_15781 PHNE_18762 PHNE_19946 PHNE_20893 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_22216 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHNE_22216.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHNE_22216. 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_22216.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_22216.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: To trace the outbound packets, please do the following to turn on a global promiscuous switch before running the promiscuous applications like snoop or tcpdump: adb -w /stand/vmunix /dev/mem lanc_outbound_promisc_flag/W 1 (adb will echo the result showing that the flag has been changed) $quit A new version of file /etc/rc.config.d/hpgsc100conf is delivered as part of this patch, as /usr/newconfig/etc/rc.config.d/hpgsc100conf file. If you have edited /etc/rc.config.d/hpgsc100conf file, you may want to merge these files. To set speed and duplex via SAM, users need to install SAM patch: PHCO_18217. You also need to merge /usr/newconfig/etc/rc.config.d/hpgsc100conf file with /etc/rc.config.d/hpgsc100conf. ifconfig down/up is needed while changing MTU using lanadmin -[M|R] options.