The main idea of this patch is reducing an overhead that we have on RX path, when we use vlans.
Basically we have the following code path for input packet:
ixgbe_rx_input() -> ether_input() -> netisr_dispatch() -> ether_nh_input() -> ether_input_internal() -> ether_demux() -> vlan_input() -> ether_input() -> netisr_dispatch() -> ether_nh_input() -> ether_input_internal() -> ether_demux() -> netisr_dispatch() -> ip_input() ...
With this patch it becomes shorter:
ixgbe_rx_input() -> ether_input() -> netisr_dispatch() -> ether_nh_input() -> ether_input_internal() -> ether_demux() -> netisr_dispatch() -> ip_input() ...