RDP(4)

명칭
rdp - RealTek RTL 8002 포켓 이더넷(ethernet)를 위한 이서네트(ethernet) 드라이버

서식
device rdp0 at isa? port 0x378 net irq 7 device rdp0 at isa? port 0x378 net irq 7 flags 0x2

해설
rdp 디바이스 드라이버는, 표준 패러렐 포트에 접속된다 RealTek RTL 8002 베이스의 포켓 이더넷(ethernet) 어댑터를 서포트합니다.

이것들 어댑터는 포켓 이더넷(ethernet) 어댑터중에서 염가의 것에 속한다 (이)라고 생각됩니다. RTL 8002 는 그 중심부에서, 표준 패러렐 프린터 어댑터와 통신하도록(듯이) 디자인된 호스트 인터페이스 뿐만이 아니라, BNC 및 UTP (10 Mbit/s) 미디어에의 인터페이스도 포함하는 것입니다. 완전한 이더넷(ethernet) 어댑터로서 움직이기 위해서(때문에)는, 송신 및 수신 패킷 버퍼 (RTL 8002 에서는 16 K x 4)로서 사용되는 외부 RAM 와 할당할 수 있었던 이더넷(ethernet) 하드웨어 주소 (을)를 보관 유지해 구유익의 EEPROM 가 필요합니다. RTL 8002 에서는, EEPROM 는 표준 93C46 시리얼 EEPROM (일반적으로 이것이 선택되는 것 같습니다) 또는 74S288 패러렐 EEPROM 를 사용할 수가 있습니다. 후자의 변종을 움직이기 위해서(때문에)는, 디바이스 배치에 플래그 0x1 가 필요합니다.

표준적인 프린터 어댑터는, 타이밍의 요구 사양에 관해서 대폭적인 격차가 있는 것 같아서, 포켓 이더넷(ethernet) 어댑터와 프린터 인터페이스 (와)과의 사이에 데이터를 교환할 방법이 현재 2 개(살) 존재합니다. 디폴트에서는 RTL 8002 가 서포트하는 가장 고속의 모드입니다. 만약 사용하는 프린터 어댑터가 특히 저속이면 (패킷이 손상되거나 올바르게 패킷이 수신되어 있지 않다 화도인지를 관찰하는 것으로 알 수가 있습니다) rdp 드라이버를 감속시키기 위해서(때문에) 배치 플래그에 0x2 를 세트 할 수가 있습니다. 고속 모드에서는 데이터 전송 속도는 비대칭으로, 송신 쪽이 수신보다 약간 고속 (최대 2 배)입니다. 송신이 150 KB/s 로 수신이 80 KB/s 그렇다고 하는 것이 일반적입니다. 저속 모드에서는 쌍방의 전송 속도는 동일하고, 50KB/s 에서 70KB/s 의 범위가 됩니다만, 물론 경우에 의해 다릅니다.

부트시에 어댑터가 인식되지 않는 경우, bootverbose 플래그 (‘-v’) (을)를 세트 하는 것으로 그 원인을 진단하는 도움이 되겠지요. RTL 8002 어댑터는 ( lpt(4) (와)과는 차이) 프린터 어댑터에 동작하는 세치기를 이용할 수 있는 것을 요구하므로, 이더넷(ethernet) 어댑터가 검출시에 세치기를 표명할 수 없는 경우, rdp 드라이버는 아탓치에 실패합니다.

RTL 8002 는 (하드웨어) 멀티 캐스트를 서포트하지 않습니다.

rdp 드라이버는 극히 초기에 검출되도록(듯이) 하기 위한(해) 플래그를 내부에서 세트 합니다. 이 때문에, 동일한 커널로 rdp 드라이버와 lpt(4) 의 양쪽 모두를 설정하는 것이 가능합니다. 만약 RTL 8002 가 존재하지 않으면 최종적으로 프린터 드라이버가 검출되겠지요.

진단

    rdp0: configured IRQ (7) cannot be asserted by device

프린터 어댑터를 통해 세치기를 아서트 하는 RTL 8002 를, 검출 routine는 찾아낼 수 없었습니다.

    rdp0: failed to find a valid hardware address in EEPROM

EEPROM 안의 하드웨어 주소가 격납되고 있는 표준적인 장소가 존재하지 않는다고 추측되는 경우, rdp 드라이버는 IEEE 의 OUI 에 의한 할당을 바탕으로 올바르다고 생각되는 이더넷(ethernet) 하드웨어 주소를 찾아낼 때까지 (시리얼) EEPROM 전체를 돌아봅니다. 이 진단은 드라이버가 주소를 찾아낼 수가 없었다 일을 나타내고 있습니다. 주: 이것은 어댑터가 74S288 EEPROM (을)를 탑재하고 있는 것에 의한 보기 드문 경우일지도 하지 않기 때문에, ‘flags 0x1’ (을)를 시험해야 합니다.

    rdp0: Device timeout

패킷의 전송 개시 후, 이더넷(ethernet) 어댑터가 전송의 통지 (성공 또는 실패)를 돌려주지 않았습니다. 하드웨어가 움직일 수 없게 되어 버리고 있는 것 같아서 리셋트 하고 있습니다.

관련 항목
lpt(4), ifconfig(8)

저자
이 드라이버는 ReakTek 에 의한 RTL 8002 를 위한 패킷 드라이버와 RealTek 가 제공하고 있어 준 RTL 8012 (RTL 8002 의 후계입니다) 에 관한 몇개의 정보를 바탕으로 Joerg Wunsch 하지만 썼습니다.

버그
물론 많이 있습니다.

rdp 드라이버는 부트시에 하드웨어를 검출할 필요가 있으므로, 그 때에 존재하고 있지 않으면 안됩니다.

RealTek 의 패킷 드라이버가 취급할 수가 있는 8 개의 속도 모드 가운데, 2개(살) 밖에 실장되고 있지 않습니다. 따라서 현재의 저속 모드조차, 하드웨어에 있어 너무 빠른 경우가 있을지도 모릅니다.

이용 가능한 모드를 자동적으로 인식하는 검출 routine안에 DMA 전송 테스트가 존재해야 합니다.

데이터 교환을 위해서(때문에) 표준 프린터 인터페이스를 혹사 하는 것은, 에러가 되기 쉬운 경향에 있습니다. 우발적인 하드웨어의 정지는 그만큼 놀라는 것은 아니고, 타임 아웃 routine가 그러한 상태를 포착해 주겠지요. ping 의 홍수 (flood-pinging)는 이 문제를 일으키는 좋은 예입니다. 같이 BPF 는 물론 서포트되고 있습니다만, 무차별 (promiscuous) 모드를 사용해 혼잡하고 있는 이더넷(ethernet)를 들여다 보려고 하는 것은 나쁜 아이디어입니다.

RTL 8002 는 수신 버퍼 공간이 4 KB 밖에 없기 때문에 (2 x 2 KB 는 송신 버퍼에 사용됩니다), rdp 드라이버를 사용한 머신이 NFS 의 표준적인 블록 사이즈인 8 KB로 고속의 서버를 mount 했을 경우, 큰 패킷이 도착하는 것으로 발생하는, 자주 있는 NFS 의 뎁트 락이 일어날지도 모릅니다. (NFS 는 패킷 전체를 재발송할 수 밖에 할 수 없기 때문에, 같은 패킷이 몇번이나 전송 되게 되겠지요. )

EEPROM 로부터 이더넷(ethernet) 하드웨어 주소를 찾아내는 발견적 수법은 최악입니다만, EEPROM 안의 실제의 장소에 의존하지 않는 유일한 영리하다 일반적인 방법은 없는 것 같습니다. RealTek 에 의한 샘플 드라이버에서는 직접 주소 0 에 정하고 있었습니다. 다른 vender는, 예를 들어 15 와 같은 올바른 이더넷 어드레스와 혼동 해서는 안 되는 쓰레기와 함께 줍고 있었습니다.

후계의 칩인 RTL 8012 를 서포트해야 합니다. 이것은 최근 입수 가능하게 되어, 사용되고 있는 것 같습니다. (RTL 8002 는 벌써 조금 나이를 채택하고 있어, 1992 년 또는 93 년의 것입니다. ) RTL 8012 는 전송을 꽤 고속화할 수가 있을 것이다, 쌍방향의 SPP 또는 EPP 와 같은 진화했다 프린터 어댑터 하드웨어를 서포트하고 있습니다. 또, RTL 8012 는 하드웨어 멀티 캐스트를 서포트하고 있어, 패킷 버퍼 RAM 는 64K x 4 의 address 공간을 취급할 수가 있습니다.

이 드라이버는 스탠드얼론으로 동작하는 것이 아니라, ppc 드라이버의 상위에 위치해야 합니다. 또 loadable module와 하는 것에 의해, 포켓 이더넷(ethernet) 어댑터가 실제로 장착되고 나서 디바이스를 검출할 수 있도록(듯이) 해야 합니다.