Patch Name: PHNE_22244

Patch Description: s700_800 11.00 Built-in PCI 100BASE-T patch

Creation Date: 00/11/09

Post Date: 00/12/15

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_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

Path Name: /hp-ux_patches/s700_800/11.X/PHNE_22244

Symptoms:
	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<pid> 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_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<pid>.
	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<num> ".
	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:
	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_22244 B.11.
			00.07 $Revision: 1.74 $ $Date: 2000/11/07 17
			:00:48 $
	/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_22244 B.11.
			00.07 $Revision: 1.74 $ $Date: 2000/11/07 17
			:00:48 $
	/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:
	3876845210 116836 /usr/conf/lib/libbtlan3.a
	1501145389 226928 /usr/conf/lib/btlan3_dbg.o
	3841853062 3768 /usr/conf/master.d/lan100bt-core
	1476119866 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:
	2738173960 70748 /usr/conf/lib/libbtlan3.a
	4054856317 183092 /usr/conf/lib/btlan3_dbg.o
	3841853062 3768 /usr/conf/master.d/lan100bt-core
	1286243102 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
	552772825 28672 /usr/lib/lanadmin/libdsbtlan3.1
	552772825 28672 /usr/lib/lanadmin/libdsbtlan3.sl
	3952197459 12288 /usr/lib/lanscan/libpebtlan3.1
	3952197459 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
	3220755243 12288 /usr/lib/libfmtbtlan3.1
	3220755243 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

Equivalent Patches: None

Patch Package Size: 1850 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_22244

	5. Run swinstall to install the patch:

		swinstall -x autoreboot=true -x patch_match_target=true \
			  -s /tmp/PHNE_22244.depot

	By default swinstall will archive the original software in 
	/var/adm/sw/save/PHNE_22244.  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_22244.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_22244.text file is 
	available in the product readme:

		swlist -l product -a readme -d @ /tmp/PHNE_22244.depot

	To put this patch on a magnetic tape and install from the
	tape drive, use the command:

		dd if=/tmp/PHNE_22244.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.

