Subject: FDDI: PC/BIOS and MTU
To: None <firstname.lastname@example.org>
From: Hal Murray <email@example.com>
Date: 05/30/1999 17:11:34
Is anybody using DEFPAs on PCs?
They work on Alphas.
When I tried them on Compaq Deskpros, nothing good happened. I finally
tracked it down to the PCI_COMMAND_MASTER_ENABLE bit not being set
in the main CSR. That's the DMA enable flag. As you can probably
guess, nothing good happens when that's not turned on.
I don't know much about PCs. Who is supposed to turn that bit on?
Is this just a glitch in this BIOS or will most PCs have the same
problem? The PCI section of the F10@powerup setup code recognizes
the card enough to say "FDDI".
I added a couple of lines of code to turn it on. It's working now.
I've noticed another quirk with FDDI.
FDDI is different from most other network technologies in that the
hardware MTU and the MTU adopted by the IETF for IP packets don't
mesh cleanly. RFC 1390 covers this. The IETF rounded down a bit,
leaving some extra room.
Is the value in ifp->if_mtu supposed to represent the hardware limit
or the IP limit?
The current code initializes things to 4470. That works fine as
long as you are talking to another box that does the same thing.
It can be easily fixed by adding "mtu 4352" to the ifconfig command.
(I've been adding it to /etc/ifconfig.fpa0.)
The code says:
#define FDDIIPMTU 4352
#define FDDIMTU 4470
ifp->if_mtu = FDDIMTU;
I suggest that be changed to FDDIIPMTU. That's a step in the right
direction for being squeeky clean and/or maybe helping interoperability.
TCP should do the right thing and select the smallest value when
it opens the connection.
I was worried that UDP wouldn't work with mixed MTUs, but I just
tried it (in both directions) between two machines using different
MTUs. It worked. I assume the input side sets up the hardware to
take the max hardware size and then doesn't complain when it receives
something bigger than it would transmit.