Layer 1 Trace 10G mode (XGMII)

Prev Next

Layer 1 Trace in 10G Mode requires the following command

sudo fnic_test --trace-xgmii

Adding the —help option shows the list of configuration options

fmadio@fmadio200v4-636$ sudo fnic_test --trace-xgmii --help
XGMII 10G Trace Utility

Options:
  --trace-xgmii                : required uses 10G XGMII trace logic
  --port <number>              : outputs trace only for the specified capture port
  --reset                      : resets the trigger conditions
  --disable-data-zero          : disables data compression
  --enable-data-zero           : converts full word data into zero to maximize compression
  --enable-error-halt          : halts the trace on error condition

Example usage:
  step 1) halt on XGMII error condition on port 4
          sudo ./fnic_test --trace-xgmii --port 4 --enable-error-halt --reset

  step 2) Dump the tace buffer
          sudo ./fnic_test --trace-xgmii --port 4
fmadio@fmadio200v4-636:/mnt/store0/develop/fnic_test$

Tracing on XGMII Error Condition

XGMII Error condition means the follow

  • SOF received when in a current packet

  • EOF received when not in a current packet

This enables a small L1 trace of the XGMII data when one of the above conditions is received.

Step 1) Reset tracer

The tracer needs to initialized with compression/zeroing and any halt condition. In the below example it is halting on cap4 XGMII error state (e.g. SOF in packet, or EOF in packet)

sudo fnic_test --trace-xgmii --port 4 --enable-error-halt --reset

Example output shown below

fmadio@fmadio200v4-636:$  sudo fnic_test --trace-xgmii --port 4 --enable-error-halt --reset
enable halt on error
reset tracer
fmadio@fmadio200v4-636:$

This primes and enables the tracer, it will then run in the background

Step 2) Dump the trace

Dumping the trace outputs the current enable / trigger / halt state plus the actual XGMII traffic. Below is an example

sudo fnic_test --trace-xgmii --port 4

Output

fmadio@fmadio200v4-636:$  fnic_test --trace-xgmii --port 4
BR1_P0: STATUS         : 0000000000000003
BR1_P0:     enb             : 1
BR1_P0:     trigger         : 1
BR1_P0:     zero            : 0
BR1_P0:     trigger_override: 0
BR1_P0:     frame_in        : 0
BR1_P0:     error           : 0
BR1_P0: WritePos       : 00000000000003d5
BR1_P0: Cycle Cnt Raw  :      16455696169
BR1_P0: Cycle Cnt BRAM :              980
BR1_P0: SOF  Cnt       :                0
BR1_P0: EOF  Cnt       :                0
BR1_P0: SOF0 Cnt       :                0
BR1_P0: SOF4 Cnt       :                0
BR1_P0: EOF0 Cnt       :                0
BR1_P0: EOF1 Cnt       :                0
BR1_P0: EOF2 Cnt       :                0
BR1_P0: EOF3 Cnt       :                0
BR1_P0: EOF4 Cnt       :                0
BR1_P0: EOF5 Cnt       :                0
BR1_P0: EOF6 Cnt       :                0
BR1_P0: EOF7 Cnt       :                0
BR1_P0 :[00000000:000000d5] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000001:000000d6] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000002:000000d7] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000003:000000d8] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000004:000000d9] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000005:000000da] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000006:000000db] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000007:000000dc] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000008:000000dd] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[00000009:000000de] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[0000000a:000000df] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[0000000b:000000e0] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[0000000c:000000e1] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[0000000d:000000e2] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[0000000e:000000e3] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[0000000f:000000e4] Cnt:16777216 E:0 P:0 ff 0707070707070707
.
.
.
BR1_P0 :[000000f2:000000c7] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000f3:000000c8] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000f4:000000c9] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000f5:000000ca] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000f6:000000cb] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000f7:000000cc] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000f8:000000cd] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000f9:000000ce] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000fa:000000cf] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000fb:000000d0] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000fc:000000d1] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000fd:000000d2] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000fe:000000d3] Cnt:16777216 E:0 P:0 ff 0707070707070707
BR1_P0 :[000000ff:000000d4] Cnt:16777216 E:0 P:0 ff 0707070707070707
0000000000000003
0000000000000003
0000000000000003
0000000000000003
00000000d4000003
0000000000000003
0000000000000003
0000000000000003
fmadio@fmadio200v4-636:$

Using the following to determine

signal

description

enb

indicates the trace logic is currently enabled (and overwriting the buffer)

trigger

trigger has been set

zero

full cycle data words are replaced by 0 to maixmimze compression

trigger_override

internal usage

frame_in

XGMII state machine thinks it inside a packet currently

error

XGMII state machine is in an error state (e.g. SOF when inside a packet)

error_trigger

halt when XGMII state machine thinks its in an error state

FMADIO Packet Capture systems