diff --git a/vmkdrivers/src_9/drivers/net/e1000e/e1000_82571.c b/vmkdrivers/src_9/drivers/net/e1000e/e1000_82571.c index e84d04d32c20c9a860a58187c37819bb1cd32017..7b7b13ab4590e4229f609fe18ff79a32e4def982 100644 --- a/vmkdrivers/src_9/drivers/net/e1000e/e1000_82571.c +++ b/vmkdrivers/src_9/drivers/net/e1000e/e1000_82571.c @@ -1184,6 +1184,16 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw) ew32(CTRL_EXT, reg); } + /* + * Disable IPv6 extension header parsing because some malformed + * IPv6 headers can hang the Rx. + */ + if (hw->mac.type <= e1000_82573) { + reg = er32(RFCTL); + reg |= (E1000_RFCTL_IPV6_EX_DIS | E1000_RFCTL_NEW_IPV6_EXT_DIS); + ew32(RFCTL, reg); + } + /* PCI-Ex Control Registers */ switch (hw->mac.type) {