RL(4)

명칭
rl - RealTek 8129/8139 퍼스트 이더넷(ethernet) 디바이스 드라이버

서식
device rl0

해설
rl 드라이버는, RealTek 8129, 8139 퍼스트 이더넷(ethernet) 콘트롤러 칩이 실려 있는, PCI 이더넷(ethernet) 어댑터나 콘트롤러를 서포트하고 있습니다. 이것은, Allied Telesyn AT2550, Genius GF100TXR, NDC Communications NE100TX-E, OvisLink LEF-8129TX, OvisLink LEF-8139TX, Netronix Inc. EA-1210 NetEther 10/100, KTX-9130TX 10/100 Fast Ethernet, Encore ENL832-TX 10/100 M PCI, Longshine LCS-8038TX-R, SMC EZ Card 10/100 PCI 1211-TX 나, 다른 염가의 어댑터를 포함합니다. RealTek 호환이다고 생각되는 MPX5030 (또는 MPX5038)라고 써 있는 칩 하지만 실려 있는 Accton EN1207D 도 서포트하고 있습니다.

RealTek 콘트롤러는 bus master DMA 를 사용합니다만, 디스크립터 베이스 의 데이터 전송 기구는 이용하지 않습니다. 수신측은 하나의 고정 사이즈의 링 버퍼 (을)를 이용해 패킷은 거기로부터 mbuf 에 카피됩니다. 전송을 위해서(때문에), 외부로 향한 패킷 어드레스 레지스터가 4 개만 있습니다만, 외부로 향한 패킷이 모두 인접한 버퍼에 넣어지는 것이 요구됩니다. 게다가 외부로 향한 패킷 버퍼는 longword 에 정렬되고 있을 필요가 있습니다. 아주 없으면, 전송은 실패합니다.

8139 는 특별한 다이렉트 액세스 레지스터에 의해 컨트롤 되는 내부 PHY 를 가지고 있습니다만, 8129 는 MII 버스 경유로 외부 PHY 를 이용하고 있다고 하는 점으로, 8139 로 8129 는 다릅니다. 8139 는 전이중 또는 반이중에 있어서의 10 또는 100Mbps 를 서포트하고 있습니다. 8129 는 적절한 PHY 칩에 의해 정해져 있는 같은 스피드와 모드를 서포트하고 있습니다.

rl 드라이버는 다음과 같은 미디어 타입을 서포트하고 있습니다.

autoselect
    미디어 타입과 옵션의 자동 선택을 사용 가능하게 합니다. 이것은, RealTek 콘트롤러에 붙어 있는 PHY 칩이 NWAY 오토 네고시에이션을 서포트하고 있을 때 마셔 가능합니다. 유저는 /etc/rc.conf 파일에 미디어 옵션을 추가 기입일로, 자동 선택 모드를 수동으로 덧쓰기할 수가 있습니다.

10baseT/UTP
    10Mbps 로 설정합니다. mediaopt 하 full-duplex 또는 half-duplex 모드를 선택하기 위해서 이용할 수가 있습니다.

100baseTX
    100Mbps (퍼스트 이더넷(ethernet))로 설정합니다. mediaopt 하 full-duplex 또는 half-duplex 모드를 선택하기 위해서 이용할 수가 있습니다.

rl 드라이버는 다음과 같은 미디어 옵션을 서포트하고 있습니다.

full-duplex
    전이중으로 설정합니다.

half-duplex
    반이중으로 설정합니다.

어댑터가 서포트하고 있을 때 마셔, 100baseTX 미디어 타입은 유효합니다. 이 디바이스를 한층 더 설정하기 위해서는, ifconfig(8) (을)를 참조해 주세요.

진단

rl%d: couldn't map memory 치명적인 초기화 에러가 일어났습니다.

rl%d: couldn't map interrupt 치명적인 초기화 에러가 일어났습니다.

rl%d: watchdog timeout 디바이스가 네트워크에 응답하지 않게 되었는지, 네트워크의 접속 (케이블)에 문제가 있습니다.

rl%d: no memory for rx list 드라이버가 리시버 링용의 mbuf 의 확보에 실패했습니다.

rl%d: no memory for tx list 패드 버퍼를 확보, 또는 mbuf 최인을 클러스터에 정리할 때, 트랜스미터 링용의 mbuf 의 확보에 실패했습니다.

rl%d: chip is in D3 power state -- setting to D0 전원 관리를 서포트하는 어댑터에게만, 이 메세지가 출 시스템이 있어, 칩 설정전에 이 상태를 해제하지 않는 PCI BIOS 가 있습니다. D3 상태에 대해, 콘트롤러는 PCI 의 설정 모든 것을 잃으므로, BIOS 하지만 그 때에 풀 파워 모드로 설정 다시 하지 않으면, 올바르게 설정하는 것 (은)는 할 수 없습니다. 드라이버는 이 상태를 검출해, 어댑터를 D0 (풀 파워) 상태로 설정 다시 하려고 합니다만, 드라이버를 완전하게 조작할 수 있는 상태로 해 에는 이르지 않을지도 모릅니다. 부트시에 이 메세지가 나타나 드라이버가 네트워크 인터페이스로서 디바이스를 아탓치 하는 것에 실패해 (이)라면, 디바이스를 적절히 설정하기 위해서 2 번째의 warm boot를 실시할 필요가 있습니다.

다른 operating system로부터 warm boot 할 때에만, 이 상태는 일어납니다. FreeBSD 의 부트전에 시스템의 전원을 끄면, 카드가 정상적으로 설정됩니다.

관련 항목
arp(4), netintro(4), ifconfig(8) RealTek 8129 로 8139 의 데이터 쉬트, ftp.realtek.com.tw:/lancard/data sheet.

역사
rl 디바이스 드라이버는 FreeBSD 3.0 에 처음으로 나타났습니다.

저자
rl 드라이버는 Bill Paul <wpaul@ctr.columbia.edu> 하지만 썼습니다.

버그
밖에 나가는 패킷은 longword 에 늘어놓을 필요가 있으므로, 전송 routine (은)는 전송전에, 정렬하고 있지 않는 패킷을 mbuf 클러스터 버퍼에 카피한다 필요가 있습니다. 시스템 개시시에 페이지 경계로부터 시작되는 연속 한 area에 클러스터 버퍼 풀이 확보되고 있다고 하는 사실을, 드라이버는 남용합니다. 클러스터 버퍼는 2048 바이트이므로, 당연히 longword 경계에 정렬하고 있습니다. 드라이버는 아마 이 특성에 의존해야 하는 것이 아닙니다.

RealTek 의 데이터 쉬트의 품질은 특히 빈약합니다. 문법과 스펠은 심하며, 많은 정보, 특히 수신기로서의 처리에 관한 정보가 빠져 있습니다. 매우 중요한 사실로서 칩이 수신 버퍼를 필 한다 (역주: 수신 데이터를 넣는다) 방법에 관해서 기술하고 있지 않다고 하는 일이 있습니다. 프레임이 수신된 것을 알리는 세치기가 일어났을 때에, 드라이버가 이 프레임을 처리하고 있는 동안에, 다음의 프레임이 수신 버퍼에 카피되고 있는 한중간이 될 가능성이 있습니다. 칩이 다음의 프레임의 나머지를 DMA 해 버리기 전에, 드라이버가 최초의 프레임을 처리 끝마쳤다면, 칩 하지만 다음의 프레임의 모든 것을 DMA 하기 전에, 버퍼에 있는 그 프레임 (을)를 드라이버가 처리하려고 할지도 모릅니다.

드라이버는 열매 패킷 데이터의 전에 붙어 있는 헤더중의 프레임장을 조사한다 일로, 불완전한 프레임인지 어떤지를 체크할 수 있습니다. 불완전한 프레임은 0xFFF0 라고 하는 매직장입니다. 드라이버는 이 길이를 발견하면(자), 현재 유효 패킷을 모두 처리 끝마친 것을 알 수가 있습니다. 이 매직치 (와)과 그 중요성에 대해서는, RealTek 의 데이터 쉬트의 어디에도 써 있지 않습니다.