Please ignore my following comment, I didn't see you already have mentioned the VLAN accelaration part…
regarding the last section, I haven't checked 2.6 kernel, but in 2.4 kernel, it does not like that it is always the case you replace net_if_rx() with vlan_hwaccel_rx(), in fact, seems to me only those interfaces support “hardware accelaration” uses the latter.