Hi,
This is a story from the war-front of how I got
that card to behave properly and to allow full
ethernet sized MTUs for my VLAN channels.
To give the salient details:
Driver has 'static int mtu = 1500;' line, which
variable isn't listed as module parameter (not that
that obvious fix helped - somehow module parameter
for this didn't catch at my modprobes..)
My kludgy solution in the end was just to increase
that statically compiled in value to 1504, which
however made all IP interfaces to show MTU 1504,
which is -- bogus..
A bit better solution (I think) is to set max received
packet size to 1500+14+4 bytes, and not to mess with
externally visible interface MTU size.
Reading 3COM documentation about Wn3_MaxPktSize register
persistance, it seems to need be re-set after every time
the RxReset is issued.
Further reading of 3c905C documentation seems to indicate
that this version of the card (ASICs) will be happy to
accept VLAN-tagged frames even without driver fixes. Only
3c905B (which I have) will need the change (and plain 3c905
doesn't have MaxPktSize register at all).
Perhaps simplest for 3c90* series cards is just define fixed
literal telling that oversize frames are acceptable:
- /* Set the full-duplex bit. */
- outb(((vp->info1 & 0x8000) || vp->full_duplex ? 0x20 : 0) |
- (dev->mtu > 1500 ? 0x40 : 0), ioaddr + Wn3_MAC_Ctrl);
+ /* Set the full-duplex bit, and allowLargePackets bit too! */
+ outb(((vp->info1 & 0x8000) || vp->full_duplex ? 0x20 : 0) |
+ 0x40, ioaddr + Wn3_MAC_Ctrl);
(and similar code at vortex_timer(), look for "> 1500")
If the incoming packet is larger than can fit info buffer,
we get an overflow error.
An yet another alternate is to treat plain "OversizedFrame"
indication as a non-error at packet reception:
if ((rx_status & 0x001f4000) == 0x00104000)
rx_status &= ~0x0010400;
and continue with current processing at boomerang_rx().
At the vortex_rx() this code needs to be a bit different,
likely some code re-arrangements are called for.
/Matti Aarnio <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]