Unbreak non-H/W VLAN extraction case.
Unlike other GigEs Yukon II always set VLAN bit when it detects VLAN tagged packet regardless of H/W VLAN processing configuration state. So it need to check IFCAP_VLAN_HWTAGGING bit to know whether driver is configured to take advantage of H/W VLAN processing. If H/W VLAN processing was disabled don't adjust received packet length such that subsequent validation logic works for software VLAN processing. Reported by: bms Tested by: bms
This commit is contained in:
parent
d3d029bd62
commit
71e8866707
@ -3029,7 +3029,8 @@ msk_rxeof(struct msk_if_softc *sc_if, uint32_t status, int len)
|
||||
cons = sc_if->msk_cdata.msk_rx_cons;
|
||||
do {
|
||||
rxlen = status >> 16;
|
||||
if ((status & GMR_FS_VLAN) != 0)
|
||||
if ((status & GMR_FS_VLAN) != 0 &&
|
||||
(ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0)
|
||||
rxlen -= ETHER_VLAN_ENCAP_LEN;
|
||||
if (len > sc_if->msk_framesize ||
|
||||
((status & GMR_FS_ANY_ERR) != 0) ||
|
||||
@ -3081,7 +3082,8 @@ msk_jumbo_rxeof(struct msk_if_softc *sc_if, uint32_t status, int len)
|
||||
cons = sc_if->msk_cdata.msk_rx_cons;
|
||||
do {
|
||||
rxlen = status >> 16;
|
||||
if ((status & GMR_FS_VLAN) != 0)
|
||||
if ((status & GMR_FS_VLAN) != 0 &&
|
||||
(ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0)
|
||||
rxlen -= ETHER_VLAN_ENCAP_LEN;
|
||||
if (len > sc_if->msk_framesize ||
|
||||
((status & GMR_FS_ANY_ERR) != 0) ||
|
||||
|
Loading…
x
Reference in New Issue
Block a user