Solution
There are various SFP+ to Ethernet Transceiver Adapters available in the market with slight differences in their PHY layer. A PHY layer is responsible for translating the signal between host and destination ethernet ports. Because of such slight differences on both ends, not every adapter can work out-of-the-box.
Also, to establish a communication link between ethernet devices running different bitrates, e.g., PXIe-6592R running 10GbE streaming project and the other (PC) ethernet port is 1GbE, auto-negotiation is necessary. The FPGA IP of NI provided streaming projects does not contain auto-negotiation already implemented. Also, some adapter modules support auto-negotiation out-of-the-box, while others need manual configuration to enable it, and many are not capable to perform auto-negotiation at all.
Here are the few troubleshooting steps which can be performed in such a scenario:
- Use an SFP+ direct attach cable (DAC). The direct attach cable does not convert the signals to any different protocol, but cross-connect them (i.e. Tx and Rx lines are crossed). This can quickly verify if the device and code are working correctly.
- Check the specification of the SFP+ to Ethernet Transceiver Adapter. NI recommends getting a generic-type adapter. Few important pieces of information to look at:
- Are you trying to connect between two devices running on different bitrate, e.g., 10GbE with 1GbE? If so, is auto-negotiation supported by the adapter and your code?
- Does the adapter need any additional configuration to establish the compatibility, e.g., bit inversions, serial ID interface, etc.? This may require additional development on top of the shipped streaming projects and also a deeper understanding of the protocol.
- The PC ethernet ports (Intel NIC) can have many different configurations or settings. Attempt to disable all unnecessary settings as the adapter may not support them and can lead to link failure. It is important to understand that the FPGA IP of the NI-provided streaming project implements only the basic/minimum functionality.
Lack of correct auto-negotiation can also be a possible reason for UDP packet loss between source and destination using different bitrates. Using a router in between the host and destination device can improve the situation.