Patch Name: PHNE_26293 Patch Description: s700_800 11.00 PCI 100B(Tx/Fx) cumulative patch Creation Date: 02/02/05 Post Date: 02/04/04 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: N/A Filesets: Networking.SPP100BT-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Networking.SPP100BT-INIT,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Networking.SPP100BT64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Networking.SPP100BT-MIN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_26293: HANG PHNE_24392: PANIC MEMORY_LEAK PHNE_22245: PANIC PHNE_21220: PANIC PHNE_19094: PANIC OTHER Broken functionalities PHNE_18668: PANIC PHNE_17661: PANIC PHNE_16930: PANIC PHNE_15944: PANIC PHNE_14259: PANIC PHNE_13822: PANIC PHNE_13310: PANIC Category Tags: defect_repair enhancement general_release critical panic halts_system memory_leak Path Name: /hp-ux_patches/s700_800/11.X/PHNE_26293 Symptoms: PHNE_26293: 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. Lanadmin statistics for Inbound discards and outbound nonunicast packets are same. PHNE_24392: 1. Link not coming up if switch is rebooted when speed/duplex value at both ends are set manually. 2. System panics with Data Page Fault. 3. Memory leak in btlan3-6 and btlan drivers. 4. Setuid bit is set for lanadmin library. PHNE_22245: 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_21220: 1. Start up scripts fail if there are 10 or more lan cards. 2. PCI/HSC 100BT interface hangs after 36 hours of testing. 3. PCI/HSC 100BT reports bad stats via netstat and lanadmin. 4. Nettl displays incorrect informative message about speed and mode. 5. ER: Display capabilities of the switch after auto negotiation completion. 6. ER: btlan6 does not report auto-negotiation when using lanadmin -x command. 7. btlan6 driver message is not clear in nettl log about cable disconnect. 8. lanadmin -A to change MAC address causes panic: wait_for_lock PHNE_19094: 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. After cable reconnect on the FX card: a. Applications (including lanadmin) receive LINKDOWN for the link status value in the ifOperStatus field of the mib structure. lanadmin therefore displays DOWN for the "Operation Status". b. Applications fail to establish traffic on the interface. 9. System panic due to data page fault. 10. The actual link configuration does not reflect what is manually configured in /etc/rc.config.d/hpsppci100conf. PHNE_18668: 1. Driver stops receiving incoming frames. 2. "Spinlock held too long" panic with debug kernel. PHNE_17661: 1. EPIC Read Channel Error causes system panic with a tombstone message similar to: panic: Channel error in Driver btlan6, discovered by Epic 0, Device 2 Error Config: 2aabffeb:e8aaab01 Error Cause: 00000000:00000000 Error Info: 80172000:00000006 2. System panic due to data page fault 3. System hang or system panic due to depletion of memory resources. 4. Incorrect or arbitrary link configuration after cable disconnect at either ends. PHNE_16930: 1. AUI connection does not work with an AUI cable between the card and the transceiver. 2. 100BASE-FX card not claimed. 3. System panics with the following message "panic Channel error in Driver btlan6, discovered by Epic 0, Device 2". 4. System panics with message: "panic: Spinlock held too long" PHNE_16374: 1.The statistics count for transmission collision is never updated. PHNE_15944: 1. The driver does not have the new template file for hpsppci100conf. 2. Lanadmin -A hangs. 3. Log messages in nettl are not accurate. 4. The driver does not support HP-APA(trunking) product. 5. The system panics in timeout function during heavy traffic. PHNE_15865: 1. Link hangs after adding many multicast addresses. 2. The driver does not support manual configuration for speed and mode. 3. The driver does not respond after you cycle power on Switch 2000. PHNE_15277: 1. Link hangs after adding many multicast addresses. 2. The driver does not support manual configuration for speed and mode. 3. The driver does not respond after you cycle power on Switch 2000. PHNE_14259: 1. The driver does not support setting of duplex mode across reboots. 2. Startup script is unable to execute lanadmin correctly. 3. The driver displays btlan3_abnormal_isr message when receiving long packet. 4. The driver cannot coexist with other drivers based on the same code. 5. The driver cannot be installed if there is no wsio driver in the kernel. 6. Lanadmin is unable to open catalog file. 7. The system panics with ep_error_intr_handler. PHNE_13822: 1. The driver does not support the SAP promiscuous mode. 2. The system panics when the SAP promiscuous mode is enabled on a PCI 100BT interface with heavy traffic. PHNE_13310: 1. The system panics with ep_error_intr_handler with heavy network traffic. 2. The PCI 100BT link hangs. Defect Description: PHNE_26293: 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. 3. JAGae06924: Btlan driver always duplicates broadcast packets and sends them back to DLPI. DLPI drops the packets if it is not expecting the packets to be looped back. Resolution: The driver sends broadcast packets back to DLPI only when a flag in message block indicates so. PHNE_24392: 1. 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. 2. JAGad08759: System panics with Data Page Fault. 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 : panic+0x14 report_trap_or_int_and_panic+0x80 trap+0xdb8 nokgdb+0x8 bzero_prefetch_sl_method+0x18 _btlan3_init+0x8c isc_table_traverse+0x70 wsio_init_end+0x10 io_virt_mode_config+0xe8 main+0x128 $vstart+0x48 istackatbase+0x84 Resolution: The fix is to check the return value of all memory allocation and mapping calls in the driver init function. 3. JAGad54435: Memory leak in btlan3-6 and btlan drivers. The memory leak in 2k byte bucket is tied to inbound errors and an uninitialized local variable. That 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. 4. JAGad66231: btlan3-6 and btlan drivers 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 have been modified so the setuid bit is not set. PHNE_22245: 1. JAGad03897: If 100BT NIC does not have access to an available receive buffer the card will drop packets. Resolution: The driver doubles the amount of receive buffers available for the card. 2. JAGad24136: The data portion of the receive buffers was not cacheline aligned. 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_21220: 1. JAGac16214: The hpsppci100 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. 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. 4. JAGab81818: The nettl logging message about speed and mode displays wrong values. Resolution: The driver is modified to display correct speed and mode. 5. 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. 6. JAGad01576(ER): The driver was not displaying the auto-negotiation/manual status. Resolution: Added code to display auto-negotiation/manual mode status to lanadmin command. 7. JAGac42831: The nettl catalog file contained ambiguous wording about card instance. Resolution: catalog file is modified to contain "Crd In#" along with existing slot information. 8. 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_19094: 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. 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. 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 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. The driver fails to invoke lanc_mib_event with NMV_LINKUP event upon cable reconnection. Resolution: The driver invoked lanc_mib_event with NMV_LINKUP event event upon cable reconnection. 9. The driver did not check for the NULL value for the mapped IO virtual address of the base of the card's registers space and used it to access a card register at offset 0x48. Resolution: A check is put in the driver's routine so that for the NULL value, the driver returns to the caller without claiming the card. 10. The array of link configuration data in /etc/rc.config.d/hpsppci100conf was non-sequential which the startup script (/sbin/init.d/hpsppci100) cannot handle correctly. Resolution: The startup script (/sbin/init.d/hpsppci100) is modified to skip over the missing indices in the array and work through all that are provided. PHNE_18668: 1. 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. 2. 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_17661: 1. The race condition between the write and read to the same memory location on the EPIC shared memory issued by the driver code running on two different processors violated the expected serialization from using the spinlock. Resolution: Flush the write immediately using a dummy read to the same location. 2. A null pointer was dereferenced. Resolution: Check whether buffer allocation routine returned a valid non-null buffer pointer before attempting to use it. 3. Buffer memory leak in the receive path in promiscuous multicast mode. Resolution: Free the receive buffer if there is no match found during address lookup. 4. "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. PHNE_16930: 1. BNC was not powered down when using AUI, which caused signal interference and hence signal attenuation on the AUI connection. 2. The postinstall script was adding the driver entry to /stand/system only if ioscan(1M) output indicated that PCI 100BASE-TX card was installed. In installations with only 100BASE-FX the postinstall script did not add the driver entry to the /stand/system file. 3. Incorrect usage of init_map_context(CDIO3) in the driver. 4. Many (unrelated) receive buffers were incorrectly mapped with a single mapping context. PHNE_16374: 1. The transmission collision count was never updated. PHNE_15944: 1. The previous patches did not ship the new template file. 2. The data type of the value returned by the function that processes lanadmin -A request was incorrect. 3. The messages in the driver's catalogue file were not accurate. 4. The enhancement to support HP-APA product was not implemented. 5. The driver did not prevent concurrent access to the transmit descriptors. PHNE_15865: 1. The driver did not manipulate multicast transmit buffers and descriptors correctly. 2. The driver did not implement manual configuration. 3. The interface state was marked down if the driver did not detect a valid connection. PHNE_15277: 1. The driver did not manipulate multicast transmit buffers and descriptors correctly. 2. The driver did not implement manual configuration. 3. The interface state was marked down if the driver did not detect a valid connection. PHNE_14259: 1. Startup script and configuration file had inconsistent variables. 2. Startup script did not use PPA for B.11.00. 3. The driver did not handle long packet errors properly. 4. The driver used a global variable causing conflict with other drivers based on the same code. 5. The driver's master file needed to have dependence on wsio driver. 6. Lanadmin did catalog file open without a closing call. 7. The driver unmapped the entries that had never been mapped. PHNE_13822: 1. The SAP promiscuous mode was not implemented. 2. Length adjustment for packets smaller than 60 was incorrect. PHNE_13310: 1. Mapped entries are not properly unmapped in the reset path. 2. The outbound path may encounter DMA timeouts. 3. The driver may continuously reset the card when DMA timeout errors occur. 4. Counters in the receive path were not adjusted correctly. 5. The driver has not enabled the parity error and PCI system error reporting. SR: 8606213070 8606217890 8606237881 8606185018 8606139460 8606185233 8606197035 8606164461 8606159065 8606154819 8606134762 8606135717 8606136416 8606125888 8606132427 8606113954 8606113907 8606103478 8606109120 1653292060 4701430124 5003467019 5003432179 5003465328 1653283077 4701400895 4701380733 1653260265 1653259556 5003413526 1653258533 4701383406 4701380790 Patch Files: Networking.SPP100BT-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libbtlan6.a /usr/conf/master.d/btlan6 /usr/conf/lib/btlan6_newdbg.o Networking.SPP100BT-INIT,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: /sbin/init.d/hpsppci100 /usr/newconfig/etc/rc.config.d/hpsppci100conf /usr/sbin/hpsppci100_init Networking.SPP100BT64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: /usr/lib/lanadmin/libdsbtlan6.1 /usr/lib/libfmbtlan6.1 Networking.SPP100BT-MIN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/lib/nls/msg/C/fmbtlan6.cat /usr/lib/nls/msg/C/dsbtlan6.cat OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libhp-ux.a(btlan6_dbg.o) what(1) Output: Networking.SPP100BT-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libbtlan6.a: 100BT : btlan6.c PCI 100BT Cleanup PHNE_26293 B.11.0 0.15 $Revision: 1.79 $ $Date: 2002/02/07 11: 50:00 $ /usr/conf/master.d/btlan6: btlan6 PHNE_21220 $Revision: 1.1.118.10 $ /usr/conf/lib/btlan6_newdbg.o: None Networking.SPP100BT-INIT,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: /sbin/init.d/hpsppci100: hpsppci100 /usr/newconfig/etc/rc.config.d/hpsppci100conf: hpsppci100conf /usr/sbin/hpsppci100_init: hpsppci100_init Networking.SPP100BT64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: /usr/lib/lanadmin/libdsbtlan6.1: libdsbtlan6.sl: Version: B.11.00 $Date: 2002/02/12 1 6:06:18 $ /usr/lib/libfmbtlan6.1: BTLAN6: Version: B.11.00 $Date: 2000/03/03 16: 25:47 $ Networking.SPP100BT-MIN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/lib/nls/msg/C/fmbtlan6.cat: None /usr/lib/nls/msg/C/dsbtlan6.cat: None OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libhp-ux.a(btlan6_dbg.o): None cksum(1) Output: Networking.SPP100BT-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 216917110 115684 /usr/conf/lib/libbtlan6.a 4216352110 3878 /usr/conf/master.d/btlan6 556476573 227208 /usr/conf/lib/btlan6_newdbg.o Networking.SPP100BT-INIT,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: 1418141818 8283 /sbin/init.d/hpsppci100 3174317822 1358 /usr/newconfig/etc/rc.config.d/ hpsppci100conf 1745197678 5459 /usr/sbin/hpsppci100_init Networking.SPP100BT64SLIB,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: 3864419174 28672 /usr/lib/lanadmin/libdsbtlan6.1 509488196 12288 /usr/lib/libfmbtlan6.1 Networking.SPP100BT-MIN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 3020725085 14712 /usr/lib/nls/msg/C/fmbtlan6.cat 2624246182 3996 /usr/lib/nls/msg/C/dsbtlan6.cat OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 556476573 227208 /usr/conf/lib/libhp-ux.a(btlan6_dbg.o) Patch Conflicts: None Patch Dependencies: s700: 11.00: PHNE_14632 PHNE_18075 s800: 11.00: PHNE_14632 PHNE_18075 Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_13310 PHNE_13822 PHNE_14259 PHNE_15277 PHNE_15865 PHNE_15944 PHNE_16374 PHNE_16930 PHNE_17661 PHNE_18668 PHNE_19094 PHNE_21220 PHNE_22245 PHNE_24392 Equivalent Patches: None Patch Package Size: 700 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_26293 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHNE_26293.depot By default swinstall will archive the original software in /var/adm/sw/save/PHNE_26293. 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_26293.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHNE_26293.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_26293.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: I. When modifying the MTU value of an interface, please follow the following steps: 1. Bring the interface down with 'ifconfig' 2. Modify the MTU value 3. Bring the interface up with 'ifconfig' II. Install SAM patch PHCO_17792 before using SAM to modify the speed and the duplex modes. A new version of file /etc/rc.config.d/hpsppci100conf is delivered as part of this patch, as /usr/newconfig/etc/rc.config.d/hpsppci100conf file. If you have edited /etc/rc.config.d/hpsppci100conf file, you may want to merge these files.