On Monday 10 April 2006 08:45, David S. Miller wrote: > From: Denis Vlasenko > Date: Mon, 10 Apr 2006 08:28:20 +0300 > > > IOW: shouldn't calls to these functions sit in > > #if defined(CONFIG_VLAN_8021Q) || defined (CONFIG_VLAN_8021Q_MODULE) > > block? For example, typhoon.c: > > > > spin_lock(&tp->state_lock); > > +#if defined(CONFIG_VLAN_8021Q) || defined (CONFIG_VLAN_8021Q_MODULE) > > if(tp->vlgrp != NULL && rx->rxStatus & TYPHOON_RX_VLAN) > > vlan_hwaccel_receive_skb(new_skb, tp->vlgrp, > > ntohl(rx->vlanTag) & 0xffff); > > else > > +#endif > > netif_receive_skb(new_skb); > > spin_unlock(&tp->state_lock); > > > > Same for s2io.c, chelsio/sge.c, etc... > > Very likely yes. tp->vlgrp will never be non-NULL in such situations > so it's not a correctness issue, but rather an optimization :-) Done. Please see attached. Deinline a few functions which produce 150+ bytes of code. They are moved into new file, net/core/dev_vlan.c, which is compiled to nothing if VLAN support is not enabled at all (even as a module). A few drivers which were trying to call vlan routines on non-vlan-enabled kernel are fixed. Compile tested (allyesconfig + "# CONFIG_VLAN_8021Q is not set"). Signed-off-by: Denis Vlasenko -- vda