Patch Name: PHNE_24007

Patch Description: s700_800 11.00 4 port PCI 100BASE-T cumulative  patch

Creation Date: 01/04/24

Post Date: 01/06/07

Hardware Platforms - OS Releases:
	s700: 11.00
	s800: 11.00

Products:
	J4254AA B.11.00.00 B.11.00.01 B.11.00.02
	A5506A B.11.00.00 B.11.00.01 B.11.00.02
	A5506B B.11.00.02

Filesets:
	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_64,v=HP
	100BASE-T.100BT-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_64,v=HP
	100BASE-T.100BT-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_64,v=HP
	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_32,v=HP
	100BASE-T.100BT-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_32,v=HP
	100BASE-T.100BT-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_32,v=HP
	100BASE-T.100BT-RUN,fr=B.11.00.00,fa=HP-UX_B.11.00_32/64,v=HP
	100BASE-T.100BT-RUN,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64,v=HP
	100BASE-T.100BT-RUN,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64,v=HP

Automatic Reboot?: Yes

Status: General Release

Critical:
	Yes
	PHNE_24007: PANIC MEMORY_LEAK
	PHNE_22728: PANIC
	PHNE_21887: PANIC
	PHNE_20423: PANIC

Category Tags:
	defect_repair hardware_enablement enhancement
	general_release critical panic memory_leak

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

Symptoms:
	PHNE_24007:
	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_22728:
	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.
	5. 4 port card fails to reconnect at 100 Full Duplex if a
	   cable of bad length (35 - 41m) is connected.
	6. A false link down event is reported by the driver.

	PHNE_21887:
	1. lanadmin -A to change MAC address causes panic:
	   wait_for_lock
	2. Performance degradation & higher CPU utilization with
	   the 4 port cards.

	PHNE_20423:
	1. Start up scripts fail if there are 10 or more lan cards.
	2. btlan interface hangs after 36 hours of testing.
	3. Nettl displays incorrect informative message about
	   speed and  mode.
	4. ER: Display capabilities of the switch after auto
	   negotiation completion.
	5. The driver panics with "spinlock held too long"
	   message.
	6. The driver startup script hpbtlan does not set ppa
	   and fails to configure the card.
	7. SAM does not support altering speed (10 or 100Mbps) and
	   duplex mode (half or full) settings on the interface.
	8. 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.
	9. 'lanadmin -x [ppa]' display does not indicate whether
	   the card is running in auto-negotiation or manual mode.
	10.Lanadmin cannot alter the Maximum Transmission Unit (MTU)
	   size value of the interface.
	11.Applications do not receive outbound traffic from the
	   interface when they enable promiscuous mode on the
	   interface.
	12.Outbound queue length can become negative after clearing
	   net statistics using lanadmin.
	13.Collisions are not detected by btlan driver.
	14.The actual link configuration does not reflect what is
	   manually configured in /etc/rc.config.d/hpbtlanconf.
	15.Wrong message is logged in dmesg as "Unable to setup
	   Read / write prefetch lengths".
	16.lanadmin statistics are not updated & cleared correctly.

Defect Description:
	PHNE_24007:
	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_22728:
	1. 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.
	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.
	5. JAGad41701:
	   The national phy chip sets itself to autonegotiate after
	   reset at cable reconnect time irrespective of the mode
	   the interface is set to. If the cable length happens to
	   fall between the 35 to 41 meter range, auto negotiation
	   fails and the card fails to establish a valid link.
	Resolution:
	   The national phy chip was set to autonegotiate after
	   reset only if the interface is set to auto-negotiation
	   mode. Auto-negotiation by the PHY chip is turned off in
	   all other modes.
	6. 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.

	PHNE_21887:
	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. JAGad04850:
	   Non-optimal cache alignment value in driver caused
	   performance degradation & higher CPU utilization.
	Resolution:
	   The cache alignment value is now set to the cache line
	   size of the system.

	PHNE_20423:
	1. JAGac16214: The hpbtlan 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> ".

	2. 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.

	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.

	5. 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.

	6.JAGab63191: The problem occurs due to an error in hpbtlan
	  startup script.
	Resolution:
	   The error is fixed in hpbtlan start up script.

	7.JAGab64699: No supporting ioctls were implemented in the
	  driver for SAM to use.
	Resolution:
	   Implemented the required ioctls that the corresponding
	   code in SAM uses.

	8.JAGab64974: 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.

	9.JAGab64383: 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.

	10.JAGab43887: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.
	11.JAGaa22977: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.

	12.JAGaa95732: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.

	13.JAGab64688: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.

	14.JAGab70552:The array of link configuration data in
	   /etc/rc.config.d/hpbtlanconf was non-sequential
	   which the startup script (/sbin/init.d/hpbtlan)
	   could not handle correctly.
	Resolution:
	   The startup script (/sbin/init.d/hpbtlan) is modified
	   to skip over the missing indices in the array and work
	   through all that are provided.

	15.JAGab72844: message logged Unable to setup Read /
	   write prefetch lengths.
	Resolution:
	   Now the message is no more logged.

	16.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.

SR:
	8606185018 8606139460 8606185233 8606197035 8606171347
	8606172441 8606164461 8606159065 8606154819 8606134762
	8606136416 8606135717 8606113954 8606113907 8606109120
	1653292060 8606101629 4701430140 5003467001 1653286500
	5003432179 4701414177 8606103616 8606105029 8606103478

Patch Files:
	
	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_64,v=HP:

	100BASE-T.100BT-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_64,v=HP:

	100BASE-T.100BT-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_64,v=HP:
	/usr/conf/lib/libbtlan.a
	/usr/conf/lib/btlan_q4.o

	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_32,v=HP:

	100BASE-T.100BT-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_32,v=HP:

	100BASE-T.100BT-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_32,v=HP:
	/usr/conf/lib/libbtlan.a
	/usr/conf/lib/btlan_q4.o

	100BASE-T.100BT-RUN,fr=B.11.00.00,fa=HP-UX_B.11.00_32/64,
		v=HP:

	100BASE-T.100BT-RUN,fr=B.11.00.01,fa=HP-UX_B.11.00_32/64,
		v=HP:

	100BASE-T.100BT-RUN,fr=B.11.00.02,fa=HP-UX_B.11.00_32/64,
		v=HP:
	/usr/lib/lanadmin/libdsbtlan.1
	/usr/lib/lanadmin/libdsbtlan.sl
	/usr/lib/libfmtbtlan.1
	/usr/lib/libfmtbtlan.sl
	/usr/lib/nls/msg/C/fmtbtlan.cat
	/usr/sbin/hpbtlan_init
	/sbin/init.d/hpbtlan
	/sbin/rc2.d/S333hpbtlan
	/usr/lib/nls/msg/C/dsbtlan.cat
	/usr/newconfig/etc/rc.config.d/hpbtlanconf

what(1) Output:
	
	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_64,v=HP:
	/usr/conf/lib/libbtlan.a:
		100BT : btlan.c PCI 4 PORT 100BASE-T PHNE_24007 B.11
			.00.04 $Revision: 1.76 $ $Date: 2001/04/01 1
			4:07:59 $
	/usr/conf/lib/btlan_q4.o:
		None

	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_32,v=HP:
	/usr/conf/lib/libbtlan.a:
		100BT : btlan.c PCI 4 PORT 100BASE-T PHNE_24007 B.11
			.00.04 $Revision: 1.76 $ $Date: 2001/04/01 1
			4:07:59 $
	/usr/conf/lib/btlan_q4.o:
		None

	100BASE-T.100BT-RUN,fr=B.11.00.00,fa=HP-UX_B.11.00_32/64,
		v=HP:
	/usr/lib/lanadmin/libdsbtlan.1:
		libdsbtlan.sl: Version: B.11.00 $Date: 2000/08/31 16
			:06:18 $
	/usr/lib/lanadmin/libdsbtlan.sl:
		libdsbtlan.sl: Version: B.11.00 $Date: 2000/08/31 16
			:06:18 $
	/usr/lib/nls/msg/C/dsbtlan.cat:
		None
	/usr/lib/libfmtbtlan.1:
		BTLAN:      Version: B.11.00  $Date: 2000/01/18 15:5
			9:37 $
	/usr/lib/libfmtbtlan.sl:
		BTLAN:      Version: B.11.00  $Date: 2000/01/18 15:5
			9:37 $
	/usr/lib/nls/msg/C/fmtbtlan.cat:
		None
	/usr/sbin/hpbtlan_init:
		hpbtlan_init  $Revision: 1.1 $ $Date: 99/12/20 10:39
			:34 $
	/sbin/init.d/hpbtlan:
		hpbtlan $Revision: 1.2 $ $Date: 2000/09/13 09:53:32 
			$
	/sbin/rc2.d/S333hpbtlan:
		hpbtlan $Revision: 1.2 $ $Date: 2000/09/13 09:53:32 
			$
	/usr/newconfig/etc/rc.config.d/hpbtlanconf:
		hpbtlanconf $Revision: 1.2 $ $Date: 2000/03/02 10:14
			:44 $

cksum(1) Output:
	
	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_64,v=HP:
	74118403 121748 /usr/conf/lib/libbtlan.a
	1437153964 227168 /usr/conf/lib/btlan_q4.o

	100BASE-T.100BT-KRN,fr=B.11.00.00,fa=HP-UX_B.11.00_32,v=HP:
	688980068 70900 /usr/conf/lib/libbtlan.a
	1988136143 183272 /usr/conf/lib/btlan_q4.o

	100BASE-T.100BT-RUN,fr=B.11.00.00,fa=HP-UX_B.11.00_32/64,
		v=HP:
	4248413760 28672 /usr/lib/lanadmin/libdsbtlan.1
	4248413760 28672 /usr/lib/lanadmin/libdsbtlan.sl
	2624246182 3996 /usr/lib/nls/msg/C/dsbtlan.cat
	3532053831 12288 /usr/lib/libfmtbtlan.1
	3532053831 12288 /usr/lib/libfmtbtlan.sl
	3467707698 14341 /usr/lib/nls/msg/C/fmtbtlan.cat
	799983117 5994 /usr/sbin/hpbtlan_init
	904187253 8249 /sbin/init.d/hpbtlan
	904187253 8249 /sbin/rc2.d/S333hpbtlan
	2567160831 1270 /usr/newconfig/etc/rc.config.d/hpbtlanconf

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_20423 PHNE_21887 PHNE_22728

Equivalent Patches: None

Patch Package Size: 00 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_24007

	5. Run swinstall to install the patch:

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

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

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

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

		dd if=/tmp/PHNE_24007.depot of=/dev/rmt/0m bs=2k

Special Installation Instructions:
	A new version of file /etc/rc.config.d/hpbtlanconf
	is delivered as part of this patch,
	as /usr/newconfig/etc/rc.config.d/hpbtlanconf file.
	If you have edited /etc/rc.config.d/hpbtlanconf 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
	lanadmin -[M|R] options.

