Patch Name: PHNE_25907 Patch Description: s700_800 11.00 Built-in PCI 100BASE-T patch Creation Date: 01/12/12 Post Date: 02/01/24 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: N/A Filesets: Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP Networking.LAN-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_25907: PANIC MEMORY_LEAK HANG PHNE_22244: PANIC PHNE_21687: PANIC PHNE_19826: PANIC PHNE_18574: PANIC PHNE_17071: OTHER Loss of Networking capability Category Tags: defect_repair hardware_enablement enhancement general_release critical panic halts_system memory_leak Path Name: /hp-ux_patches/s700_800/11.X/PHNE_25907 Symptoms: PHNE_25907: 1. Interface hangs sometimes during heavy traffic. 2. Zero length messages (mblks) cause IO resources shortage (IOVA leak), this will lead to system hang. 3. System panics with Data Page Fault. 4. Memory leak in btlan3-6 and btlan drivers. 5. ER : for troubleshooting, save in internal driver structure CPU that will be interrupted to handle inbound packets for this interface. 6. Setuid bit is set for lanadmin library. PHNE_22244: 1. A false link down event is reported by the driver. 2. 100BT startup script (hpbase100) fails at system boot time. 3. 100BT is randomly missing packets. 4. System panics due to instruction page fault. 5. 'netfmt' on 100BT traces causes SIGSEGV while running HP_APA LAN_MONITOR 6. 100BT card hangs occasionally. The card is unable to receive any frames. 7. swverify leaves lan100bt_core_verify in the /tmp directory. PHNE_21687: 1. lanadmin -A to change MAC address causes panic: wait_for_lock 2. Nettl displays incorrect informative message about speed and mode. 3. ER: Display capabilities of the switch after auto negotiation completion. 4. Start up scripts fail if there are 10 or more lan cards. 5. btlan interface hangs after 36 hours of testing. 6. 64 byte cache line machine interface hangs. 7. 100bt: message logged "Unable to setup Read/Write Prefetch lengths" PHNE_19826: 1. The driver panics with "spinlock held too long" message. 2. Swverify fails with "ERROR: File "/usr/old/usr/newconfig/etc/rc.config.d/hpbase100conf" missing" after removing patch PHNE_19020. PHNE_19020: 1. SAM does not support altering speed (10 or 100Mbps) and duplex mode (half or full) settings on the interface. 2. Cable disconnect message is displayed even when there is really no cable disconnected. 3. 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. 4. 'lanadmin -x [ppa]' display does not indicate whether the card is running in the auto-negotiation or manual mode. 5. lanadmin cannot alter the Maximum Transmission Unit (MTU) size value of the interface. 6. Applications do not receive outbound traffic from the interface when they enable promiscuous mode on the interface. 7. Applications joining multicast address groups before cable disconnect are not able to transmit or receive traffic to and from these groups after cable reconnect. 8. The driver does not recognize combo card which has both SCSI and 100BT interfaces. 9. During boot up sometimes the driver was not configured into the system. 10.If two systems are connected back to back using a crossover cable, and one side is reset with/without traffic, the resulting link has random speed/duplex values or sometimes never comes up. 11.The actual link configuration does not reflect what is manually configured in /etc/rc.config.d/hpbase100conf. 12.The driver reports bad stats via netstat and lanadmin. PHNE_18574: 1. System panic due to data page fault 2. Incorrect or arbitrary link configuration after cable disconnect at either ends. 3. Driver stops receiving incoming frames. 4. "Spinlock held too long" panic with debug kernel. PHNE_17071: 1. Built-in PCI 100BASE-T driver is not installed. 2. Patch removal fails with error messages. PHNE_14890: 1. Built-in PCI 100BASE-T is not supported on B.11.00. Defect Description: PHNE_25907: 1. JAGad82257: The 21143 chip will not re-generate an interrupt for a condition if the driver acknowledges that condition without doing the processing. There is a window in the driver interrupt routine where it acknowledges an interrupt without processing received frames. Most of the time this will not be a problem, because the next received frame will anyway generate another interrupt and the driver would process all the frames. The problem happens if the frame skipped happens to be the last frame in the descriptor ring. Since the ring is now full, the card will never ever generate another received frame interrupt and will keep generating only receive descriptor unavailable interrupts. So this will happen only with heavy traffic. Resolution: The driver calls the receive processing function unconditionally each time the interrupt service routine is invoked. 2. JAGad87040: The driver was not handling the zero length mblks. Resolution: The driver now handles the zero length mblks. 3. JAGad08759: wsio_allocate_shared_memory() call made to allocate and map the transmit descriptor ring seems to have returned NULL. The driver was not checking the return value of the call and was calling bzero to init the memory allocated and this causes a panic. Stack trace follows: panic+54 report_trap_or_int_and_panic+80 report_trap_or_int_and_panic+0x002c trap+0xDB8 $call_trap+40 bzero_prefetch_sl_method+18 _btlan3_init+8C isc_table_traverse+70 wsio_init_end+10 io_virt_mode_config+0xE8 io_virt_mode_config+0x00ac main+128 $vstart+48 $locore+94 Resolution: The fix is to check the return value of all memory allocation and mapping calls in the driver init function. 4. JAGad54435: The memory leak in 2k byte bucket is tied to inbound errors and an uninitialized local variable. An uninitialized local variable in the receive path resulted in memory leak sometimes when processing frames received with errors. This variable is required only in the case of normal frames. Resolution: The fix is to check this variable only when processing frames received without errors. 5. JAGad49787: The CPU to which our interrupts are tied is not known currently by looking at the ift structure. Resolution: This information is now stored in the eim field of the ift structure. 6. JAGad66231: btlan* lanadmin libraries have their setuid bit set. Setting this bit is not required and may cause problems that are not foreseen. Resolution: The file permissions are set in the psf file of a patch. The psf files will not have this bit set now. PHNE_22244: 1. JAGad40611: The LXT970 chip is reporting a false link down event if the symbol error rate increases over a certain limit. Resolution: There are two modes in which the LXT970 phy can be programmed to report a link down event. 1) When the symbol error rate increases over a certain limit. 2) If the phy loses the scrambler lock. By default, the LXT970 phy was programmed to operate in mode 1 where as the DP83840 phy operates in mode 2. This fix sets the LXT970 phy to operate in mode 2. As in the case of the DP83840 phy, the fix allows the MAC to check the symbol errors and report them as FCS errors. The LXT970 phy operating in mode 2 will not report false link down events. 2. JAGad26217: If /etc/rc.config.d/hpbase100conf configuration file does not exist on system before patch PHNE_21687 is installed, the patch will not copy the file /usr/newconfig/etc/rc.config.d/hpbase100conf to /etc/rc.config.d/hpbase100conf. Resolution: Upon installation, this patch will check to see if hpbase100conf exists in the correct location. If not, the file will be copied to the correct location. 3. JAGad03897: When there is a transient overload, the 100BT NIC runs out of receive descriptors and drops packets. Typically this is caused by bursty traffic where several hundred packets are sent to the NIC within a few millisecs. Resolution: The number of receive descriptors have been doubled. 4. 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. 5. JAGad28394: Wrong number of arguments are passed to a function in the formatter. Resolution: The correct number of arguments are now passed to the function in the formatter. 6. 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. 7. JAGad34993: In some instances the verify scripts did not remove lan100bt_core_verify. Resolution: The file is now removed. PHNE_21687: 1. JAGad05541: The problem is due to waking up a dlpi thread while holding spinlock on ICS. Resolution: The driver now releases spinlock when it wakes up dlpi thread in transmit completion function. 2. JAGab81818: The nettl logging message about speed and mode displays wrong values. Resolution: The driver is modified to display correct speed and mode. 3. 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. 4. JAGac16214: The hpgsc100 script greps for a particular PPA, 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 ". 5. JAGac12427: The transmit engine of btlan hangs under following condition - Whenever the driver receives a packet 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, with out 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. 6. JAGac56793: 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. 7. JAGab72844: The message "Unable to setup Read/Write Prefetch lengths" is printed when not necessary. Resolution: This message in no longer printed. PHNE_19826: 1. JAGab71953: The driver holds the lock while resetting transmit list which sometimes could take long time. Resolution: The driver resets the transmit list without acquiring the lock. 2. JAGab74874: Control script did not remove /usr/old/usr/newconfig/etc/rc.config.d/hpbase100conf from Installed Product Database. Resolution: Remove the following entry from Installed Product Database via the patch's configure script: /usr/old/usr/newconfig/etc/rc.config.d/hpbase100conf. PHNE_19020: 1. 4701430132: 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. JAGab15597: Upon receiving the fatal bus error (FBE) interrupt from the card, the driver would incorrectly process it as if the cable was disconnected. Resolution: Modified code to process the FBE interrupt by doing soft reset of the card AND putting the driver state to DOWN. 3. 5003466995 (JAGab24364): 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. 4. 1653286500: 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. 5. JAGab43893: 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. 6. 5003432179 (JAGab31942): 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. 7. 5003465328 (JAGab20799): The driver rejected requests from the IP layer to rejoin multicast address groups because it notified the upper protocols about the cable reconnect before it entered into the correct state. Resolution: The driver entered into the correct state after cable reconnect. 8.JAGab43944: Combo card which has both SCSI and 100BT interfaces is not supported. Resolution: The driver was modified to regconize combo card's subsystem id. 9. JAGab63191: The driver's start up script aborts during boot up. Resolution: Modify the driver's script to behave correctly. 10.JAGaa91319: "Restart Autonegotiation" bit in the Basic Mode Control Register (BMCR) on the PHY chip was not set when initiating autonegotiation. Resolution: Set the "Restart Autonegotiation" bit in the Basic Mode Control Register (BMCR) on the PHY chip when initiating autonegotiation and also made the cable detection period shorter. 11.JAGab70552: The array of link configuration data in /etc/rc.config.d/hpbase100conf was non-sequential which the startup script (/sbin/init.d/hpbase100) cannot handle correctly. Resolution: The startup script (/sbin/init.d/hpbase100) is modified to skip over the missing indices in the array and work through all that are provided. 12.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. PHNE_18574: 1. A null pointer referring to the buffer was used. Resolution: Check whether buffer allocation routine returned a valid non-null buffer pointer before attempting to use it. 2. "Restart Autonegotiation" bit in the Basic Mode Control Register (BMCR) on the PHY chip was not set when initiating autonegotiation. Resolution: Set the "Restart Autonegotiation" bit in the Basic Mode Control Register (BMCR) on the PHY chip when initiating autonegotiation. 3. The receive engine of the driver was down. This problem was introduced after cache line alignment was changed from 8-longword boundary to 32-longword boundary. Resolution: Rolled back the cache line alignment changes. 4. Buffer refill logic in the driver could result in driver being in the interrupt service routine(ISR) for a long time which resulted in this panic. Resolution: Fixed the buffer refill path to avoid being in ISR for a long time period. PHNE_17071: 1. The patch PHNE_14890 installation is excluded if the Built-in PCI 100BASE-T card is not present. If the Ignite archive is built on a machine without a Built-in PCI 100BASE-T card, the archive will not have the Built-in PCI 100BASE-T driver. 2. Removal of this patch will result in loss of networking capability. For this reason, the checkremove script of the patch was not allowing the patch to be removed. The checkremove script has been changed to allow patch removal if the Built-in PCI 100BASE-T hardware is not present. PHNE_14890: 1. Built-in PCI 100BASE-T driver was not included in B.11.00. Support for this driver is being introduced in this patch. SR: 8606213070 8606217890 8606139460 8606185233 8606180566 8606197035 8606171347 8606165703 8606164461 8606159065 8606154819 8606134762 8606156883 4701430132 5003466995 1653286500 5003432179 5003465328 8606136416 8606109120 1653292060 8606113954 8606113907 8606126228 8606105029 Patch Files: Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libbtlan3.a /usr/conf/lib/btlan3_dbg.o /usr/conf/master.d/lan100bt-core /usr/conf/lib/libmaclan.a /usr/conf/master.d/maclan Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libbtlan3.a /usr/conf/lib/btlan3_dbg.o /usr/conf/master.d/lan100bt-core /usr/conf/lib/libmaclan.a /usr/conf/master.d/maclan Networking.LAN-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /opt/networkdocs/PCI100btSCSI_using.pdf /usr/lib/nls/msg/C/dsbtlan3.cat /usr/lib/nls/msg/C/pebtlan3.cat /usr/lib/lanadmin/libdsbtlan3.1 /usr/lib/lanadmin/libdsbtlan3.sl /usr/lib/lanscan/libpebtlan3.1 /usr/lib/lanscan/libpebtlan3.sl /usr/sbin/hpbase100_init /usr/newconfig/etc/rc.config.d/hpbase100conf /sbin/init.d/hpbase100 /sbin/rc2.d/S323hpbase100 /usr/lib/nls/msg/C/fmtbtlan3.cat /usr/lib/libfmtbtlan3.1 /usr/lib/libfmtbtlan3.sl /sbin/init.d/maclan_init /sbin/rc2.d/S462maclan what(1) Output: Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libbtlan3.a: 100BT : btlan3.c Core 100BT Cleanup PHNE_25907 B.11. 00.08 $Revision: 1.78 $ $Date: 2001/11/02 15 :30:00 $ /usr/conf/lib/btlan3_dbg.o: None /usr/conf/master.d/lan100bt-core: None /usr/conf/lib/libmaclan.a: Pseudo LLA-MAC retrieval driver ver 1.1 /usr/conf/master.d/maclan: None Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libbtlan3.a: 100BT : btlan3.c Core 100BT Cleanup PHNE_25907 B.11. 00.08 $Revision: 1.78 $ $Date: 2001/11/02 15 :30:00 $ /usr/conf/lib/btlan3_dbg.o: None /usr/conf/master.d/lan100bt-core: None /usr/conf/lib/libmaclan.a: Pseudo LLA-MAC retrieval driver ver 1.1 /usr/conf/master.d/maclan: None Networking.LAN-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /opt/networkdocs/PCI100btSCSI_using.pdf: None /usr/lib/nls/msg/C/dsbtlan3.cat: None /usr/lib/nls/msg/C/pebtlan3.cat: None /usr/lib/lanadmin/libdsbtlan3.1: libdsbtlan3.sl: Version: B.11.00 $Date: 2000/08/31 1 6:06:18 $ /usr/lib/lanadmin/libdsbtlan3.sl: libdsbtlan3.sl: Version: B.11.00 $Date: 2000/08/31 1 6:06:18 $ /usr/lib/lanscan/libpebtlan3.1: libpebtlan3.sl: Version: B.11.00 $Date: 98/04/30 15 :45:05 $ /usr/lib/lanscan/libpebtlan3.sl: libpebtlan3.sl: Version: B.11.00 $Date: 98/04/30 15 :45:05 $ /usr/sbin/hpbase100_init: hpbase100_init $Revision: 1.3 $ $Date: 99/07/16 11: 26:28 $ /usr/newconfig/etc/rc.config.d/hpbase100conf: hpbase100conf $Revision: 1.5 $ $Date: 2000/02/21 10: 55:45 $ /sbin/init.d/hpbase100: hpbase100 $Revision: 1.12 $ $Date: 2000/09/12 20:44: 12 $ /sbin/rc2.d/S323hpbase100: hpbase100 $Revision: 1.12 $ $Date: 2000/09/12 20:44: 12 $ /usr/lib/nls/msg/C/fmtbtlan3.cat: None /usr/lib/libfmtbtlan3.1: BTLAN3: Version: B.11.00 $Date: 2000/01/05 11: 32:34 $ /usr/lib/libfmtbtlan3.sl: BTLAN3: Version: B.11.00 $Date: 2000/01/05 11: 32:34 $ /sbin/init.d/maclan_init: Pseudo LLA/MAC device script ver 1.0 /sbin/rc2.d/S462maclan: Pseudo LLA/MAC device script ver 1.0 cksum(1) Output: Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 12395119 119364 /usr/conf/lib/libbtlan3.a 1654383276 227200 /usr/conf/lib/btlan3_dbg.o 3841853062 3768 /usr/conf/master.d/lan100bt-core 11835793 6144 /usr/conf/lib/libmaclan.a 3552486123 3682 /usr/conf/master.d/maclan Networking.LAN2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 2685530623 72424 /usr/conf/lib/libbtlan3.a 1045539736 183312 /usr/conf/lib/btlan3_dbg.o 3841853062 3768 /usr/conf/master.d/lan100bt-core 4104683207 3060 /usr/conf/lib/libmaclan.a 3552486123 3682 /usr/conf/master.d/maclan Networking.LAN-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 1697003003 1078020 /opt/networkdocs/PCI100btSCSI_using.pdf 2624246182 3996 /usr/lib/nls/msg/C/dsbtlan3.cat 3231781941 114 /usr/lib/nls/msg/C/pebtlan3.cat 2845178846 28672 /usr/lib/lanadmin/libdsbtlan3.1 2845178846 28672 /usr/lib/lanadmin/libdsbtlan3.sl 924546100 12288 /usr/lib/lanscan/libpebtlan3.1 924546100 12288 /usr/lib/lanscan/libpebtlan3.sl 3746626711 6308 /usr/sbin/hpbase100_init 3710299036 1284 /usr/newconfig/etc/rc.config.d/hpbase100conf 3594836019 9593 /sbin/init.d/hpbase100 3594836019 9593 /sbin/rc2.d/S323hpbase100 4128389427 14673 /usr/lib/nls/msg/C/fmtbtlan3.cat 213441590 12288 /usr/lib/libfmtbtlan3.1 213441590 12288 /usr/lib/libfmtbtlan3.sl 1560417431 1192 /sbin/init.d/maclan_init 1560417431 1192 /sbin/rc2.d/S462maclan Patch Conflicts: None Patch Dependencies: s700: 11.00: PHNE_18486 PHNE_18409 s800: 11.00: PHNE_18486 PHNE_18409 Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_14890 PHNE_17071 PHNE_18574 PHNE_19020 PHNE_19826 PHNE_21687 PHNE_22244 Equivalent Patches: None Patch Package Size: 1860 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_25907 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHNE_25907.depot By default swinstall will archive the original software in /var/adm/sw/save/PHNE_25907. If you do not wish to retain a copy of the original software, include the patch_save_files option in the swinstall command above: -x patch_save_files=false 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_25907.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHNE_25907.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_25907.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: A new version of file /etc/rc.config.d/hpbase100conf is delivered as part of this patch, as /usr/newconfig/etc/rc.config.d/hpbase100conf file. If you have edited /etc/rc.config.d/hpbase100conf file, you may want to merge these files. To set speed and duplex via SAM, users need to install SAM patch: PHCO_17792. ifconfig down/up is needed while changing MTU using lanamdin -[M|R] options.