patm(4)
NAME
- patm - device driver for IDT77252 based ATM interfaces (Pro
- Sum and IDT)
SYNOPSIS
device patm
device utopia
device atm
options NATM
options LIBMBPOOL
DESCRIPTION
- The patm device driver supports ATM cards based on the
- IDT77252 chip. It
has been tested with ProSum's ProATM-155 cards and with
- IDT's evaluation
boards. The driver interfaces with the natm(4) framework,
- netgraph(4)
and HARP. It provides only PVC services. Signalling, AT
- MARP, ILMI and
other higher layer protocols are implemented using net
- graph(4) or HARP.
- For configuring the card for IP see natmip(4).
- The driver supports UBR, CBR, VBR and ABR traffic. Support
- ed AALs are:
AAL0 (cell payloads), AAL5 and raw AAL. The driver supports
- opening of
VCI/VPI 0/0 in RX, raw AAL-mode. This VC will receive all
- incoming cells
(even those with non-zero GFC fields and VPI/VCI values out
- side the
allowed range) that are not claimed by other open connec
- tions. This may
be used for monitoring purposes.
- The following sysctls are recognized by the driver addition
- ally to those
handled by utopia(4):
- hw.atm.patmN.istats
- Returns a list of uint32_t statistic counters with
- internal
driver statistics.
- hw.atm.patmN.eeprom
- This is a read-only variable containing the contents
- of the onboard EEPROM device.
- hw.atm.patmN.lbuf_max
- This puts an upper limit on the number of large re
- ceive buffers
the driver will allocate. This is a read-only vari
- able that can
be set via a loader(8) tunable.
- hw.atm.patmN.tx_maxmaps
- This is the upper limit of transmission DMA maps the
- driver will
allocate. This is read-only but may be set via a
- loader(8) tunable.
- hw.atm.patmN.debug
- (Only if debugging enabled.) These are debugging
- flags. See
src/sys/dev/patm/if_patmvar.h for the possible
- flags. This may
be initialized via a loader(8) tunable.
- hw.atm.patmN.regs
- (Only if debugging enabled.) Returns the current
- values of the
card's registers.
- hw.atm.patmN.tsq
- Returns the transmit status queue.
- When loaded, the driver initializes several variables from
- loader(8) tunables:
- hw.patmN.lbuf_max
- This initializes the corresponding sysctl(8) vari
- able and defines
an upper limit on the number of large receive
- buffers (mbuf clusters).
- hw.patmN.tx_maxmaps
- This initializes the corresponding sysctl(8) vari
- able and is the
maximum number of DMA maps for transmission that the
- driver will
allocated.
- hw.patmN.debug
- (Only if debugging enabled.) Initializes the debug
- ging flags.
- The driver supports the media options sdh, noscramb and
- unassigned (see
utopia(4)) when the card is a 155MBit card. Both PMC-Sierra
- S/UNI and
IDT77155 PHY chips are supported for these cards. For
- 25MBit cards the
IDT77105 is supported.
DIAGNOSTICS
- patm1: <NICStAR (77222/77252) ATM adapter> port
- 0xc000-0xc0ff mem 0xf8000000-0xf83fffff,0xf4000000-0xf4000fff irq
- 11 at device 8.0 on pci2
patm1: IDT77252 155MBit interface; idt77252 Rev. G; IDT77155
- PHY
patm1: 128K x 32 SRAM; 4096 connections
SEE ALSO
natm(4), natmip(4), utopia(4)
CAVEATS
- The card fails to generate an interrupt if a cell is re
- ceived in AAL0
mode that has the MSB of the PTI field cleared. Therefore
- cells will be
delivered on the next receive interrupt which can happen ei
- ther when the
receive status queue is full, or a cell with the last bit of
- the PTI set
is received.
- Although the card supports AAL3/4 the driver does not.
- The rate tables used by this driver are not the tables rec
- ommended by IDT
(they are wrong anyway). The driver's tables are slightly
- more aggressive than IDT's. That means, that the actual cell rate can
- be slightly
higher than the specified. This is in contrast to the IDT
- tables where
cell rates 5% less than the allowed one have been observed.
- This can be
changed by changing the program that generates these tables,
- found in
/usr/src/sys/dev/patm/genrtab, and regenerating them.
- The reported media for the 155MBit cards will always be
- OC3/MM, because
there is no (known to me) way to figure out the actual medi
- um. The
medium should really be coded in the EEPROM by the manufac
- turer.
- The Tx cell counter in the utopia statistics is wrong, be
- cause the chip
uses idle cells for spacing and the PHY counts these cells.
- While there
is a configuration option for the chip to switch of these
- cells and,
according to the documentation, this should not influence
- cell spacing,
it does, so the driver lets the chip generate idle cells.
ACKNOWLEDGEMENTS
- Thanks to Christian Bucari from ProSum for lending two of
- these cards to
enable the development of this driver. Thanks also for an
- swering my
questions.
AUTHORS
- Harti Brandt <harti@FreeBSD.org>
- BSD July 15, 2003