Patch Name: PHSS_30597 Patch Description: s700_800 11.00 Tachyon TL Fibre Channel Driver Patch Creation Date: 04/07/30 Post Date: 04/08/17 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: FC-TACHYON-TL B.11.00.01 B.11.00.02 B.11.00.03 B.11.00.04 FC-TACHYON-TL B.11.00.05 B.11.00.06 B.11.00.07 B.11.00.08 FC-TACHYON-TL B.11.00.10 Filesets: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_32,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.08,fa=HP-UX_B.11.00_32,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_32,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.08,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.06,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.05,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.04,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.03,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.10,fa=HP-UX_B.11.00_32/64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.08,fa=HP-UX_B.11.00_32/64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.07,fa=HP-UX_B.11.00_32/64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.06,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.05,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.04,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.03,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.02,fa=HP-UX_B.11.00_64,v=HP FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.01,fa=HP-UX_B.11.00_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHSS_30597: CORRUPTION PANIC HANG ABORT CORRUPTION: on customer available performance kernel PANIC: only on not customer available debug kernel PHSS_26798: HANG PANIC Category Tags: defect_repair hardware_enablement enhancement general_release critical panic halts_system corruption Path Name: /hp-ux_patches/s700_800/11.X/PHSS_30597 Symptoms: PHSS_30597: ( SR:8606365686 CR:JAGaf26316 ) Uncorrectable read and write errors when using VxVM-CVM. ( SR:8606365878 CR:JAGaf26508 ) Very long vgchange(1M) activation time after a path failure. ( SR:8606365690 CR:JAGaf26320 ) IO hangs. Driver state as displayed by fcmsutil(1M) remains in AWAITING_FCP_FREEZE. ( SR:8606365691 CR:JAGaf26321 ) FC frames are getting dropped due to HBA sending frames to FC switch without BB_CREDIT. ( SR:8606365692 CR:JAGaf26322 ) LVM failover between FC disks takes around 70sec even with pvtimeout value set to 30. ( SR:8606365701 CR:JAGaf26331 ) System panic due to assertion failure (n > 0) at line 72 in /ux/core/.../misc/subr_libc.c in debug kernel. Can lead to silent corruption in performance kernel ( SR:8606365702 CR:JAGaf26332 ) The fcmsutil(1M) command when run with option force_mode results in "memory fault" core dump. ( SR:8606365703 CR:JAGaf26333 ) Long latencies for reads with large(>=512KB) block sizes. For example: dd if=/dev/rdsk/c*t*d* of=/dev/null bs=1024k count=50 takes longer when compared with dd if=/dev/rdsk/c*t*d* of=/dev/null bs=256k count=200 ( SR:8606365704 CR:JAGaf26334 ) The fcmsutil(1M) command wrongly displays "maximum frame size" as 960 bytes for an HBA with Tachyon XL2 revision 2.3 chip. It should be 2048 bytes. ( SR:8606365707 CR:JAGaf26337 ) The fcmsutil(1M) command wrongly displays a FC initiator in the target device list of the Tachlite card. ( SR:8606365708 CR:JAGaf26338 ) SNIA API: Calls to HBA_GetPortStatistics() return a negative value for the SecondsSinceLastReset attribute. ( SR:8606280151 CR:JAGae44126 ) SNIA API: Excessive PLOGIs observed when HBA_GetFcpTargetMapping()/HBA_GetFcpPersistentBinding() calls are made. ( SR:8606365710 CR:JAGaf26340 ) SNIA API: Calls to HBA_GetAdapterPortAttributes() return an incorrect value for the PortSpeed attribute even when no devices are connected to the port. ( SR:8606365713 CR:JAGaf26343 ) Driver does not take care of an error condition while setting the interrupt attributes. ( SR:8606365716 CR:JAGaf26346 ) SNIA API: When the sense data available on a SCSI check condition is more than the size of the sense buffer passed by the caller, the HBA_SendReportLUNs() does not copy as much sense data as possible in the sense buffer before returning HBA_STATUS_ERROR_MORE_DATA. ( SR:8606316778 CR:JAGae79492 ) PHSS_26798 has errors on the cold install of September 2003 11.00 AR. PHSS_26798: ( SR:8606229756 CR:JAGad98807 ) HBA_SendReadCapacity() returns an invalid error msg (HBA_STATUS_ERROR_MORE_DATA in this case) for a LUN 0 which is valid as per the mapping list returned from a prior call to HBA_GetPersistentBinding()/ HBA_GetFcpTargetMapping(). 227.673.ERROR :MAIN: TEST FUNCTION FAILED: MSQA_SendReadCapacity:Handle=2 Device filename c51t10d0 227.673.ERROR :MAIN: MSQA_SendReadCapacity: HBA status= 7. ( SR:8606221632 CR:JAGad90766 ) If an application that runs periodically stores the port WWN of a port it used during the first run and uses this stored WWN in successive runs, it would be beneficial for such an application to call HBA_GetPortAttributesByWWN() immediately after HBA_OpenAdapter() than to have to go through the call sequence enforced currently by the vendor library which could consume a lot of time if the number of remote ports is high. ( SR:8606265766 CR:JAGae30023 ) In a point to point fabric topology, I/O processes are getting hung. Ioscan shows NO_HW for all devices visible through the affected HBA. This state of HBA continues until the HBA or switch port is reset. Or else, the FC cable from HBA to switch port is disconnected and reconnected. ( SR:8606229941 CR:JAGad98992 ) The driver does not recognize, and rejects, RSCN with N-port page with address format 3 sent by a Brocade switch, i.e. Fabric Address Format RSCN. ( SR:8606220605 CR:JAGad89742 ) On slot 4 of Superdome system, after suspending the TL/XL2 card which was in online state, that PCI bus will not longer be accessible, and subsequent OLAR operation for that slot will give "general error" message. The same problem could happen on other systems (e.g. L-class) after suspending the TL/XL2 card which was in online state. On other systems the problem could also manifest itself as HPMC. ( SR:8606216893 CR:JAGad86057 ) The FM Link-Status Statistics counters look like they are being decremented. ( SR:8606237897 CR:JAGae06940 ) Multi-frame zoning commands sent by the HBA to a McData switch are being rejected by the switch. ( SR:8606245182 CR:JAGae11656 ) The driver uses sub-optimal logic to set the HBA cacheline size. The driver sets HBA cacheline size to 64 only when the HBA uses the XL2 chip and the system cacheline size is neither 32 nor 64. In all other cases it sets the HBA cacheline size to 32. This is sub-optimal, because when the system cacheline size is 64, an XL2 HBA should use an HBA cacheline size of 64. Tachlite HBAs support only a cacheline size of 32. XL2 HBAs support cacheline sizes of 32 or 64. Hence, if the system cacheline size is 64, the XL2 HBA cacheline size should also be 64. The A6795A 2Gb FC HBA uses the XL2 chip. The A5158A 1Gb FC HBA uses the Tachlite chip. This problem was noticed in the code. There are no known symptoms attached to this problem. There should be no physical manifestations, other than a very slight loss of performance for certain configurations. ( SR:8606245186 CR:JAGae11660 ) It is theoretically possible that, under certain situations, a system hang occurs when the user uses the "ctstat" option with tdutil / fcmsutil. ( SR:8606171980 CR:JAGad41243 ) The current tachlite driver will panic if it is run on a system with cacheline size > 64. ( SR:8606253957 CR:JAGae18289 ) A host attached to a target device through a McData ED5000 switch and a Fibre Channel HBA is still able to perform IOs to the target device even after the HBA has been removed from all soft-zones and ioscan has been run. The correct behaviour is that once the HBA has been removed from all soft-zones and ioscan has been run, the host should not be able to perform IOs through that HBA to any FC mass storage target. ( SR:8606261432 CR:JAGae25753 ) Some customers are experiencing problems with non- meaningful Non-Participating error messages logged by the td driver and reported by EMS. An example of one such message is reproduced below. ************************************************ 395837442 Event Time..........: Wed May 8 14:40:44 2002 Severity............: SERIOUS Monitor.............: dm_TL_adapter Event #.............: 23 System..............: [private] Summary: Adapter at hardware path 1/0/8/0/0 : Fibre Channel driver has gone into non-participating mode Description of Error: lbolt value: 9149 The Fibre Channel Driver has gone into non-participating mode Frame Manager Status Register = 0xa002c480 ************************************************ The above message is non-meaningful because, as the FM Status Register indicates, the LSM is still in INITIALIZATION state and has not completed loop initialization. ( SR:8606256538 CR:JAGae20853 ) The Tachyon XL2 rev 2.2 was originally intended to provide support for a frame payload of up to 2048 bytes. However issues with the chip prevented this support from being enabled in the driver. ( SR:8606256545 CR:JAGae20860 ) The Interrupt Delay Timer allows interrupts generated for completion messages to be delayed by a certain amount of time. This is a performance fix. ( SR:8606256546 CR:JAGae20861 ) A number of new statistics were introduced, and captured, in the driver for Auto Speed Negotiation. However, these statistics are not currently reported by tdutil / fcmsutil. ( SR:8606256547 CR:JAGae20862 ) The Tachyon XL2 chip has new registers that were not in the Tachyon Tachlite chip. The meaning of certain register bits in Tachyon XL2 is also different than in Tachyon Tachlite. Hence, tdutil needs to be modified to report new registers and also to report the new meanings of certain bits in registers that also existed in Tachyon Tachlite. ( SR:8606256722 CR:JAGae21037 ) Currently, the driver will send an LS_RJT in response to any ELS frame which it does not fully recognize. PHSS_23996: (1) JAGad49679/8606180458 IOs fail on V-Class using the tachlite Fibre Channel driver, 'td'. A high value of "No resource for IO" statistic is observed when executing the following command fcmsutil devstat (2) JAGad50173/8606180952 While tape backup operation is in progress, if the command "ioscan" is run the backup operation will be aborted. Defect Description: PHSS_30597: ( SR:8606365686 CR:JAGaf26316 ) When a target device returns SCSI Status as "QueueFull" with incorrect FCP_RESID value in the FCP_RSP frame, the Tachlite driver and the FC virtual bus driver return the SCTL_INCOMPLETE status to the SCSI stack. The Tachlite driver and the bus driver interpret that the target has sent the data, but the data is lost in between, as the residue count is set to 0. Therefore, the status is wrongly set to SCTL_INCOMPLETE resulting in read and write errors. Resolution: The code has been modified to ensure that the SCTL_INCOMPLETE status is not returned when the driver receives the QueueFull condition. ( SR:8606365878 CR:JAGaf26508 ) The vgchange(1M) command takes approximately one hour to activate a volume group with 40 PVs when the primary path has failed. Resolution: When the driver detects that the first open to the device takes 90 seconds or exceeds the retry count, the successive opens issued to the same device within the next one second fail without attempting to contact the device. The device opens are attempted again after one second. ( SR: 8606365690 CR: JAGaf26320) The chip will hang and stop mastering every time all the following conditions happen together: 1. The chip's onboard SEST cache is full of SEST entries. (This cache holds 16 exchanges). 2. A FCP_XFER_RDY frame is received. 3. The OX_ID in the FCP_XFER_RDY matches an OX_ID of an exchange in the SEST cache. Resolution: Driver issues a chip reset if the chip does not come out of the frozen state even after 10 seconds after receiving a freeze command. In addition, the driver returns error for implicitly aborted I/Os only after 2*RA_TOV or a PLOGI success. This ensures that SEST entry is not reused in the intermediate time. ( SR:8606365691 CR:JAGaf26321) While testing with EMC Symmetrix 6.0, it was found that the HBA sometimes transmits frames in excess of BB-Credit it had, after the link goes down and comes up. Resolution: After the link goes down and comes up, outbound data frame transmission from the chip is kept disabled until the HBA reaches a valid FC topology. ( SR:8606365692 CR:JAGaf26322) When the link between switch and device fails, the failover time is close to 70 seconds even though the pvtimeout value is 30 seconds. Resolution: This issue is fixed by reducing the time for which IOs are held in the device link down queue. ( SR:8606365701 CR:JAGaf26331 ) When the Fibre Channel switch name server replies with zero length port name for GSPN_ID query, the driver causes assertion failure, in a debug kernel. This can result in silent corruption in a performance kernel. Resolution: The name server can return zero length port name if the device does not register its port name with name server. Changes are made in the driver code to handle this. ( SR:8606365702 CR: JAGaf26332 ) The core dump can happen in cases where vpd_info is not initialized when fcmsutil(1M) makes an ioctl call to the driver. Resolution: All driver internal functions that make an ioctl call for TD_GET_CARD_INFO have been changed to initialize vpd_info before making the call. ( SR:8606365703 CR:JAGaf26333 ) I/Os with large block size (>=512K) take longer time because Tachlite chip's SEST entry has 19 bits for the buffer length field. This results in incorrect length value if the block size exceeds 512KB. The IO eventually succeeds after a long time when the data buffer gets multiple smaller IOVA mappings. Resolution: For IOs with >=512KB block size, the driver is changed to map data IOVAs for data buffers in multiple steps. This ensures that buffer length field in the SEST entry does not overflow. ( SR:8606365704 CR:JAGaf26334 ) Maximum frame size value returned by the driver ioctl call for Tachlite XL2 revision 2.3 chip is not correct. Resolution: The driver ioctl routine call checks for Tachlite chip revision and appropriately returns Maximum frame size value. ( SR:8606365707 CR:JAGaf26337 ) If a FC initiator accepts the PLOGI and PRLI sent by the Tachlite driver, then the Tachlite driver must ignore the FC initiator and remove the internal device thread structure associated with the initiator. However, the Tachlite driver does not perform this action. Therefore, the fcmsutil(1M) command wrongly shows the FC initiator as a target device. Resolution: The driver code has been modified. Therefore, if the PRLI response indicates that the responder is not a target, the device thread allocated for it is freed. ( SR:8606365708 CR:JAGaf26338 ) This is due to the HPUX 11.00 and 11.11 declaration of the tv_sec field in the timeval structure being different. Hence, the typecast from the tv_sec variable to SecondsSinceLastReset value results in a wrong value being assigned. Resolution: The type mismatch is resolved. ( SR:8606280151 CR:JAGae44126 ) SNIA API: When the HBA_GetFcpTargetMapping() or HBA_GetFcpPersistentBinding() function is called, the SNIA API code begins to open and close all FC related device files in the FC card's h/w path in succession even though they may belong to the same target port. If that target port has not previously been opened, driver issues a PLOGI. This causes an excessive number of PLOGIs to be sent out on the wire. Resolution: All LUN 0 device files belonging to the same target port are kept open till all required processing is done in the HBA_GetFcpTargetMapping() function of the SNIA API. This avoids PLOGIs being sent out to the same target port due to active open of other device files, belonging to the same target port, being present. ( SR:8606365710 CR:JAGaf26340 ) SNIA API: Adapter state is not checked before setting the current port speed in the Tachlite vendor library for the HBA_GetAdapterPortAttributes() call. Resolution: The HBA_GetAdapterPortAttributes() function now checks the adapter state before setting the current port speed in the Tachlite vendor library. ( SR:8606365713 CR:JAGaf26343 ) Tachlite does not check the return value of intr_set_attrib() before calling intr_get_attrib(). This can change the CPU assigned for other HBAs sharing the same PCI bus and result in subsequent failure of interrupt migration. Resolution: The driver code has been changed to check for the return value of intr_set_attrib(). ( SR:8606365716 CR:JAGaf26346 ) SNIA API: A sense buffer is passed by the caller in a call to HBA_SendReportLUNs(). When this buffer is smaller than the actual amount of sense data received from the device due to a SCSI check condition, the Tachlite vendor library simply returns HBA_STATUS_ERROR_MORE_DATA status without copying as much data as possible into the existing sense buffer passed. Resolution: Appropriate changes were made to copy as much sense data as possible into the caller provided sense buffer before returning a HBA_STATUS_ERROR_MORE_DATA ( SR:8606316778 CR:JAGae79492 ) Installation of PHSS_26798 fails with an error even when the superseding patch of PHKL_23939 is in the HWE bundle which is being installed. Resolution: The checkinstall script has been modified to verify presence of dependent patch or its superseding patches. PHSS_26798: ( SR:8606229756 CR:JAGad98807 ) HBA_SendReadCapacity() when called with an insufficient buffer size returns HBA_STATUS_ERROR_MORE_DATA without copying any data in the buffer passed by the user. Resolution: Fixed to copy as much data as possible into the buffer passed by the user before returning HBA_STATUS_ERROR_MORE_DATA due to insufficient buffer size. ( SR:8606221632 CR:JAGad90766 ) HBA_GetPortAttributesByWWN() call order sequence needs to be changed to allow it to be called immediately after HBA_OpenAdapter() for the corresponding local port to enhance usability. Resolution: Call order sequence changed. ( SR:8606265766 CR:JAGae30023 ) The problem seem to be that BB_Credit field in the Frame manager register is accidentally overwritten by the driver. This BB_Credit value represents buffer credit given by switch port and is needed by the chip for sending out frames. And as it is being reset to zero, chip is unable to send out any frame. Resolution: The BB_Credit field of FM register is prevented from accidentally being overwritten by the driver. ( SR:8606229941 CR:JAGad98992 ) The cause of the problem is simply that the driver does not currently recognize Fabric Address Format RSCNs. Resolution: Adding parse recognition for Fabric Address Format RSCN in the driver. ( SR:8606220605 CR:JAGad89742 ) Chip reset puts the IMQ producer index address at zero, and the IMQ consumer index at zero. Then updating the consumer index puts it to a non-zero value. Since the consumer index and the producer index do not match, the chip writes the producer index to the address in the reset "IMQ Producer Index Address" register. The value here is zero, so it writes to address zero. The write is probably unsuccessful, so no interrupt is attempted. This explains why a transaction of zero address is generated by the card, which could cause problem in further access to the slot. Resolution: Introduce a new return value for some functions to indicate that suspend processing completed (chip has been reset, interrupt has been disabled). ( SR:8606216893 CR:JAGad86057 ) Driver reserved only 8-bits for reading the Frame Manager Link Status Register counter(s) as well as for keeping the cumulative statistics of each counter. So when the cumulative counter value increased beyond 255 (0xff) then it is found as decreased. Resolution: The driver code is enhanced to keep the cumulative statistics of Frame Manager Link Status Registers counter(s) from 8-bit to 32-bit. So now the maximum value of the statistics counter(s) will be 2^32 - 1 (i.e., 4294967295). ( SR:8606237897 CR:JAGae06940 ) The McData switch is rejecting the multi-frame zoning commands because the HBA is using relative offset when McData switches do not support the use of relative offset for reassembly of payload data. Resolution: The driver has been changed so that it does not set the relative offset of the payload data in the frames sent out through the CT interface. The driver will now depend on the recipient to reassemble the data using the sequence number. This applies only to frames sent out through the CT interface. ( SR:8606245182 CR:JAGae11656 ) The cause of the problem is an improperly structured if-statement in the driver. Resolution: The code has been changed so that when the system cacheline size is 64, an XL2 HBA uses an HBA cacheline size of 64.In all other cases, the HBA will use an HBA cacheline size of 32. ( SR:8606245186 CR:JAGae11660 ) A function in the execution path holds a spinlock for the HBA across a call to another function, which may sleep. Resolution: The code has been changed so that the spinlock is released before the call to the function that may sleep. ( SR:8606171980 CR:JAGad41243 ) The td driver was intended to be able to handle systems with cacheline size > 64 bytes. SEST (which is 64 bytes in size) should not share cachelines and when running on systems with cacheline size > 64 bytes, SEST allocation is scaled up in size and SEST elements skipped so as to use only 1 SEST element per cacheline. Some macro does not handle this SEST scaling issue. Resolution: The macro is modified to scale down the _xid (which is the index into the SEST pool) by TD_SEST_FACTOR() prior to performing the lookup. ( SR:8606253957 CR:JAGae18289 ) When ioscan is performed, the td driver will query the name server on the switch for a list of visible devices which speak FCP. The name server, in turn, will either return FS_ACC which contains a list of all visible N_Ports that speak FCP; or, if there are no N_Ports visible that speak FCP, it will return FS_RJT. The problem occurs because the td driver reacts differently to an FS_ACC than to an FS_RJT. When the td driver receives an FS_ACC, it will report the results to ioscan and update its internal list of visible devices. The td driver uses this internal list of visible devices to control access. It will refuse to open devices which are not on this internal list. When the td driver receives an FS_RJT, it will report to ioscan that its query has failed and ioscan will take this to mean that there are no devices visible. However, the td driver will not update its internal list of visible devices. This means that td driver has a stale list of visible devices. It also means that td driver will still allow I/Os to those devices, even though ioscan shows them as NO_HW, because those devices are still in the internal list, which is now stale. Resolution: The fix modifies the td_driver so that it updates its internal list of visible devices when it receives an FC_RJT with reason code "Unable to perform command request" and explanation code "FC-4 Types not registered" in response to a GID_FT query which it sent to the name server. When the td driver receives such a FC_RJT it will update its internal list such that there are no visible devices other than itself. ( SR:8606261432 CR:JAGae25753 ) This problem occurs because of the way XL2 sets and clears the NP bit in the FM status register, and because the td driver does not check whether the NP bit is relevant (i.e. whether or not the LSM is in MONITORING state and the PSM is OFFLINE) before logging the message. This was not necessary with the Tachlite chip because the NP bit would not be set when the chip is in N_Port mode, while with the XL2 chip's FM module, the NP bit would be set when the chip is in N_Port mode. Resolution: The fix modifies the td driver so that it only logs the NP message when the LSM is in MONITOR and the PSM is in NP_OFFLINE. In all other situations, the NP bit is ignored. ( SR:8606256538 CR:JAGae20853 ) XL2 rev 2.2 would not always work correctly when 2K frame payloads were used. These issues are documented in the XL2 2.2 Errata Revision 1.6 as issues B26 and B28. Since these issues have been fixed in XL2 rev 2.3, 2K frame payload support will be enabled in the driver for HBAs that have XL2 rev 2.3. Resolution: The driver has been modified to enable 2K frame payload sizes to be used when the HBA uses XL2 rev 2.3 chip and when the target device supports 2K frame payload sizes. ( SR:8606256545 CR:JAGae20860 ) When the driver receives an interrupt for a completion message, it will process all the outstanding completion messages, not just the one which generated the interrupt. Hence, if the interrupt for a completion message is delayed and more completion messages arrive in the meantime, this means that the driver will handle more completion messages for that interrupt than it would have otherwise. Thus, permanently delaying interrupts for completion messages can reduce the overall number of interrupts the driver will have to handle. Resolution: It modifies the td driver to take advantage of new performance enhancing features in the XL2 chip. ( SR:8606256546 CR:JAGae20861 ) Statistics not reported by tdutil / fcmsutil are: 1. Number of times Speed Negotiation was started on chip and FM initialization. 2. Number of times Speed Negotiation was started on Link Down. 3. Number of times Speed Negotiation was started on Link Failure. 4. Number of times Speed Negotiation succeeded. 5. Number of times Speed Negotiation failed (ie: timed out) 6. Number of times link quality became bad during Speed Negotiation. Resolution: This fix modifies tdutil / fcmsutil to report new statistics collected by the driver for Auto Speed Negotiation. ( SR:8606256547 CR:JAGae20862 ) The new registers are: Frame Manager Configuration 2 register Frame Manager Configuration 3 register Frame Manager Link Status 3 register XL2 Configuration 2 register The registers that contain bits with changed meanings are: XL2 Configuration 1 register XL2 Control register XL2 Status register FM Conguration 1 register FM Status Register Resolution: A fix was made to modify tdutil / fcmsutil to accurately reflect the registers which are new and different between XL2 and Tachlite. ( SR:8606256722 CR:JAGae21037 ) For interoperability reasons the driver should never send an LS_RJT in response to a FAN, even if it cannot parse it completely. Resolution: This fix modifies the behaviour of the driver so that it will not explicitly reject unrecognized FANs or RSCNs with unrecognized address formats in their N_port ID page(s). PHSS_23996: (1) JAGad49679/8606180458 This problem is due to the way the Tachlite Fibre Channel driver does mapping of DMA buffers. This problem is seen only on V-Class systems due to its unique architecture with EPIC channels. Over a period of time the driver mapping will be scattered into different channels, if these mapping are long term in nature, then any further mapping requests will fail until a channel becomes free from all mapping and gets re-built. Resolution: Fix involves changing the policy specific to V-Class systems, for tachlite Fibre Channel driver mappings and unmappings. The new policy will immediately release the mapping when IO is completed. (2) JAGad50173/8606180952 When an "ioscan" command is run, a SCSI Inquiry command will be issued to all the devices attached. As tape is an untagged device, which can handle only one I/O at a time, the backup operation will be aborted when the inquiry command is issued. Resolution: Two new interface routines "GET_PORT_INFO" and "SET_PORT_INFO" are defined using which the device attributes are obtained before sending the inquiry command. Inquiry will not be sent if the device is open and untagged. NOTE: This fix does not address the one following corner case when an 'overlapped command' condition could still occur: 1) a system is setup and running with a tape device present and configured. 2) the tape device is removed from the system and the system is then rebooted. 3) after the system is up and running, the tape drive is then re-attached to the system at the same I/O path 4) a) if I/O is then active against the device before an "ioscan" is performed. b) after I/O begins and an "ioscan" is issued concurrently, an "overlapped command" condition can occur, depending on the I/O timing, etc. WORKAROUND: To avoid the corner case decribed above, issue an "ioscan" after re-connecting the tape device. Enhancement: No (superseded patches contained enhancements) PHSS_26798: tdutil/fcmsutil reports new statistics. SR: 8606365686 8606365878 8606365690 8606365691 8606365692 8606365701 8606365702 8606365703 8606365704 8606365707 8606365708 8606280151 8606365710 8606365713 8606365716 8606316778 8606180458 8606180952 8606229941 8606220605 8606216893 8606237897 8606245182 8606245186 8606171980 8606253957 8606261432 8606256538 8606256545 8606256546 8606256547 8606256722 8606265766 8606229756 8606221632 Patch Files: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_32, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.08,fa=HP-UX_B.11.00_32, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_32, v=HP: /usr/conf/lib/libtd.a /usr/conf/lib/td_debug.o /usr/conf/master.d/td FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.08,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.07,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.06,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.05,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.04,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.03,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.02,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.01,fa=HP-UX_B.11.00_64, v=HP: /usr/conf/lib/libtd.a /usr/conf/lib/td_debug.o /usr/conf/master.d/td FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.10, fa=HP-UX_B.11.00_32/64,v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.08, fa=HP-UX_B.11.00_32/64,v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.07, fa=HP-UX_B.11.00_32/64,v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.06,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.05,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.04,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.03,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.02,fa=HP-UX_B.11.00_64, v=HP: FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.01,fa=HP-UX_B.11.00_64, v=HP: /opt/fcms/bin/tdutil /etc/rc.config.d/fc_td_conf /sbin/init.d/fc_td /sbin/rc2.d/S989fc_td /usr/share/man/man1m.Z/tdutil.1m /opt/fcms/tools/td.pl /opt/fcms/tools/td_new.pl /opt/fcms/bin/tdlist /opt/fcms/bin/tddiag /opt/fcms/lib/pa20_64/libhbaapihp.sl /opt/fcms/lib/libhbaapihp.sl /opt/snia/lib/libHBAAPI.sl /opt/snia/lib/pa20_64/libHBAAPI.sl /opt/fcms/include/snia_common.h /usr/lib/libHBAAPI.sl /usr/lib/pa20_64/libHBAAPI.sl /usr/lib/libhbaapihp.sl /usr/lib/pa20_64/libhbaapihp.sl /usr/include/snia_common.h /opt/snia/src/makefile.common /opt/snia/src/hbaapilib.c /opt/snia/src/Readme.txt /opt/snia/demos/snia_demo.c /opt/snia/demos/makefile.demo /opt/fcms/config/A5158A /opt/fcms/config/A6684A /opt/fcms/config/A6685A /opt/fcms/config/A6795A /opt/fcms/config/vendor.conf /etc/hba.conf /usr/share/man/man3.Z/hbaapi.3c /usr/share/man/man3.Z/hbaapi_control_fns.3c /usr/share/man/man3.Z/hbaapi_fc3_mgmt_fns.3c /usr/share/man/man3.Z/hbaapi_fcp_info_fns.3c /usr/share/man/man3.Z/hbaapi_general_vendor_fns.3c /usr/share/man/man3.Z/hbaapi_info_fns.3c /usr/share/man/man3.Z/hbaapi_scsi_info_fns.3c /usr/share/man/man3.Z/HBAAPI.3c /usr/share/man/man3.Z/HBA_GetVersion.3c /usr/share/man/man3.Z/HBA_LoadLibrary.3c /usr/share/man/man3.Z/HBA_FreeLibrary.3c /usr/share/man/man3.Z/HBA_GetNumberOfAdapters.3c /usr/share/man/man3.Z/HBA_GetAdapterName.3c /usr/share/man/man3.Z/HBA_OpenAdapter.3c /usr/share/man/man3.Z/HBA_CloseAdapter.3c /usr/share/man/man3.Z/HBA_GetAdapterAttributes.3c /usr/share/man/man3.Z/HBA_GetAdapterPortAttributes.3c /usr/share/man/man3.Z/HBA_GetPortStatistics.3c /usr/share/man/man3.Z/HBA_GetDiscoveredPortAttributes.3c /usr/share/man/man3.Z/HBA_GetPortAttributesByWWN.3c /usr/share/man/man3.Z/HBA_SendCTPassThru.3c /usr/share/man/man3.Z/HBA_GetEventBuffer.3c /usr/share/man/man3.Z/HBA_SetRNIDMgmtInfo.3c /usr/share/man/man3.Z/HBA_GetRNIDMgmtInfo.3c /usr/share/man/man3.Z/HBA_SendRNID.3c /usr/share/man/man3.Z/HBA_GetFcpTargetMapping.3c /usr/share/man/man3.Z/HBA_GetFcpPersistentBinding.3c /usr/share/man/man3.Z/HBA_SendScsiInquiry.3c /usr/share/man/man3.Z/HBA_SendReportLUNs.3c /usr/share/man/man3.Z/HBA_SendReadCapacity.3c /usr/share/man/man3.Z/HBA_RefreshInformation.3c /usr/share/man/man3.Z/HBA_ResetStatistics.3c what(1) Output: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_32, v=HP: /usr/conf/lib/libtd.a: libtd.a HP Fibre Channel Tachyon TL/TS/XL Driver B.1 1.00.10 PHSS_30597 /ux/core/kern/wsio/td_glu e.c: Jul 25 2004, 13:13:30 /usr/conf/lib/td_debug.o: None /usr/conf/master.d/td: None FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_64, v=HP: /usr/conf/lib/libtd.a: libtd.a HP Fibre Channel Tachyon TL/TS/XL Driver B.1 1.00.10 PHSS_30597 /ux/core/kern/wsio/td_glu e.c: Jul 25 2004, 13:14:38 /usr/conf/lib/td_debug.o: None /usr/conf/master.d/td: None FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.10, fa=HP-UX_B.11.00_32/64,v=HP: /opt/fcms/bin/tdutil: tdutil HP Fibre Channel Tachyon TL/TS Driver B.11.00 .10 PHSS_30597 /ux/core/lan/src/LAN/tdutil/t dutil.c: Jun 3 2004, 11:13:21 /etc/rc.config.d/fc_td_conf: None /sbin/init.d/fc_td: None /sbin/rc2.d/S989fc_td: None /usr/share/man/man1m.Z/tdutil.1m: None /opt/fcms/tools/td.pl: td.pl $Revision: 1.6 $ $Date: 2000/06/16 16:51:58 $ /opt/fcms/tools/td_new.pl: $Revision: 1.1 $ $Date: 2000/10/04 11:08:28 $ $Autho r: td_build $'; /opt/fcms/bin/tdlist: $Revision: 1.8 $ $Date: 2000/08/10 10:39:01 $' /opt/fcms/bin/tddiag: $Revision: 1.10 $ $Date: 2001/03/08 11:44:34 $' /opt/fcms/lib/pa20_64/libhbaapihp.sl: HP SNIA HBA API Vendor Library: libhbaapihp.sl Jun 2 2004 18:17:22 /opt/fcms/lib/libhbaapihp.sl: HP SNIA HBA API Vendor Library: libhbaapihp.sl Jun 2 2004 18:17:16 /opt/snia/lib/libHBAAPI.sl: HP SNIA HBA API Common Library Implementation: libHB AAPI.sl Jun 2 2004 18:10:54. This library uses open source code from www.snia.org that is under the SNIA Public License v1.1 available at http://www.snia.org/English/Res ources/Code/OpenSource.html /opt/snia/lib/pa20_64/libHBAAPI.sl: HP SNIA HBA API Common Library Implementation: libHB AAPI.sl Jun 2 2004 18:17:12. This library uses open source code from www.snia.org that is under the SNIA Public License v1.1 available at http://www.snia.org/English/Res ources/Code/OpenSource.html /opt/fcms/include/snia_common.h: None /usr/lib/libHBAAPI.sl: HP SNIA HBA API Common Library Implementation: libHB AAPI.sl Jun 2 2004 18:10:54. This library uses open source code from www.snia.org that is under the SNIA Public License v1.1 available at http://www.snia.org/English/Res ources/Code/OpenSource.html /usr/lib/pa20_64/libHBAAPI.sl: HP SNIA HBA API Common Library Implementation: libHB AAPI.sl Jun 2 2004 18:17:12. This library uses open source code from www.snia.org that is under the SNIA Public License v1.1 available at http://www.snia.org/English/Res ources/Code/OpenSource.html /usr/lib/libhbaapihp.sl: HP SNIA HBA API Vendor Library: libhbaapihp.sl Jun 2 2004 18:17:16 /usr/lib/pa20_64/libhbaapihp.sl: HP SNIA HBA API Vendor Library: libhbaapihp.sl Jun 2 2004 18:17:22 /usr/include/snia_common.h: None /opt/snia/src/makefile.common: None /opt/snia/src/hbaapilib.c: HP SNIA HBA API Common Library This library uses open source code from /opt/snia/src/Readme.txt: None /opt/snia/demos/snia_demo.c: None /opt/snia/demos/makefile.demo: None /opt/fcms/config/A5158A: None /opt/fcms/config/A6684A: None /opt/fcms/config/A6685A: None /opt/fcms/config/A6795A: None /opt/fcms/config/vendor.conf: None /etc/hba.conf: None /usr/share/man/man3.Z/hbaapi.3c: None /usr/share/man/man3.Z/hbaapi_control_fns.3c: None /usr/share/man/man3.Z/hbaapi_fc3_mgmt_fns.3c: None /usr/share/man/man3.Z/hbaapi_fcp_info_fns.3c: None /usr/share/man/man3.Z/hbaapi_general_vendor_fns.3c: None /usr/share/man/man3.Z/hbaapi_info_fns.3c: None /usr/share/man/man3.Z/hbaapi_scsi_info_fns.3c: None /usr/share/man/man3.Z/HBAAPI.3c: None /usr/share/man/man3.Z/HBA_GetVersion.3c: None /usr/share/man/man3.Z/HBA_LoadLibrary.3c: None /usr/share/man/man3.Z/HBA_FreeLibrary.3c: None /usr/share/man/man3.Z/HBA_GetNumberOfAdapters.3c: None /usr/share/man/man3.Z/HBA_GetAdapterName.3c: None /usr/share/man/man3.Z/HBA_OpenAdapter.3c: None /usr/share/man/man3.Z/HBA_CloseAdapter.3c: None /usr/share/man/man3.Z/HBA_GetAdapterAttributes.3c: None /usr/share/man/man3.Z/HBA_GetAdapterPortAttributes.3c: None /usr/share/man/man3.Z/HBA_GetPortStatistics.3c: None /usr/share/man/man3.Z/HBA_GetDiscoveredPortAttributes.3c: None /usr/share/man/man3.Z/HBA_GetPortAttributesByWWN.3c: None /usr/share/man/man3.Z/HBA_SendCTPassThru.3c: None /usr/share/man/man3.Z/HBA_GetEventBuffer.3c: None /usr/share/man/man3.Z/HBA_SetRNIDMgmtInfo.3c: None /usr/share/man/man3.Z/HBA_GetRNIDMgmtInfo.3c: None /usr/share/man/man3.Z/HBA_SendRNID.3c: None /usr/share/man/man3.Z/HBA_GetFcpTargetMapping.3c: None /usr/share/man/man3.Z/HBA_GetFcpPersistentBinding.3c: None /usr/share/man/man3.Z/HBA_SendScsiInquiry.3c: None /usr/share/man/man3.Z/HBA_SendReportLUNs.3c: None /usr/share/man/man3.Z/HBA_SendReadCapacity.3c: None /usr/share/man/man3.Z/HBA_RefreshInformation.3c: None /usr/share/man/man3.Z/HBA_ResetStatistics.3c: None cksum(1) Output: FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_32, v=HP: 1447345296 280608 /usr/conf/lib/libtd.a 2972515923 248956 /usr/conf/lib/td_debug.o 1162358364 3164 /usr/conf/master.d/td FC-TACHYON-TL.FC-TL-KRN,fr=B.11.00.10,fa=HP-UX_B.11.00_64, v=HP: 1433847527 548150 /usr/conf/lib/libtd.a 2406355543 306784 /usr/conf/lib/td_debug.o 1162358364 3164 /usr/conf/master.d/td FC-TACHYON-TL.FC-TL-RUN,fr=B.11.00.10, fa=HP-UX_B.11.00_32/64,v=HP: 236750476 73728 /opt/fcms/bin/tdutil 2477507432 475 /etc/rc.config.d/fc_td_conf 2137508645 2053 /sbin/init.d/fc_td 2137508645 2053 /sbin/rc2.d/S989fc_td 876156072 5179 /usr/share/man/man1m.Z/tdutil.1m 291438436 6649 /opt/fcms/tools/td.pl 1826580376 31462 /opt/fcms/tools/td_new.pl 857108800 4312 /opt/fcms/bin/tdlist 1531911261 11853 /opt/fcms/bin/tddiag 1589502059 51520 /opt/fcms/lib/pa20_64/libhbaapihp.sl 4247027998 49152 /opt/fcms/lib/libhbaapihp.sl 3293388274 45056 /opt/snia/lib/libHBAAPI.sl 3159689988 45280 /opt/snia/lib/pa20_64/libHBAAPI.sl 1808237912 16205 /opt/fcms/include/snia_common.h 3293388274 45056 /usr/lib/libHBAAPI.sl 3159689988 45280 /usr/lib/pa20_64/libHBAAPI.sl 4247027998 49152 /usr/lib/libhbaapihp.sl 1589502059 51520 /usr/lib/pa20_64/libhbaapihp.sl 1808237912 16205 /usr/include/snia_common.h 2479656415 1583 /opt/snia/src/makefile.common 1697247152 249703 /opt/snia/src/hbaapilib.c 1943181904 4928 /opt/snia/src/Readme.txt 2096258072 19780 /opt/snia/demos/snia_demo.c 2881657282 1951 /opt/snia/demos/makefile.demo 2178896072 187 /opt/fcms/config/A5158A 3080703142 187 /opt/fcms/config/A6684A 3080703142 187 /opt/fcms/config/A6685A 2481514630 195 /opt/fcms/config/A6795A 3386705156 13 /opt/fcms/config/vendor.conf 2161002403 399 /etc/hba.conf 2842217375 1783 /usr/share/man/man3.Z/hbaapi.3c 59364457 1321 /usr/share/man/man3.Z/hbaapi_control_fns.3c 1963341603 5170 /usr/share/man/man3.Z/hbaapi_fc3_mgmt_fns.3c 3083424427 3716 /usr/share/man/man3.Z/hbaapi_fcp_info_fns.3c 1862131104 4186 /usr/share/man/man3.Z/ hbaapi_general_vendor_fns.3c 4052451915 5237 /usr/share/man/man3.Z/hbaapi_info_fns.3c 37900860 4067 /usr/share/man/man3.Z/hbaapi_scsi_info_fns.3c 2842217375 1783 /usr/share/man/man3.Z/HBAAPI.3c 1862131104 4186 /usr/share/man/man3.Z/HBA_GetVersion.3c 1862131104 4186 /usr/share/man/man3.Z/HBA_LoadLibrary.3c 1862131104 4186 /usr/share/man/man3.Z/HBA_FreeLibrary.3c 1862131104 4186 /usr/share/man/man3.Z/ HBA_GetNumberOfAdapters.3c 1862131104 4186 /usr/share/man/man3.Z/HBA_GetAdapterName.3c 1862131104 4186 /usr/share/man/man3.Z/HBA_OpenAdapter.3c 1862131104 4186 /usr/share/man/man3.Z/HBA_CloseAdapter.3c 4052451915 5237 /usr/share/man/man3.Z/ HBA_GetAdapterAttributes.3c 4052451915 5237 /usr/share/man/man3.Z/ HBA_GetAdapterPortAttributes.3c 4052451915 5237 /usr/share/man/man3.Z/ HBA_GetPortStatistics.3c 4052451915 5237 /usr/share/man/man3.Z/ HBA_GetDiscoveredPortAttributes.3c 4052451915 5237 /usr/share/man/man3.Z/ HBA_GetPortAttributesByWWN.3c 1963341603 5170 /usr/share/man/man3.Z/HBA_SendCTPassThru.3c 1963341603 5170 /usr/share/man/man3.Z/HBA_GetEventBuffer.3c 1963341603 5170 /usr/share/man/man3.Z/HBA_SetRNIDMgmtInfo.3c 1963341603 5170 /usr/share/man/man3.Z/HBA_GetRNIDMgmtInfo.3c 1963341603 5170 /usr/share/man/man3.Z/HBA_SendRNID.3c 3083424427 3716 /usr/share/man/man3.Z/ HBA_GetFcpTargetMapping.3c 3083424427 3716 /usr/share/man/man3.Z/ HBA_GetFcpPersistentBinding.3c 37900860 4067 /usr/share/man/man3.Z/HBA_SendScsiInquiry.3c 37900860 4067 /usr/share/man/man3.Z/HBA_SendReportLUNs.3c 37900860 4067 /usr/share/man/man3.Z/HBA_SendReadCapacity.3c 59364457 1321 /usr/share/man/man3.Z/ HBA_RefreshInformation.3c 59364457 1321 /usr/share/man/man3.Z/HBA_ResetStatistics.3c Patch Conflicts: None Patch Dependencies: s700: 11.00: PHKL_23939 s800: 11.00: PHKL_23939 Hardware Dependencies: None Other Dependencies: None Supersedes: PHSS_23996 PHSS_26798 Equivalent Patches: None Patch Package Size: 770 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 PHSS_30597 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHSS_30597.depot By default swinstall will archive the original software in /var/adm/sw/save/PHSS_30597. 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 PHSS_30597.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHSS_30597.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHSS_30597.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None