A method for verifying the proper communication of data packets from an
initiator device on a PCIe data bus to a target device on the data bus. A
target-specific counter on the initiator is synchronized to an
initiator-specific counter on the target with the same value. The
initiator writes the value of the target-specific counter into the tag
field of the packet header, and also writes an identifier of the
initiator into the header. Then the initiator sends the packet to the
target on the PCIe data bus. Upon receipt of the packet, the target reads
the identifier and checks the value against the appropriate
initiator-specific counter on the target. When the value is not equal to
the initiator-specific counter on the target, then it generates an error
message. An additional memory write with specific data is posted from the
initiator to the target. A memory read is posted of the additional memory
write location from the initiator to the target. The operation of the
initiator is continued when a good status and data matching the
additional write data is returned from the target, and operation is
halted when an error status is returned or data that does not match the
additional write data.