FDDI: defza: Add support for DEC FDDIcontroller 700 TURBOchannel adapter
authorMaciej W. Rozycki <macro@linux-mips.org>
Tue, 9 Oct 2018 22:57:43 +0000 (23:57 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Oct 2018 04:46:06 +0000 (21:46 -0700)
commit61414f5ec9834df8aa4f55c90de16b71a3d6ca8d
tree63fbcf2a6cbe3d285fca8b2e4aa41ef18220cd50
parentdf52eab23d703142c766ac00bdb8db19d71238d0
FDDI: defza: Add support for DEC FDDIcontroller 700 TURBOchannel adapter

Add support for the DEC FDDIcontroller 700 (DEFZA), Digital Equipment
Corporation's first-generation FDDI network interface adapter, made for
TURBOchannel and based on a discrete version of what eventually became
Motorola's widely used CAMEL chipset.

The CAMEL chipset is present for example in the DEC FDDIcontroller
TURBOchannel, EISA and PCI adapters (DEFTA/DEFEA/DEFPA) that we support
with the `defxx' driver, however the host bus interface logic and the
firmware API are different in the DEFZA and hence a separate driver is
required.

There isn't much to say about the driver except that it works, but there
is one peculiarity to mention.  The adapter implements two Tx/Rx queue
pairs.

Of these one pair is the usual network Tx/Rx queue pair, in this case
used by the adapter to exchange frames with the ring, via the RMC (Ring
Memory Controller) chip.  The Tx queue is handled directly by the RMC
chip and resides in onboard packet memory.  The Rx queue is maintained
via DMA in host memory by adapter's firmware copying received data
stored by the RMC in onboard packet memory.

The other pair is used to communicate SMT frames with adapter's
firmware.  Any SMT frame received from the RMC via the Rx queue must be
queued back by the driver to the SMT Rx queue for the firmware to
process.  Similarly the firmware uses the SMT Tx queue to supply the
driver with SMT frames that must be queued back to the Tx queue for the
RMC to send to the ring.

This solution was chosen because the designers ran out of PCB space and
could not squeeze in more logic onto the board that would be required to
handle this SMT frame traffic without the need to involve the driver, as
with the later DEFTA/DEFEA/DEFPA adapters.

Finally the driver does some Frame Control byte decoding, so to avoid
magic numbers some macros are added to <linux/if_fddi.h>.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/00-INDEX
Documentation/networking/defza.txt [new file with mode: 0644]
MAINTAINERS
drivers/net/fddi/Kconfig
drivers/net/fddi/Makefile
drivers/net/fddi/defza.c [new file with mode: 0644]
drivers/net/fddi/defza.h [new file with mode: 0644]
include/uapi/linux/if_fddi.h