162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci==================
462306a36Sopenharmony_ciGeneric HDLC layer
562306a36Sopenharmony_ci==================
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciKrzysztof Halasa <khc@pm.waw.pl>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciGeneric HDLC layer currently supports:
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci1. Frame Relay (ANSI, CCITT, Cisco and no LMI)
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci   - Normal (routed) and Ethernet-bridged (Ethernet device emulation)
1562306a36Sopenharmony_ci     interfaces can share a single PVC.
1662306a36Sopenharmony_ci   - ARP support (no InARP support in the kernel - there is an
1762306a36Sopenharmony_ci     experimental InARP user-space daemon available on:
1862306a36Sopenharmony_ci     http://www.kernel.org/pub/linux/utils/net/hdlc/).
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci2. raw HDLC - either IP (IPv4) interface or Ethernet device emulation
2162306a36Sopenharmony_ci3. Cisco HDLC
2262306a36Sopenharmony_ci4. PPP
2362306a36Sopenharmony_ci5. X.25 (uses X.25 routines).
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciGeneric HDLC is a protocol driver only - it needs a low-level driver
2662306a36Sopenharmony_cifor your particular hardware.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciEthernet device emulation (using HDLC or Frame-Relay PVC) is compatible
2962306a36Sopenharmony_ciwith IEEE 802.1Q (VLANs) and 802.1D (Ethernet bridging).
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciMake sure the hdlc.o and the hardware driver are loaded. It should
3362306a36Sopenharmony_cicreate a number of "hdlc" (hdlc0 etc) network devices, one for each
3462306a36Sopenharmony_ciWAN port. You'll need the "sethdlc" utility, get it from:
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	http://www.kernel.org/pub/linux/utils/net/hdlc/
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciCompile sethdlc.c utility::
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	gcc -O2 -Wall -o sethdlc sethdlc.c
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciMake sure you're using a correct version of sethdlc for your kernel.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciUse sethdlc to set physical interface, clock rate, HDLC mode used,
4562306a36Sopenharmony_ciand add any required PVCs if using Frame Relay.
4662306a36Sopenharmony_ciUsually you want something like::
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci	sethdlc hdlc0 clock int rate 128000
4962306a36Sopenharmony_ci	sethdlc hdlc0 cisco interval 10 timeout 25
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_cior::
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	sethdlc hdlc0 rs232 clock ext
5462306a36Sopenharmony_ci	sethdlc hdlc0 fr lmi ansi
5562306a36Sopenharmony_ci	sethdlc hdlc0 create 99
5662306a36Sopenharmony_ci	ifconfig hdlc0 up
5762306a36Sopenharmony_ci	ifconfig pvc0 localIP pointopoint remoteIP
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciIn Frame Relay mode, ifconfig master hdlc device up (without assigning
6062306a36Sopenharmony_ciany IP address to it) before using pvc devices.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciSetting interface:
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci* v35 | rs232 | x21 | t1 | e1
6662306a36Sopenharmony_ci    - sets physical interface for a given port
6762306a36Sopenharmony_ci      if the card has software-selectable interfaces
6862306a36Sopenharmony_ci  loopback
6962306a36Sopenharmony_ci    - activate hardware loopback (for testing only)
7062306a36Sopenharmony_ci* clock ext
7162306a36Sopenharmony_ci    - both RX clock and TX clock external
7262306a36Sopenharmony_ci* clock int
7362306a36Sopenharmony_ci    - both RX clock and TX clock internal
7462306a36Sopenharmony_ci* clock txint
7562306a36Sopenharmony_ci    - RX clock external, TX clock internal
7662306a36Sopenharmony_ci* clock txfromrx
7762306a36Sopenharmony_ci    - RX clock external, TX clock derived from RX clock
7862306a36Sopenharmony_ci* rate
7962306a36Sopenharmony_ci    - sets clock rate in bps (for "int" or "txint" clock only)
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciSetting protocol:
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci* hdlc - sets raw HDLC (IP-only) mode
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  nrz / nrzi / fm-mark / fm-space / manchester - sets transmission code
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci  no-parity / crc16 / crc16-pr0 (CRC16 with preset zeros) / crc32-itu
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci  crc16-itu (CRC16 with ITU-T polynomial) / crc16-itu-pr0 - sets parity
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci* hdlc-eth - Ethernet device emulation using HDLC. Parity and encoding
9362306a36Sopenharmony_ci  as above.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci* cisco - sets Cisco HDLC mode (IP, IPv6 and IPX supported)
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci  interval - time in seconds between keepalive packets
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci  timeout - time in seconds after last received keepalive packet before
10062306a36Sopenharmony_ci	    we assume the link is down
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci* ppp - sets synchronous PPP mode
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci* x25 - sets X.25 mode
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci* fr - Frame Relay mode
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci  lmi ansi / ccitt / cisco / none - LMI (link management) type
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci  dce - Frame Relay DCE (network) side LMI instead of default DTE (user).
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci  It has nothing to do with clocks!
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci  - t391 - link integrity verification polling timer (in seconds) - user
11562306a36Sopenharmony_ci  - t392 - polling verification timer (in seconds) - network
11662306a36Sopenharmony_ci  - n391 - full status polling counter - user
11762306a36Sopenharmony_ci  - n392 - error threshold - both user and network
11862306a36Sopenharmony_ci  - n393 - monitored events count - both user and network
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciFrame-Relay only:
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci* create n | delete n - adds / deletes PVC interface with DLCI #n.
12362306a36Sopenharmony_ci  Newly created interface will be named pvc0, pvc1 etc.
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci* create ether n | delete ether n - adds a device for Ethernet-bridged
12662306a36Sopenharmony_ci  frames. The device will be named pvceth0, pvceth1 etc.
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ciBoard-specific issues
13262306a36Sopenharmony_ci---------------------
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_cin2.o and c101.o need parameters to work::
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	insmod n2 hw=io,irq,ram,ports[:io,irq,...]
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ciexample::
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci	insmod n2 hw=0x300,10,0xD0000,01
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_cior::
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci	insmod c101 hw=irq,ram[:irq,...]
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ciexample::
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci	insmod c101 hw=9,0xdc000
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciIf built into the kernel, these drivers need kernel (command line) parameters::
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci	n2.hw=io,irq,ram,ports:...
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_cior::
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci	c101.hw=irq,ram:...
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ciIf you have a problem with N2, C101 or PLX200SYN card, you can issue the
16162306a36Sopenharmony_ci"private" command to see port's packet descriptor rings (in kernel logs)::
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci	sethdlc hdlc0 private
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ciThe hardware driver has to be build with #define DEBUG_RINGS.
16662306a36Sopenharmony_ciAttaching this info to bug reports would be helpful. Anyway, let me know
16762306a36Sopenharmony_ciif you have problems using this.
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciFor patches and other info look at:
17062306a36Sopenharmony_ci<http://www.kernel.org/pub/linux/utils/net/hdlc/>.
171