Date: Mon, 14 Feb 2000 00:26:56 -0500 From: "C. Stephen Gunn" <csg@dustdevil.waterspout.com> To: freebsd-net@freebsd.org Cc: wollman@freebsd.org, wpaul@freebsd.org, mdodd@freebsd.org, csg@waterspout.com Subject: Re: 802.1Q VLANs Message-ID: <20000214002656.A12799@dustdevil.waterspout.com> In-Reply-To: <200002031847.NAA62013@khavrinen.lcs.mit.edu> References: <Pine.OSF.4.21.0002031711230.1338-100000@haddock.euitt.upm.es> <Pine.BSF.4.21.0002031236160.479-100000@sasami.jurai.net> <200002031847.NAA62013@khavrinen.lcs.mit.edu>
index | next in thread | previous in thread | raw e-mail
Oh yeah.. Here's the patch:
Index: if_xl.c
===================================================================
RCS file: /project/cvs/FreeBSD/src/sys/pci/if_xl.c,v
retrieving revision 1.22.2.24
diff -c -r1.22.2.24 if_xl.c
*** if_xl.c 1999/12/17 15:58:13 1.22.2.24
--- if_xl.c 2000/02/10 18:35:19
***************
*** 117,122 ****
--- 117,127 ----
#include <net/bridge.h>
#endif
+ #include "vlan.h"
+ #if NVLAN > 0
+ #include <net/if_vlan_var.h>
+ #endif
+
#include <vm/vm.h> /* for vtophys */
#include <vm/pmap.h> /* for vtophys */
#include <machine/clock.h> /* for DELAY */
***************
*** 1805,1810 ****
--- 1810,1830 ----
if_attach(ifp);
ether_ifattach(ifp);
+ #if NVLAN > 0
+ /*
+ * XXX: If this is a 3C905B card, we program the card to accept
+ * ETHERMTU + ETHER_HDR_LEN +EVL_ENCAPLEN packets. This allows
+ * VLAN interfaces to operate with 1500 byte MTUs.
+ */
+ if (sc->xl_type == XL_TYPE_905B) {
+ XL_SEL_WIN(3);
+ CSR_WRITE_2(sc, XL_W3_MAXPKTSIZE,
+ ETHERMTU + ETHER_HDR_LEN + EVL_ENCAPLEN);
+ printf("xl%d: VLANs Enabled - set MAXPKTSIZE= %d\n",
+ sc->xl_unit, ETHERMTU + ETHER_HDR_LEN + EVL_ENCAPLEN);
+ }
+ #endif /* NVLAN */
+
#if NBPFILTER > 0
bpfattach(ifp, DLT_EN10MB, sizeof(struct ether_header));
#endif
***************
*** 3017,3022 ****
--- 3037,3059 ----
case SIOCGIFADDR:
case SIOCSIFMTU:
error = ether_ioctl(ifp, command, data);
+ #if NVLAN > 0
+ /*
+ * XXX: If this is a 3C905B Card, adjust the onboard MAXPKTSIZE
+ * register to allow (mtu + ETHER_HDR_LEN +EVL_ENCAPLEN) size
+ * frames. The hardware rejects larger frames as giants.
+ * This makes room for VLAN Tags in the ethernet header on
+ * 802.1Q-tagged links.
+ */
+ if ((error == 0) && (sc->xl_type == XL_TYPE_905B)) {
+ XL_SEL_WIN(3);
+ CSR_WRITE_2(sc, XL_W3_MAXPKTSIZE,
+ ifr->ifr_mtu + ETHER_HDR_LEN + EVL_ENCAPLEN);
+ printf("xl%d: VLANs Enabled - changed MAXPKTSIZE= %d\n",
+ sc->xl_unit,
+ ifr->ifr_mtu + ETHER_HDR_LEN + EVL_ENCAPLEN);
+ #endif /* NVLAN */
+ }
break;
case SIOCSIFFLAGS:
XL_SEL_WIN(5);
Index: if_xlreg.h
===================================================================
RCS file: /project/cvs/FreeBSD/src/sys/pci/if_xlreg.h,v
retrieving revision 1.9.2.10
diff -c -r1.9.2.10 if_xlreg.h
*** if_xlreg.h 1999/12/17 15:58:14 1.9.2.10
--- if_xlreg.h 2000/02/10 15:58:09
***************
*** 256,261 ****
--- 256,262 ----
#define XL_W3_FREE_TX 0x0C
#define XL_W3_FREE_RX 0x0A
#define XL_W3_MAC_CTRL 0x06
+ #define XL_W3_MAXPKTSIZE 0x04
#define XL_ICFG_CONNECTOR_MASK 0x00F00000
#define XL_ICFG_CONNECTOR_BITS 20
--
C. Stephen Gunn URL: http://www.waterspout.com/
WaterSpout Communications, Inc. Email: csg@waterspout.com
427 North 6th Street Phone: +1 765.742.6628
Lafayette, IN 47901 Fax: +1 765.742.0646
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000214002656.A12799>
