NAME¶
hatm
—
device driver for Fore/Marconi HE155 and HE622 ATM
interfaces
SYNOPSIS¶
device hatm
device utopia
device atm
options NATM
DESCRIPTION¶
The
hatm
device driver supports the FORE (now
Marconi) HE155 and HE622 ATM interface cards. The driver interfaces with the
natm(4) framework,
netgraph(4) and the HARP ATM stack. It provides
only PVC services. Signalling, ATMARP, ILMI and other higher layer protocols
are implemented using
netgraph(4) or HARP.
For configuring the card for IP see
natmip(4).
The following sysctls are recognized by the driver additionally to those handled
by
utopia(4):
- hw.atm.hatm.natm_traffic
- This is the traffic type to be used for NATM pvc connections. The type of
this variable is integer and it must have one of the values 0 (UBR) or 1
(CBR).
- hw.atm.hatm.natm_pcr
- This is the peak cell rate to be used for NATM CBR connections.
- hw.atm.hatmN.stats
- Contains an array of uint32_t with device
specific statistics.
- hw.atm.hatmN.istats
- Contains an array of uint32_t with
internal driver statistics.
- hw.atm.hatmN.debug
-
(Only if debugging enabled.)
These are the debugging flags. See
src/sys/dev/hatm/if_hatmvar.h for the
possible flags.
- hw.atm.hatmN.tsr
-
(Only if debugging enabled.)
This is an array containing all transmission status registers. For each of
the 4096 possible VCCs there are 15 32-bit registers.
- hw.atm.hatmN.tpd
-
(Only if debugging enabled.)
This is an array containing all on card current transmission packet
descriptors. For each of the 4096 possible VCCs there are 16 32-bit
registers.
- hw.atm.hatmN.mbox
-
(Only if debugging enabled.)
This is an array containing the mbox registers.
- hw.atm.hatmN.cm
-
(Only if debugging enabled.)
This is an array containing all connection memory registers. The first
32-bit integer of this array is the ABR base address.
- hw.atm.hatmN.heregs
-
(Only if debugging enabled.)
This is an array containing all card registers including SUNI and the FLASH
ROM.
- hw.atm.hatmN.lbmem
-
(Only if debugging enabled.)
Returns the contents of the local memory.
The driver supports the media options
sdh
,
noscramb
and
unassigned
(see
utopia(4)).
ENVIRONMENT¶
When attaching to a device the driver checks the kernel environment (see
kenv(1)) to see if the default queues sizes
should be overwritten or not. The following variables are checked and
interpreted as unsigned integer values (in either radix):
- hw.hatmN.rbps0_size
- Size of the small receive buffer pool 0. This pool is used for all except
raw AAL connections. The pool size must be a power of two between 4 and
8192 inclusive. When attaching the driver allocates this number of
mbufs.
- hw.hatmN.rbps0_thresh
- Interrupt threshold for small receive buffer pool 0. When the number of
free buffers in the pool falls below this threshold it generates an
interrupt so that the driver can refill the pool.
- hw.hatmN.rbpl0_thresh
- Size of the large receive buffer pool 0. This pool is used for all except
raw AAL connections. The pool size must be a power of two between 4 and
8192 inclusive. When attaching the driver allocates this number of mbufs
with clusters.
- hw.hatmN.rbpl0_thresh
- Interrupt threshold for large receive buffer pool 0. When the number of
free buffers in the pool falls below this threshold it generates an
interrupt so that the driver can refill the pool.
- hw.hatmN.rbrq0_size
- Size of receive buffer return queue 0. This queue is used to return
buffers filled with received frames to the driver. The size must be a
power of 2 between 1 and 16384 inclusive.
- hw.hatmN.rbrq0_thresh
- Interrupt threshold for receive buffer return queue 0. This threshold
should only be triggered in exceptional cases.
- hw.hatmN.rbrq0_tout
- Interrupt timeout for receive buffer return queue 0. An interrupt is
generated after this time if the queue is not empty. The number is in
internal card ticks.
- hw.hatmN.rbrq0_pcnt
- Packet count threshold for receive buffer return queue 0. An interrupt is
generated if this number of packets is in the queue.
- hw.hatmN.rbps1_size
- Size of the small receive buffer pool 1. This pool is used for all raw AAL
connections. The pool size must be a power of two between 4 and 8192
inclusive. When attaching the driver allocates this number of mbufs.
- hw.hatmN.rbps1_thresh
- Interrupt threshold for small receive buffer pool 1. When the number of
free buffers in the pool falls below this threshold it generates an
interrupt so that the driver can refill the pool.
- hw.hatmN.rbrq1_size
- Size of receive buffer return queue 1. This queue is used to return
buffers filled with received cells to the driver. The size must be a power
of 2 between 1 and 16384 inclusive.
- hw.hatmN.rbrq1_thresh
- Interrupt threshold for receive buffer return queue 1. This threshold
should only be triggered in exceptional cases.
- hw.hatmN.rbrq1_tout
- Interrupt timeout for receive buffer return queue 1. An interrupt is
generated after this time if the queue is not empty. The number is in
internal card ticks.
- hw.hatmN.rbrq1_pcnt
- Packet count threshold for receive buffer return queue 0. An interrupt is
generated if this number of cells is in the queue.
- hw.hatmN.irq0_size
- Size of interrupt queue 0. This must be a number between 1 and 1023
inclusive.
- hw.hatmN.irq0_thresh
- Interrupt retrigger threshold of interrupt queue 0. A new interrupt is
trigger if the queue fill state reaches this threshold and the interrupt
was no served.
- hw.hatmN.tbrq0_size
- Transmit buffer return queue 0 size. This queue is used to feed back empty
buffers of transmitted frames back to the driver. It must be a power of 2
between 1 and 4096 inclusive.
- hw.hatmN.tbrq0_thresh
- Transmit buffer return queue 0 threshold. An interrupt is generated if the
queue fill state reaches this point.
- hw.hatmN.tpdrq_size
- Transmit descriptor ready queue size. This queue is used by the driver to
feed transmit descriptors into the card. The size must be a power of 2
between 1 and 16384 inclusive.
- hw.hatmN.tpdmax
- Maximum number of active TPDs per connection. This controls the maximum
number of outstanding packet chunks per connection and thus the maximum
delay packets can have because of queueing on the adapter. If set to 0, a
connection can eat up all available TPDs.
- hw.hatmN.mbuf_max_pages
- Maximum number of memory pages allocated to small external mbufs. This
must not be zero and not larger than 65536.
DIAGNOSTICS¶
hatm0: <FORE HE> mem 0xd2600000-0xd26fffff irq 9 at device 15.0 on pci2
hatm0: ForeRunnerHE 622, Rev. D, S/N 2949834, MAC=00:20:48:2d:02:ca
SEE ALSO¶
natm(4),
natmip(4),
utopia(4),
ifconfig(8),
route(8)
AUTHORS¶
Harti Brandt
⟨harti@FreeBSD.org⟩
CAVEATS¶
When putting a HE155 into a 64-bit 66MHz PCI slot the machine may hang. This
occurs very early in the POST so that even the display does not turn on. The
HE155 runs only in 33MHz slots (either 32 or 64-bit). HE622 cards work just
fine in 64-bit slots.
The driver may not work with bounce buffer, because of
bus_dmamap_sync(9) missing the
offset and
len arguments the
NetBSD function has.