Networking Interface for Open Programmable Acceleration Engine: Intel FPGA Programmable Acceleration Card D5005
5.3. Tuning Information
sysfs Tree
Before you proceed further, you must install and load the OPAE driver and tools. For more information, refer to the Intel Acceleration Stack Quick Start Guide: Intel FPGA ProgrammableAcceleration Card D5005.
Sysfs entries allow reading or writing to HSSI configuration and status registers (CSR):
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/ The HSSI sysfs tree is as follows:
- qsfp<0/1>
- ctrl HSSI_CTRL_QSFP<0/1> CSR: allows access to control registers
- stat HSSI_STAT_QSFP<0/1> CSR: allows access to status registers
- chan<0/1/2/3>: analog settings of each of the 4 transceiver channels per QSFP interface
- tx_post_tap: Pre-emphasis 1st post-tap magnitude and polarity
- tx_pre_tap: Pre-emphasis 1st pre-tap magnitude and polarity
- tx_vod: TX output differential swing
- tx_comp: TX Compensation
tx_post_tap
- Use tx_post_tap sysfs entry to tune the transmitter pre-emphasis 1st post-tap magnitude and polarity.
- Valid magnitude is between -24 and 24.
Example:
- Change directory to the desired QSFP interface and channel:
$ cd /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/qsfp<0/1>/chan<0/1/2/3> - Read current tx_post_tap setting:
Output: 0$ cat tx_post_tap - Write new tx_post_tap magnitude and polarity, assume it as magnitude of 1 with positive polarity:
$ sudo -- sh -c 'echo +1 > tx_post_tap' - Verify that tx_post_tap:
Output: +1$ cat tx_post_tap
tx_pre_tap
- Use tx_pre_tap sysfs entry to tune the transmitter pre-emphasis 1st pre-tap magnitude and polarity.
- Valid magnitude is between -15 and 15.
tx_vod
- Use tx_vod sysfs entry to tune the transmitter output differential swing.
- Valid output swing level is between 17 (600 mV) and 31 (VCCT or Transmitter Power Supply Voltage)
Example:
- Change directory to the desired QSFP interface and channel:
$ cd /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/qsfp<0/1>/chan<0/1/2/3> - Read current tx_vod setting:
Output: 31$ cat tx_vod - Write new tx_vod output, assume it as 29:
$ sudo -- sh -c 'echo 29 > tx_vod - Verify that tx_vod:
Output: 29$ cat tx_vod
tx_comp
- Use tx_comp sysfs entry to tune the transmitter compensation, which helps reduce the PDN induced ISI jitter when enabled.
- Valid compensation value is either 0 (off) or 1 (on)
- Change directory to the desired QSFP interface and channel:
$ cd /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/qsfp<0/1>/chan<0/1/2/3> - Read current tx_comp setting:
Output: 1$ cat tx_comp - TX compensation is currently enabled, let's turn it off:
$ sudo -- sh -c 'echo 0 > tx_comp - Verify that tx_comp:
Output: 0$ cat tx_comp
Monitor dmesg for Errors
Example: Error in setting the transmitter output differential swing to 100
$ echo 100 > tx_vod
bash: echo: write error: Invalid argument
Check dmesg
$ dmesg
[ 7597.306591] intel-pac-hssi intel-pac-hssi.2.auto: Max VOD is 31 Example: Error in setting a legal tx_vod value
$ echo 31 > tx_vod
bash: echo: write error: Connection timed out
Check dmesg
$ dmesg
[ 7812.184357] intel-pac-hssi intel-pac-hssi.2.auto: timeout, HSSI ack not received
Check if the channel is held in reset
$ cat stat
0x000f000f000f000f
Deaasert the reset
$ echo 0x0 > ctrl
$ cat stat0xf3c0f3c0f3c0f3c0