Date: Fri, 1 Aug 2003 10:45:19 -0700 (PDT) From: John Polstra <jdp@polstra.com> To: current@freebsd.org Cc: pmedwards@eircom.net Subject: Re: bge & vlan stranges Message-ID: <200308011745.h71HjJgA071872@strings.polstra.com> In-Reply-To: <20030801173748.04C7343F85@mx1.FreeBSD.org> References: <20030801173748.04C7343F85@mx1.FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In article <20030801173748.04C7343F85@mx1.FreeBSD.org>, Peter Edwards <pmedwards@eircom.net> wrote: > John Polstra <jdp@polstra.com> wrote: > > Peter Edwards <pmedwards@eircom.net> wrote: > > > > CSR_WRITE_4(sc, BGE_RX_MTU, ifp->if_mtu + > > > > ETHER_HDR_LEN + ETHER_CRC_LEN + ETHER_VLAN_ENCAP_LEN); > > > Good guess, but the approved way of doing it is to add this code > > near the point where IFCAP_VLAN_MTU is set: > > > > ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header); > > > > See "sys/dev/fxp/if_fxp.c" for an example that works. > > Sorry for being obtuse, but just to clarify: No, you are right. I didn't read the posting carefully enough. Sorry! > fxp just seems to have an "allow long frames" flag, rather than a "max > frame size" > register in the hardware, so you never seem to have to tell the hardware the max > size of a frame it needs to accept. I assume you mean, that after > setting if_hdrlen, > you still need to write to the PCI register, like this: > CSR_WRITE_4(sc, BGE_RX_MTU, > ifp->if_mtu + ifp->if_hdrlen + ETHER_CRC_LEN); Yes, you probably do have to do that. I think you also have to set if_data.ifi_hdrlen as I said, or the MTU as understood by the rest of the system will come out 4 bytes too short. But I'm just speaking from memory without any actual experiments to back up what I'm saying. :-} Thanks for the correction! John -- John Polstra John D. Polstra & Co., Inc. Seattle, Washington USA "Two buttocks cannot avoid friction." -- Malawi saying
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200308011745.h71HjJgA071872>