cvs commit: src/sys/net if_ethersubr.c
Ruslan Ermilov
ru at freebsd.org
Tue Feb 15 07:53:31 GMT 2005
On Tue, Feb 15, 2005 at 09:42:26AM +0200, Ruslan Ermilov wrote:
> On Mon, Feb 14, 2005 at 12:06:31PM -0800, Sam Leffler wrote:
> > Ruslan Ermilov wrote:
> > >On Mon, Feb 14, 2005 at 11:13:13AM -0800, Sam Leffler wrote:
> > >
> > >>>>This also has the potential to noticeably
> > >>>>affect performance so I think a better solution is needed.
> > >>>
> > >>>Here are my thoughts. On a typical input path, there will be
> > >>>either one or zero mtags, one if driver provided us with the
> > >>>VLAN mtag, so effectively we replaced "ifp->if_nvlans" with
> > >>>"m_tag_first(m) != NULL", and this doesn't look like a huge
> > >>>performance downgrade to me, if at all.
> > >>
> > >>The intent was/is that if_nvlans be the definitive check for whether or
> > >>not one should inspect the tag chain for vlan tags. This effectively
> > >>renders that assumption invalid. I think it would better to discard
> > >>these frames in the driver rather than allocate a tag, pass it up, then
> > >>discard it in ether_demux. I think you could encapsulate the check in
> > >>VLAN_INPUT_TAG.
> > >>
> > >
> > >I said this before: vlan(4) is not the only consumer of VLAN
> > >frames in FreeBSD. VLAN frames are also accepted by ng_vlan(4),
> > >so using the vlan(4)-specific if_nvlans to decide whether we
> > >should accept VLAN frames (in the driver) just isn't appropriate.
> >
> > And when you said this before my reply was: don't penalize non-netgraph
> > use of the system. If netgraph truly needs to violate this underlying
> > assumption of the vlan code then please do it with an ifdef. Otherwise
> > let's find a better solution. And if that's not possible then we should
> > rethink having if_nvlans at all as this change renders it meaningless.
> >
> Netgraph worked before and after this change, because Netgraph
> (ng_ether) processing happens earlier. What this change does
> is to fix a bug where stripped VLAN frames are passed to the
> parent interface when they shouldn't be (i.e., when no vlan(4)
> interfaces are configured on this Ethernet). Given that there
> may be more than just vlan(4) consumers of VLANs in the system,
> if you really think this change pessimizes performance, a better
> solution is needed, but this solution shouldn't hurt Netgraph
> either, and if we used an if_nvlans to indicate whether we
> should accept VLANs, this would break it. I don't know at
> this point what a better solution could be. If you have ideas,
> let's discuss them. So far, the solutions proposed don't seem
> to work well.
>
How about if we mark mbuf as having a VLAN mtag, in VLAN_INPUT_TAG()
macro, with a simple bit flag?
Cheers,
--
Ruslan Ermilov
ru at FreeBSD.org
FreeBSD committer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/cvs-src/attachments/20050215/ae9af291/attachment.bin
More information about the cvs-src
mailing list