In our journey through the PCI Express (PCIe) Data Link Layer, we’ve explored how Data Link Layer Packets (DLLPs) handle universal, standardized tasks like the Ack/Nak protocol, power management, and flow control. But what if a hardware developer wants to pass custom, proprietary information to a neighboring device without generating heavy Transaction Layer Packets?
Enter the Vendor-Specific DLLP. The PCIe specification intentionally carved out a dedicated DLLP type to allow developers to carry custom, vendor-defined information directly across the local link.
Here is how hardware engineers can utilize this feature to inject custom communication into the Data Link Layer.
The Magic Code: 0011 0000b
When a Data Link Layer receives a packet without physical errors, it checks the 1-byte “Type” field to determine where to route the information internally. The PCIe specification dictates that if this Type field is encoded as 0011 0000b, the hardware must recognize it as a Vendor-Specific DLLP.
Once this code is read, the receiver knows to route the packet to the appropriate internal logic specifically built by the vendor to process this custom information.
The Custom “Payload”: 3 Bytes of Freedom
Like all DLLPs, Vendor-Specific packets are strictly “local traffic” that carry no routing information and are rigidly fixed at 8 bytes in total length. Because of this 8-byte limit, DLLPs never contain a standard data payload. So, where does the developer put their custom information?
The answer lies in the 4-byte DLLP core. Here is how the anatomy of a Vendor-Specific DLLP breaks down:
- Byte 0 (The Identifier): Contains the
0011 0000bDLLP Type field. - Bytes 1, 2, and 3 (The Custom Space): Because the specification only defines the Type field for this packet, these remaining three bytes (24 bits) are left completely undefined by PCIe. This is the developer’s playground. These 24 bits are fully available to carry whatever vendor-defined use cases or metrics the hardware engineer desires.
- Bytes 4 and 5 (The 16-bit CRC): Just because the data is custom doesn’t mean it goes unprotected. A 16-bit Cyclic Redundancy Check (CRC) is calculated across the entire 4-byte core (including the vendor-defined bytes) to protect the packet from transient link errors.
- Framing (Bytes 6 and 7): As with all DLLPs, standard Start (SDP) and End (END) framing symbols or tokens pad the rest of the 8-byte footprint so the physical layer can identify the packet boundaries.
Summary The Vendor-Specific DLLP is a testament to the flexibility of the PCIe architecture. By dedicating the 0011 0000b type field and leaving 24 bits of the packet core completely open, the Data Link Layer allows manufacturers to implement specialized link-to-link communication and proprietary hardware features. Best of all, it achieves this custom communication while maintaining the strict, lightweight, 8-byte efficiency of standard local traffic.
