CHAPTER 05
5. SGMII, 1000BASE-X와 XPCS in-band 상태를 구분한다
SerDes link와 copper MDI link는 서로 다른 협상 경계입니다. SGMII control word, 1000BASE-X AN, XPCS block lock, PHY의 copper AN 결과와 MAC이 적용한 mode를 따로 확인합니다.
두 개의 링크
MAC-XPCS-PHY 사이 SerDes와 PHY-RJ45 사이 copper link가 동시에 존재할 수 있습니다. 어느 쪽 down인지 분리합니다.
SGMII control word
PHY가 copper에서 결정한 speed/duplex/link를 MAC 쪽에 전달합니다. 1.25Gbps serial line rate가 곧 1Gbps copper speed라는 뜻은 아닙니다.
1000BASE-X
fiber/SerDes 자체에서 AN을 수행하며 SGMII와 control word 의미가 다릅니다. interface mode를 잘못 선택하면 block lock이 있어도 link가 안 맞습니다.
XPCS
PCS lane의 block lock, fault, AN과 link timer를 관리합니다. external PHY MDIO address와 XPCS MMD access 경로가 다를 수 있습니다.
레지스터와 관측값을 함께 읽는 표
| 항목 | 소유 블록 | 설정 또는 의미 | 정상 증거 | 실패 해석 |
|---|---|---|---|---|
| PMA signal/PLL | SerDes PMA | Tx/Rx ready, PLL/CDR lock | 양 끝에서 안정 | refclock/rate/lane polarity |
| PCS block lock | XPCS | code group 또는 block sync | error 없이 유지 | encoding mode 또는 SI |
| PCS AN control/status | XPCS MMD | restart, enable, complete | 선택한 protocol과 일치 | SGMII/1000BASE-X mode 혼동 |
| in-band link word | PCS | link, speed, duplex, pause | external PHY resolved mode와 일치 | control word 전달/해석 오류 |
| phylink state | Linux phylink | interface, an_enabled, link tuple | PCS와 MAC callback 결과 일치 | firmware managed 속성 오류 |
| MAC interface mode | MAC/SoC glue | SGMII/1000BASE-X/2500BASE-X | line rate와 protocol 일치 | divider/mux 잔존 |
증상에서 첫 실패 경계를 찾는 표
| 관측 증상 | 직전 통과 증거 | 우선 확인 | 반증 시험 | 판정 |
|---|---|---|---|---|
| PMA lock 없음 | rail/refclock 정상 | SerDes rate와 polarity | PRBS/internal loopback | PHY analog/board channel |
| lock 있음, block lock 없음 | PMA CDR lock | encoding과 word alignment | SGMII/BASE-X mode 교체 시험 | PCS protocol 선택 |
| PCS link ON, copper link OFF | SerDes 정상 | external PHY AN/MDI | PHY BMSR와 cable diagnostic | copper 경계 |
| copper link ON, MAC carrier OFF | PHY resolved tuple 정상 | in-band word와 phylink mode | phylink trace와 PCS raw status | PCS-Linux 전달 경계 |
| speed만 잘못 표시 | link bit 정상 | SGMII speed encoding | 10/100/1000 partner별 word capture | control word decode |
| module 교체 후 실패 | 기존 module 정상 | SFP mode, LOS, rate select | module EEPROM와 phylink event 비교 | module/PCS mode 경계 |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | SerDes PMA, PCS와 external PHY status를 같은 시점에 저장합니다. | 세 경계의 link tuple | 어느 링크가 끊겼는지 확정 |
| 2 | interface mode별 line rate와 refclock을 문서와 대조합니다. | clock/rate 표 | mode 선택 검증 |
| 3 | SGMII control word raw 값을 partner speed별로 기록합니다. | speed/duplex/link encoding | PCS decode 검증 |
| 4 | phylink trace에서 PCS state와 mac_link_up 인자를 비교합니다. | raw state와 callback tuple | Linux 전달 경계 확인 |
주의SGMII와 1000BASE-X는 같은 1.25Gbps SerDes를 쓸 수 있지만 협상과 control word 의미가 다릅니다.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.
Linux PHY Abstraction Layer
PHY 장치, MDIO, link 상태와 PHY driver의 공개 Linux 계약
Linux phylink
PHY, fixed-link, in-band PCS와 MAC callback의 관계
Linux Ethernet controller binding
phy-mode, phy-handle, fixed-link와 managed 속성
Linux v6.18.37 phy_device.c
PHY 장치 생성, attach, start/stop과 상태 갱신
Linux v6.18.37 phylink.c
link resolve, MAC config, link up/down 실행 경로
TI DP83867IR/CR datasheet
strap, RGMII/SGMII, extended register, clock, interrupt와 진단 기능
TI DP83867 RGMII timing budget
0.25ns 단계 internal delay와 setup/hold margin 계산 및 측정 절차
Linux DP83867 driver
DT 속성, RGMIIDCTL, FIFO, impedance, interrupt와 downshift 초기화
Linux RTL8211F driver
paged register, RGMII TX/RX delay, ALDPS, CLKOUT, EEE, WOL과 interrupt 처리
Microchip LAN8841 product and datasheet
RGMII, IEEE 1588v2, cable diagnostics와 제조사 데이터시트
Linux LAN8841 driver in micrel.c
KSZ9131 공통 초기화, LAN8841 errata, PTP, interrupt와 cable test 경로