Page MenuHomeFreeBSD

D33156.id100255.diff
No OneTemporary

D33156.id100255.diff

diff --git a/sys/dev/e1000/igb_txrx.c b/sys/dev/e1000/igb_txrx.c
--- a/sys/dev/e1000/igb_txrx.c
+++ b/sys/dev/e1000/igb_txrx.c
@@ -438,6 +438,7 @@
uint16_t pkt_info, len, vtag;
uint32_t ptype, staterr;
+ bool vlan = false;
int i, cidx;
bool eop;
@@ -460,12 +461,15 @@
rxd->wb.upper.status_error = 0;
eop = ((staterr & E1000_RXD_STAT_EOP) == E1000_RXD_STAT_EOP);
- if (((sc->hw.mac.type == e1000_i350) ||
- (sc->hw.mac.type == e1000_i354)) &&
- (staterr & E1000_RXDEXT_STATERR_LB))
- vtag = be16toh(rxd->wb.upper.vlan);
- else
- vtag = le16toh(rxd->wb.upper.vlan);
+ if ((staterr & E1000_RXD_STAT_VP) != 0) {
+ vlan = true;
+ if (((sc->hw.mac.type == e1000_i350) ||
+ (sc->hw.mac.type == e1000_i354)) &&
+ (staterr & E1000_RXDEXT_STATERR_LB))
+ vtag = be16toh(rxd->wb.upper.vlan);
+ else
+ vtag = le16toh(rxd->wb.upper.vlan);
+ }
/* Make sure bad packets are discarded */
if (eop && ((staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) != 0)) {
@@ -492,11 +496,10 @@
rxr->rx_packets++;
- if ((scctx->isc_capenable & IFCAP_RXCSUM) != 0)
+ if ((if_getcapenable(ri->iri_ifp) & IFCAP_RXCSUM) != 0)
igb_rx_checksum(staterr, ri, ptype);
- if ((scctx->isc_capenable & IFCAP_VLAN_HWTAGGING) != 0 &&
- (staterr & E1000_RXD_STAT_VP) != 0) {
+ if (vlan) {
ri->iri_vtag = vtag;
ri->iri_flags |= M_VLANTAG;
}

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 5, 2:28 PM (3 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28442705
Default Alt Text
D33156.id100255.diff (1 KB)

Event Timeline