cvs commit: src/sys/net if_ethersubr.c

Sam Leffler sam at errno.com
Mon Feb 14 20:05:53 GMT 2005


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.

	Sam



More information about the cvs-src mailing list