|
@@ -1201,9 +1201,10 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
|
|
hdr_info = le16_to_cpu(ixgbe_get_hdr_info(rx_desc));
|
|
hdr_info = le16_to_cpu(ixgbe_get_hdr_info(rx_desc));
|
|
len = (hdr_info & IXGBE_RXDADV_HDRBUFLEN_MASK) >>
|
|
len = (hdr_info & IXGBE_RXDADV_HDRBUFLEN_MASK) >>
|
|
IXGBE_RXDADV_HDRBUFLEN_SHIFT;
|
|
IXGBE_RXDADV_HDRBUFLEN_SHIFT;
|
|
- if (len > IXGBE_RX_HDR_SIZE)
|
|
|
|
- len = IXGBE_RX_HDR_SIZE;
|
|
|
|
upper_len = le16_to_cpu(rx_desc->wb.upper.length);
|
|
upper_len = le16_to_cpu(rx_desc->wb.upper.length);
|
|
|
|
+ if ((len > IXGBE_RX_HDR_SIZE) ||
|
|
|
|
+ (upper_len && !(hdr_info & IXGBE_RXDADV_SPH)))
|
|
|
|
+ len = IXGBE_RX_HDR_SIZE;
|
|
} else {
|
|
} else {
|
|
len = le16_to_cpu(rx_desc->wb.upper.length);
|
|
len = le16_to_cpu(rx_desc->wb.upper.length);
|
|
}
|
|
}
|