Patch Name: PHNE_25580 Patch Description: s700_800 11.00 PCI 100BT lan cumulative patch Creation Date: 01/11/28 Post Date: 01/12/17 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: B5509BA B.11.00.01 B.11.00.02 B.11.00.03 B.11.00.04 B5509BA B.11.00.05 J4253AA B.11.00.01 B.11.00.02 B.11.00.03 B.11.00.04 J4253AA B.11.00.05 A5230A B.11.00.01 B.11.00.02 B.11.00.03 B.11.00.04 A5230A B.11.00.05 Filesets: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.01,fa=HP-UX_B.11.00_64,v=HP 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.02,fa=HP-UX_B.11.00_64,v=HP 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.03,fa=HP-UX_B.11.00_64,v=HP 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.04,fa=HP-UX_B.11.00_64,v=HP 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.05,fa=HP-UX_B.11.00_64,v=HP 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.01,fa=HP-UX_B.11.00_32,v=HP 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.02,fa=HP-UX_B.11.00_32,v=HP 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.03,fa=HP-UX_B.11.00_32,v=HP 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.04,fa=HP-UX_B.11.00_32,v=HP 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.05,fa=HP-UX_B.11.00_32,v=HP 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.04,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.05,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.04,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.05,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.04,fa=HP-UX_B.11.00_32/64,v=HP 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.05,fa=HP-UX_B.11.00_32/64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_25580: HANG PHNE_24006: PANIC MEMORY_LEAK PHNE_22542: PANIC PHNE_21682: PANIC Category Tags: defect_repair enhancement general_release critical panic halts_system memory_leak Path Name: /hp-ux_patches/s700_800/11.X/PHNE_25580 Symptoms: PHNE_25580: 1. Interface hangs sometimes during heavy traffic. 2. Zero length messages (mblks) cause IO resources shortage (IOVA leak), this will lead to system hang. PHNE_24006: 1. System panics with Data Page Fault. 2. Memory leak in btlan3-6 and btlan drivers. 3. Link not coming up if switch is rebooted when speed/duplex value at both ends are set manually. 4. E.R: Keep information about which CPU will handle our interrupts in the ift for debugging. 5. Setuid bit is set for lanadmin library. PHNE_22542: 1. 100BT is randomly missing packets. 2. System panics due to instruction page fault. 3. 'netfmt' on 100BT traces causes SIGSEGV while running HP_APA LAN_MONITOR 4. 100BT card hangs occasionally. The card is unable to receive any frames. PHNE_21682: 1. lanadmin -A to change MAC address causes panic: wait_for_lock PHNE_20442: 1. Wrong message is logged in dmesg as "Unable to setup Read / write prefetch lengths". 2. Wrong nettl informative message being logged when speed is changed using lanadmin. 3. lanadmin statistics are not updated & cleared correctly. PHNE_19079: 1. The inbound octet count displayed by lanadmin is always zero. 2. SAM does not support altering speed (10 or 100Mbps) and duplex mode (half or full) settings on the interface. 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 [nmid]' display does not indicate whether the card is running in 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. Outbound queue length can become negative after clearing net statistics using lanadmin. 8. Collisions are not detected by btlan driver. 9. IP Multicasting problems with 100BT when cable is disconnected and reconnected. 10. The actual link configuration does not reflect what is manually configured in /etc/rc.config.d/hppci100conf. Defect Description: PHNE_25580: 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 really 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. PHNE_24006: 1. 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. Resolution: The fix is to check the return value of all memory allocation and mapping calls in the driver init function. 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 2. 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. 3. JAGad54220: Link not coming up if switch is rebooted when speed/duplex value at both ends are set manually. Driver was clearing all the bits in the BMCR if the speed/duplex value were set manually. So the card was getting set to 10HD and since the other end is also manually set, the link was not coming up. Resolution: Now the driver sets the speed and duplex value in the BMCR based on the value set by the user. 4. 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. 5. 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_22542: 1. JAGad03897: If 100BT NIC does not have access to an available receive buffer the card will drop packets. Resolution: The driver doubled the number 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. 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. 4. 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_21682: 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. PHNE_20442: 1. JAGab72844: message logged Unable to setup Read / write prefetch lengths. Resolution: Now the message is no more logged. 2. JAGab81818: When speed is changed the informative message logged is not correct. Resolution: A correct message is now logged when speed is changed. 3. JAGab70255: Driver reports bad statistics via netstat and lanadmin. Resolution: The driver is modified to update all the statistics that are supported by the card. PHNE_19079: 1. The driver did not properly increment the inbound octet count. Resolution: The driver increments the inbound octet count when a a packet is received. 2. No supporting ioctls were implemented in the driver for SAM to use. Resolution: Implemented the required ioctls that the corresponding code in SAM uses. 3. 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. 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. 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. 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. The driver used to erroneously zero the outbound queue length when clear stat command was issued. Later when a queued packet was Transmitted successfully the driver decrements the queue length by one, thus making the counter negative. Resolution: The code is modified, not to zero out the out bound queue length when net statistics clear command is issued. 8. The checking for collisions in the driver was incorrect. The driver used to check for error summary bit only. This causes collision detection to go un-noticed. Resolution: The driver is modified to check for any and all the error conditions that can occur during transmission. 9.IP Multicast addresses were lost when there is a cable disconnect and reconnect. This is due to driver state being still down when the link up state is notified to upper layer. Resolution: The driver state is changed to on line before the link up state is notified to upper layers. 10. The array of link configuration data in /etc/rc.config.d/hppci100conf was non-sequential which the startup script (/sbin/init.d/hppci100) could not handle correctly. Resolution: The startup script (/sbin/init.d/hppci100) is modified to skip over the missing indices in the array and work through all that are provided SR: 8606213070 8606217890 8606185018 8606139460 8606185233 8606180566 8606197035 8606164461 8606159065 8606134762 8606154819 8606136416 8606105029 8606109120 8606103478 5003432179 1653286500 4701414177 5003467001 4701430140 5003463430 Patch Files: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.01,fa=HP-UX_B.11.00_64, v=HP: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.02,fa=HP-UX_B.11.00_64, v=HP: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.03,fa=HP-UX_B.11.00_64, v=HP: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.04,fa=HP-UX_B.11.00_64, v=HP: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.05,fa=HP-UX_B.11.00_64, v=HP: /usr/conf/lib/libbtlan5.a /usr/conf/lib/btlan5_dbg.o 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.01,fa=HP-UX_B.11.00_32, v=HP: 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.02,fa=HP-UX_B.11.00_32, v=HP: 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.03,fa=HP-UX_B.11.00_32, v=HP: 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.04,fa=HP-UX_B.11.00_32, v=HP: 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.05,fa=HP-UX_B.11.00_32, v=HP: /usr/conf/lib/libbtlan5.a /usr/conf/lib/btlan5_dbg.o 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.02, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.04, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.05, fa=HP-UX_B.11.00_32/64,v=HP: /usr/sbin/hppci100_init /usr/newconfig/etc/rc.config.d/hppci100conf /sbin/init.d/hppci100 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.02, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.04, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.05, fa=HP-UX_B.11.00_32/64,v=HP: /usr/lib/nls/msg/C/dsbtlan5.cat /usr/lib/lanadmin/libdsbtlan5.sl 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.02, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.04, fa=HP-UX_B.11.00_32/64,v=HP: 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.05, fa=HP-UX_B.11.00_32/64,v=HP: /usr/lib/libfmtbtlan5.sl /usr/lib/nls/msg/C/fmtbtlan5.cat what(1) Output: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.01,fa=HP-UX_B.11.00_64, v=HP: /usr/conf/lib/libbtlan5.a: 100BT : btlan5.c PCI 100BT Cleanup PHNE_25580 B.11.0 0.09 $Revision: 1.78 $ $Date: 2001/11/02 15: 30:00 $ /usr/conf/lib/btlan5_dbg.o: None 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.01,fa=HP-UX_B.11.00_32, v=HP: /usr/conf/lib/libbtlan5.a: 100BT : btlan5.c PCI 100BT Cleanup PHNE_25580 B.11.0 0.09 $Revision: 1.78 $ $Date: 2001/11/02 15: 30:00 $ /usr/conf/lib/btlan5_dbg.o: None 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: /sbin/init.d/hppci100: : hppci100 /usr/newconfig/etc/rc.config.d/hppci100conf: : hppci100conf /usr/sbin/hppci100_init: hppci100_init $Revision: 1.9 $ $Date: 99/08/18 19:4 7:12 $ 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: /usr/lib/lanadmin/libdsbtlan5.sl: libdsbtlan5.sl: Version: B.11.00 $Date: 2000/08/31 1 6:06:18 $ /usr/lib/nls/msg/C/dsbtlan5.cat: None 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: /usr/lib/libfmtbtlan5.sl: BTLAN5: Version: B.11.00 $Date: 99/11/18 14:36 :48 $ /usr/lib/nls/msg/C/fmtbtlan5.cat: None cksum(1) Output: 100BT-PCI-KRN.100BT-KRN64,fr=B.11.00.01,fa=HP-UX_B.11.00_64, v=HP: 1688242479 122260 /usr/conf/lib/libbtlan5.a 4249052873 227200 /usr/conf/lib/btlan5_dbg.o 100BT-PCI-KRN.100BT-KRN32,fr=B.11.00.01,fa=HP-UX_B.11.00_32, v=HP: 744157833 71332 /usr/conf/lib/libbtlan5.a 697073800 183312 /usr/conf/lib/btlan5_dbg.o 100BT-PCI-RUN.100BT-INIT,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: 1373922103 8359 /sbin/init.d/hppci100 4125104724 1288 /usr/newconfig/etc/rc.config.d/hppci100conf 1031270085 6222 /usr/sbin/hppci100_init 100BT-PCI-RUN.100BT-RUN,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: 3518895204 28672 /usr/lib/lanadmin/libdsbtlan5.sl 2624246182 3996 /usr/lib/nls/msg/C/dsbtlan5.cat 100BT-PCI-FMT.100BT-FORMAT,fr=B.11.00.01, fa=HP-UX_B.11.00_32/64,v=HP: 526315453 12288 /usr/lib/libfmtbtlan5.sl 2881009131 14621 /usr/lib/nls/msg/C/fmtbtlan5.cat 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_19079 PHNE_20442 PHNE_21682 PHNE_22542 PHNE_24006 Equivalent Patches: None Patch Package Size: 720 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_25580 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHNE_25580.depot By default swinstall will archive the original software in /var/adm/sw/save/PHNE_25580. 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_25580.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHNE_25580.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_25580.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: A new version of file /etc/rc.config.d/hppci100conf was delivered as a part of this patch, which is /usr/newconfig/etc/rc.config.d/hppci100conf. If you edit /etc/rc.config.d/hppci100conf you may want to merge the 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.