← Documents Documentation/networking/device_drivers/ethernet/ti/icssg_prueth.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

TI ICSSG PRUETH Ethernet Driver

ICSSG 코어의 PRU·RTU·TX_PRU firmware 구성과 ethtool에서 확인하는 firmware drop·overflow·오류·host packet 통계를 설명합니다.

Source pathDocumentation/networking/device_drivers/ethernet/ti/icssg_prueth.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

icssg_prueth.rst:1-56

ICSSG Ethernet data path는 여섯 개의 실시간 처리 유닛이 나눠 실행하는 firmware에 크게 의존합니다. `ethtool -S` 카운터를 queue overflow, ingress rule, frame 형식, host egress로 묶어 보면 drop 위치를 빠르게 좁힐 수 있습니다.

ICSSG 통계 진단 범주
범주확인 대상
Queue`FW_Q0_OVERFLOW`TX queue 포화
Ingress`FW_INF_*`port/VLAN/source-address rule
Frame`FW_RX_*`CRC, EOF, FIFO
Host`FW_HOST_*`PSI와 host egress queue

카운터 접두사와 주요 원인입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 ==============================================
4 Texas Instruments ICSSG PRUETH ethernet driver
5 ==============================================
6
7 :Version: 1.0
8
9 ICSSG Firmware
10 ==============
11
12 Every ICSSG core has two Programmable Real-Time Unit(PRUs), two auxiliary
13 Real-Time Transfer Unit (RTUs), and two Transmit Real-Time Transfer Units
14 (TX_PRUs). Each one of these runs its own firmware. The firmwares combnined are
15 referred as ICSSG Firmware.
16
17 Firmware Statistics
18 ===================
19
20 The ICSSG firmware maintains certain statistics which are dumped by the driver
21 via ``ethtool -S <interface>``
22
23 These statistics are as follows,
24
25 - ``FW_RTU_PKT_DROP``: Diagnostic error counter which increments when RTU drops a locally injected packet due to port being disabled or rule violation.
26 - ``FW_Q0_OVERFLOW``: TX overflow counter for queue0
27 - ``FW_Q1_OVERFLOW``: TX overflow counter for queue1
28 - ``FW_Q2_OVERFLOW``: TX overflow counter for queue2
29 - ``FW_Q3_OVERFLOW``: TX overflow counter for queue3
30 - ``FW_Q4_OVERFLOW``: TX overflow counter for queue4
31 - ``FW_Q5_OVERFLOW``: TX overflow counter for queue5
32 - ``FW_Q6_OVERFLOW``: TX overflow counter for queue6
33 - ``FW_Q7_OVERFLOW``: TX overflow counter for queue7
34 - ``FW_DROPPED_PKT``: This counter is incremented when a packet is dropped at PRU because of rule violation.
35 - ``FW_RX_ERROR``: Incremented if there was a CRC error or Min/Max frame error at PRU
36 - ``FW_RX_DS_INVALID``: Incremented when RTU detects Data Status invalid condition
37 - ``FW_TX_DROPPED_PACKET``: Counter for packets dropped via TX Port
38 - ``FW_TX_TS_DROPPED_PACKET``: Counter for packets with TS flag dropped via TX Port
39 - ``FW_INF_PORT_DISABLED``: Incremented when RX frame is dropped due to port being disabled
40 - ``FW_INF_SAV``: Incremented when RX frame is dropped due to Source Address violation
41 - ``FW_INF_SA_DL``: Incremented when RX frame is dropped due to Source Address being in the denylist
42 - ``FW_INF_PORT_BLOCKED``: Incremented when RX frame is dropped due to port being blocked and frame being a special frame
43 - ``FW_INF_DROP_TAGGED`` : Incremented when RX frame is dropped for being tagged
44 - ``FW_INF_DROP_PRIOTAGGED``: Incremented when RX frame is dropped for being priority tagged
45 - ``FW_INF_DROP_NOTAG``: Incremented when RX frame is dropped for being untagged
46 - ``FW_INF_DROP_NOTMEMBER``: Incremented when RX frame is dropped for port not being member of VLAN
47 - ``FW_RX_EOF_SHORT_FRMERR``: Incremented if End Of Frame (EOF) task is scheduled without seeing RX_B1
48 - ``FW_RX_B0_DROP_EARLY_EOF``: Incremented when frame is dropped due to Early EOF
49 - ``FW_TX_JUMBO_FRM_CUTOFF``: Incremented when frame is cut off to prevent packet size > 2000 Bytes
50 - ``FW_RX_EXP_FRAG_Q_DROP``: Incremented when express frame is received in the same queue as the previous fragment
51 - ``FW_RX_FIFO_OVERRUN``: RX fifo overrun counter
52 - ``FW_CUT_THR_PKT``: Incremented when a packet is forwarded using Cut-Through forwarding method
53 - ``FW_HOST_RX_PKT_CNT``: Number of valid packets sent by Rx PRU to Host on PSI
54 - ``FW_HOST_TX_PKT_CNT``: Number of valid packets copied by RTU0 to Tx queues
55 - ``FW_HOST_EGRESS_Q_PRE_OVERFLOW``: Host Egress Q (Pre-emptible) Overflow Counter
56 - ``FW_HOST_EGRESS_Q_EXP_OVERFLOW``: Host Egress Q (Pre-emptible) Overflow Counter
57

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

ICSSG firmware 구성

1-16

이 문서는 `GPL-2.0` 라이선스를 따릅니다.

Texas Instruments ICSSG PRUETH Ethernet 드라이버

버전 1.0

ICSSG firmware

각 ICSSG 코어에는 PRU(Programmable Real-Time Unit) 2개, 보조 RTU(Real-Time Transfer Unit) 2개, TX_PRU(Transmit Real-Time Transfer Unit) 2개가 있습니다. 각 유닛은 자체 firmware를 실행하며, 이 firmware 전체를 합쳐 ICSSG firmware라고 부릅니다.

ICSSG firmware 실행 단위
ICSSG corePRU0 / PRU1개별 firmware
ICSSG coreRTU0 / RTU1개별 firmware
ICSSG coreTX_PRU0 / TX_PRU1개별 firmware

코어 안의 실시간 처리 유닛 여섯 개가 각자의 firmware를 실행합니다.

.. SPDX-License-Identifier: GPL-2.0

==============================================
Texas Instruments ICSSG PRUETH ethernet driver
==============================================

:Version: 1.0

ICSSG Firmware
==============

Every ICSSG core has two Programmable Real-Time Unit(PRUs), two auxiliary
Real-Time Transfer Unit (RTUs), and two Transmit Real-Time Transfer Units
(TX_PRUs). Each one of these runs its own firmware. The firmwares combnined are
referred as ICSSG Firmware.

ICSSG firmware 통계

17-56

Firmware 통계

ICSSG firmware는 여러 통계를 유지하고, 드라이버는 `ethtool -S <interface>`를 통해 이를 출력합니다.

ICSSG firmware 카운터
카운터의미
`FW_RTU_PKT_DROP`port 비활성화 또는 rule 위반으로 RTU가 로컬 주입 packet을 drop
`FW_Q0_OVERFLOW`~`FW_Q7_OVERFLOW`queue 0~7의 TX overflow
`FW_DROPPED_PKT`rule 위반으로 PRU에서 packet drop
`FW_RX_ERROR`PRU에서 CRC 또는 최소/최대 frame 오류
`FW_RX_DS_INVALID`RTU가 Data Status invalid 상태 감지
`FW_TX_DROPPED_PACKET`TX port를 통해 drop된 packet
`FW_TX_TS_DROPPED_PACKET`TS flag가 있는 packet이 TX port에서 drop
`FW_INF_PORT_DISABLED`port 비활성화로 RX frame drop
`FW_INF_SAV`Source Address 위반으로 RX frame drop
`FW_INF_SA_DL`Source Address가 denylist에 있어 RX frame drop
`FW_INF_PORT_BLOCKED`port가 차단되고 특수 frame이어서 RX drop
`FW_INF_DROP_TAGGED`tagged frame이어서 RX drop
`FW_INF_DROP_PRIOTAGGED`priority-tagged frame이어서 RX drop
`FW_INF_DROP_NOTAG`untagged frame이어서 RX drop
`FW_INF_DROP_NOTMEMBER`port가 VLAN member가 아니어서 RX drop
`FW_RX_EOF_SHORT_FRMERR``RX_B1`을 보지 못한 채 EOF task가 예약됨
`FW_RX_B0_DROP_EARLY_EOF`Early EOF로 frame drop
`FW_TX_JUMBO_FRM_CUTOFF`packet이 2000바이트를 넘지 않도록 frame을 잘라냄
`FW_RX_EXP_FRAG_Q_DROP`이전 fragment와 같은 queue에서 express frame을 받아 drop
`FW_RX_FIFO_OVERRUN`RX FIFO overrun
`FW_CUT_THR_PKT`Cut-Through 방식으로 전달한 packet
`FW_HOST_RX_PKT_CNT`RX PRU가 PSI를 통해 host에 보낸 정상 packet
`FW_HOST_TX_PKT_CNT`RTU0이 TX queue로 복사한 정상 packet
`FW_HOST_EGRESS_Q_PRE_OVERFLOW`host egress pre-emptible queue overflow
`FW_HOST_EGRESS_Q_EXP_OVERFLOW`host egress express queue overflow

카운터 이름과 증가 조건을 기능별로 정리했습니다.

Firmware Statistics
===================

The ICSSG firmware maintains certain statistics which are dumped by the driver
via ``ethtool -S <interface>``

These statistics are as follows,

 - ``FW_RTU_PKT_DROP``: Diagnostic error counter which increments when RTU drops a locally injected packet due to port being disabled or rule violation.
 - ``FW_Q0_OVERFLOW``: TX overflow counter for queue0
 - ``FW_Q1_OVERFLOW``: TX overflow counter for queue1
 - ``FW_Q2_OVERFLOW``: TX overflow counter for queue2
 - ``FW_Q3_OVERFLOW``: TX overflow counter for queue3
 - ``FW_Q4_OVERFLOW``: TX overflow counter for queue4
 - ``FW_Q5_OVERFLOW``: TX overflow counter for queue5
 - ``FW_Q6_OVERFLOW``: TX overflow counter for queue6
 - ``FW_Q7_OVERFLOW``: TX overflow counter for queue7
 - ``FW_DROPPED_PKT``: This counter is incremented when a packet is dropped at PRU because of rule violation.
 - ``FW_RX_ERROR``: Incremented if there was a CRC error or Min/Max frame error at PRU
 - ``FW_RX_DS_INVALID``: Incremented when RTU detects Data Status invalid condition
 - ``FW_TX_DROPPED_PACKET``: Counter for packets dropped via TX Port
 - ``FW_TX_TS_DROPPED_PACKET``: Counter for packets with TS flag dropped via TX Port
 - ``FW_INF_PORT_DISABLED``: Incremented when RX frame is dropped due to port being disabled
 - ``FW_INF_SAV``: Incremented when RX frame is dropped due to Source Address violation
 - ``FW_INF_SA_DL``: Incremented when RX frame is dropped due to Source Address being in the denylist
 - ``FW_INF_PORT_BLOCKED``: Incremented when RX frame is dropped due to port being blocked and frame being a special frame
 - ``FW_INF_DROP_TAGGED`` : Incremented when RX frame is dropped for being tagged
 - ``FW_INF_DROP_PRIOTAGGED``: Incremented when RX frame is dropped for being priority tagged
 - ``FW_INF_DROP_NOTAG``: Incremented when RX frame is dropped for being untagged
 - ``FW_INF_DROP_NOTMEMBER``: Incremented when RX frame is dropped for port not being member of VLAN
 - ``FW_RX_EOF_SHORT_FRMERR``: Incremented if End Of Frame (EOF) task is scheduled without seeing RX_B1
 - ``FW_RX_B0_DROP_EARLY_EOF``: Incremented when frame is dropped due to Early EOF
 - ``FW_TX_JUMBO_FRM_CUTOFF``: Incremented when frame is cut off to prevent packet size > 2000 Bytes
 - ``FW_RX_EXP_FRAG_Q_DROP``: Incremented when express frame is received in the same queue as the previous fragment
 - ``FW_RX_FIFO_OVERRUN``: RX fifo overrun counter
 - ``FW_CUT_THR_PKT``: Incremented when a packet is forwarded using Cut-Through forwarding method
 - ``FW_HOST_RX_PKT_CNT``: Number of valid packets sent by Rx PRU to Host on PSI
 - ``FW_HOST_TX_PKT_CNT``: Number of valid packets copied by RTU0 to Tx queues
 - ``FW_HOST_EGRESS_Q_PRE_OVERFLOW``: Host Egress Q (Pre-emptible) Overflow Counter
 - ``FW_HOST_EGRESS_Q_EXP_OVERFLOW``: Host Egress Q (Pre-emptible) Overflow Counter