26 lines
1.1 KiB
Diff
26 lines
1.1 KiB
Diff
diff --git a/src/netif/ethernet.c b/src/netif/ethernet.c
|
|
index d0d68b3..5ba6d95 100644
|
|
--- a/src/netif/ethernet.c
|
|
+++ b/src/netif/ethernet.c
|
|
@@ -123,7 +123,9 @@ ethernet_input(struct pbuf *p, struct netif *netif)
|
|
goto free_and_return;
|
|
}
|
|
#if GAZELLE_ENABLE
|
|
- if (netif->vlan_enable && !(netif->txol_flags & RTE_ETH_RX_OFFLOAD_VLAN_FILTER) && VLAN_ID(vlan) != netif->vlan_tci) {
|
|
+ /* 1.if vlan mode is not enable, ignore VLAN packets.
|
|
+ 2.if vlan mode is enable, ignore packets not for our VLAN */
|
|
+ if (netif->vlan_enable == false || (netif->vlan_enable && VLAN_ID(vlan) != netif->vlan_tci)) {
|
|
goto free_and_return;
|
|
}
|
|
#endif
|
|
@@ -141,6 +143,9 @@ ethernet_input(struct pbuf *p, struct netif *netif)
|
|
}
|
|
#endif /* defined(LWIP_HOOK_VLAN_CHECK) || defined(ETHARP_VLAN_CHECK) || defined(ETHARP_VLAN_CHECK_FN) */
|
|
type = vlan->tpid;
|
|
+ } else if (netif->vlan_enable && !(netif->txol_flags & RTE_ETH_RX_OFFLOAD_VLAN_STRIP)) {
|
|
+ /* if vlan mode is enable but vlan strip offload is off, ignore packets without vlan info. */
|
|
+ goto free_and_return;
|
|
}
|
|
#endif /* ETHARP_SUPPORT_VLAN */
|
|
|