← Ethernet 상세 목차

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를 확인합니다.

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

공개되지 않은 제조사 레지스터나 제품별 오프셋은 추측하지 않았습니다. 아래의 제조사 자료, 아키텍처 문서, Linux v6.18.37 원본으로 확인할 수 있는 내용만 다뤘습니다.

Linux phylink

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