← Ethernet 상세 목차DUJINLABS.COM

Hardware · Ethernet detailed manual 02 · Linux v6.18.37

2. MDIO Clause 22와 Clause 45 transaction을 raw로 읽는다

MDC/MDIO는 packet data path가 아니라 관리 bus입니다. PHY address, register 또는 MMD address, turnaround, latch-low status와 indirect MMD access를 구분해야 raw 값과 Linux 출력이 맞습니다.

상세 표
2
검증 행
16
절차
4 checkpoints
기준
IEEE 802.3 · phylib/phylink · Linux v6.18.37

CHAPTER 02

2. MDIO Clause 22와 Clause 45 transaction을 raw로 읽는다

MDC/MDIO는 packet data path가 아니라 관리 bus입니다. PHY address, register 또는 MMD address, turnaround, latch-low status와 indirect MMD access를 구분해야 raw 값과 Linux 출력이 맞습니다.

Clause 22

5-bit PHY address와 5-bit register address를 사용합니다. 기본 control/status와 ID, advertisement가 이 공간에 있습니다.

Clause 45

PRTAD와 DEVAD, 16-bit register address를 사용해 PMA/PMD, PCS, AN 같은 MMD를 접근합니다.

C22 MMD indirect

Clause 22 register 13/14를 address/data 단계로 사용합니다. function field를 틀리면 주소가 아니라 데이터가 바뀝니다.

Latch-low

BMSR link와 일부 fault bit는 과거의 low를 보존할 수 있어 두 번 읽어 현재값을 얻습니다. 한 번 읽은 0을 현재 link down으로 단정하지 않습니다.

레지스터와 관측값을 함께 읽는 표

항목소유 블록설정 또는 의미정상 증거실패 해석
BMCR 0Clause 22reset, loopback, speed, AN enable/restartwrite 후 self-clear/상태 변화가 규격대로reserved bit와 speed encoding 오해 주의
BMSR 1Clause 22capability, link, AN complete두 번 읽은 현재 link가 PCS와 일치latch-low를 link flap으로 오판
PHYID1/2Clause 22OUI/model/revisiondriver match table와 일치board address 충돌 또는 잘못된 PHY
ANAR/ANLPAR 4/5Clause 22 AN10/100 ability와 pauselocal/partner 공통 mode 존재advertisement가 비어 AN이 끝나지 않음
MMD control/data 13/14C22 indirectDEVAD, address/data function같은 MMD direct access와 동일값주소 단계 생략 또는 post-increment 오용
MMD 1/3/7 statusC45 PMA/PCS/ANsignal, block lock, AN 상태해당 interface에서 구현된 bit만 사용미구현 MMD의 0xffff를 유효값으로 해석

증상에서 첫 실패 경계를 찾는 표

관측 증상직전 통과 증거우선 확인반증 시험판정
MDC는 보이나 응답 없음controller가 start/op/address를 전송turnaround와 PHY addresslogic analyzer에서 Z0/10 패턴 확인PHY가 TA를 구동하지 않으면 address/reset 경계
값이 매번 바뀜frame 형식 정상MDC 주파수, hold, pull-upMDC를 낮춰 반복 readtiming 개선 시 bus signal integrity
C22는 되고 C45는 실패PHY ID 정상PHY의 C45 지원 방식direct와 C22 indirect를 각각 시도접근 프로토콜 선택 오류
Linux 값과 raw 값 불일치같은 PHY addresslatch-low와 page/MMD selectorpage를 고정하고 연속 두 번 readside effect 또는 bank 상태
두 PHY가 같은 값으로 응답MDC/MDIO 배선 정상strap address 충돌각 PHY reset을 따로 제어해 scan주소 충돌
suspend 후 0xffffresume 전에는 정상MDIO clock/power domainruntime PM을 막고 재현관리 bus 전원 복귀 경계
그림 1. 2. MDIO Clause 22와 Clause 45 transaction을 raw로 읽는다의 실행 순서왼쪽에서 오른쪽으로 실제 소유권과 관찰 지점이 이동합니다.
01 preamble
02 ST/OP
03 PHY address
04 REG 또는 DEVAD
05 turnaround
06 16-bit data
07 latch 규칙 적용

실제 검증 절차

순서실행남길 증거판정 목적
1Clause 22 PHY ID read를 raw bitstream으로 저장합니다.주소와 turnaround가 표시된 decode기본 bus 검증
2BMSR를 연속 두 번 읽어 두 값을 모두 기록합니다.latch-low와 current valuelink 판정 규칙 확인
3같은 C45 register를 direct와 indirect 방식으로 비교합니다.동일한 16-bit 값MMD sequence 검증
4MDC 주파수를 단계별로 바꾸며 error rate를 측정합니다.주파수별 read 실패율timing margin 확인

주의vendor page register와 MMD selector는 공유 상태입니다. 여러 thread나 firmware가 동시에 접근하면 다른 bank를 읽을 수 있으므로 bus lock과 access sequence를 확인합니다.

공개적으로 다시 확인할 수 있는 자료

공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.

Linux phylink

PHY, fixed-link, in-band PCS와 MAC callback의 관계