| Generic HDLC layer |
| Krzysztof Halasa <khc@pm.waw.pl> |
| January, 2003 |
| |
| |
| Generic HDLC layer currently supports: |
| - Frame Relay (ANSI, CCITT and no LMI), with ARP support (no InARP). |
| Normal (routed) and Ethernet-bridged (Ethernet device emulation) |
| interfaces can share a single PVC. |
| - raw HDLC - either IP (IPv4) interface or Ethernet device emulation. |
| - Cisco HDLC, |
| - PPP (uses syncppp.c), |
| - X.25 (uses X.25 routines). |
| |
| There are hardware drivers for the following cards: |
| - C101 by Moxa Technologies Co., Ltd. |
| - RISCom/N2 by SDL Communications Inc. |
| - and others, some not in the official kernel. |
| |
| Ethernet device emulation (using HDLC or Frame-Relay PVC) is compatible |
| with IEEE 802.1Q (VLANs) and 802.1D (Ethernet bridging). |
| |
| |
| Make sure the hdlc.o and the hardware driver are loaded. It should |
| create a number of "hdlc" (hdlc0 etc) network devices, one for each |
| WAN port. You'll need the "sethdlc" utility, get it from: |
| http://hq.pm.waw.pl/hdlc/ |
| |
| Compile sethdlc.c utility: |
| gcc -O2 -Wall -o sethdlc sethdlc.c |
| Make sure you're using a correct version of sethdlc for your kernel. |
| |
| Use sethdlc to set physical interface, clock rate, HDLC mode used, |
| and add any required PVCs if using Frame Relay. |
| Usually you want something like: |
| |
| sethdlc hdlc0 clock int rate 128000 |
| sethdlc hdlc0 cisco interval 10 timeout 25 |
| or |
| sethdlc hdlc0 rs232 clock ext |
| sethdlc hdlc0 fr lmi ansi |
| sethdlc hdlc0 create 99 |
| ifconfig hdlc0 up |
| ifconfig pvc0 localIP pointopoint remoteIP |
| |
| In Frame Relay mode, ifconfig master hdlc device up (without assigning |
| any IP address to it) before using pvc devices. |
| |
| |
| Setting interface: |
| |
| * v35 | rs232 | x21 | t1 | e1 - sets physical interface for a given port |
| if the card has software-selectable interfaces |
| loopback - activate hardware loopback (for testing only) |
| * clock ext - external clock (uses DTE RX and TX clock) |
| * clock int - internal clock (provides clock signal on DCE clock output) |
| * clock txint - TX internal, RX external (provides TX clock on DCE output) |
| * clock txfromrx - TX clock derived from RX clock (TX clock on DCE output) |
| * rate - sets clock rate in bps (not required for external clock or |
| for txfromrx) |
| |
| Setting protocol: |
| |
| * hdlc - sets raw HDLC (IP-only) mode |
| nrz / nrzi / fm-mark / fm-space / manchester - sets transmission code |
| no-parity / crc16 / crc16-pr0 (CRC16 with preset zeros) / crc32-itu |
| crc16-itu (CRC16 with ITU-T polynomial) / crc16-itu-pr0 - sets parity |
| |
| * hdlc-eth - Ethernet device emulation using HDLC. Parity and encoding |
| as above. |
| |
| * cisco - sets Cisco HDLC mode (IP, IPv6 and IPX supported) |
| interval - time in seconds between keepalive packets |
| timeout - time in seconds after last received keepalive packet before |
| we assume the link is down |
| |
| * ppp - sets synchronous PPP mode |
| |
| * x25 - sets X.25 mode |
| |
| * fr - Frame Relay mode |
| lmi ansi / ccitt / none - LMI (link management) type |
| dce - Frame Relay DCE (network) side LMI instead of default DTE (user). |
| It has nothing to do with clocks! |
| t391 - link integrity verification polling timer (in seconds) - user |
| t392 - polling verification timer (in seconds) - network |
| n391 - full status polling counter - user |
| n392 - error threshold - both user and network |
| n393 - monitored events count - both user and network |
| |
| Frame-Relay only: |
| * create n | delete n - adds / deletes PVC interface with DLCI #n. |
| Newly created interface will be named pvc0, pvc1 etc. |
| |
| * create ether n | delete ether n - adds a device for Ethernet-bridged |
| frames. The device will be named pvceth0, pvceth1 etc. |
| |
| |
| |
| |
| Board-specific issues |
| --------------------- |
| |
| n2.o and c101.o need parameters to work: |
| |
| insmod n2 hw=io,irq,ram,ports[:io,irq,...] |
| example: |
| insmod n2 hw=0x300,10,0xD0000,01 |
| |
| or |
| insmod c101 hw=irq,ram[:irq,...] |
| example: |
| insmod c101 hw=9,0xdc000 |
| |
| If built into the kernel, these drivers need kernel (command line) parameters: |
| n2.hw=io,irq,ram,ports:... |
| or |
| c101.hw=irq,ram:... |
| |
| |
| |
| If you have a problem with N2 or C101 card, you can issue the "private" |
| command to see port's packet descriptor rings (in kernel logs): |
| |
| sethdlc hdlc0 private |
| |
| The hardware driver has to be build with CONFIG_HDLC_DEBUG_RINGS. |
| Attaching this info to bug reports would be helpful. Anyway, let me know |
| if you have problems using this. |
| |
| For patches and other info look at http://hq.pm.waw.pl/hdlc/ |