if (adapter->flags & IXGBE_FLAG_FAN_FAIL_CAPABLE)
                mask |= IXGBE_EIMS_GPI_SDP1;
        if (adapter->hw.mac.type == ixgbe_mac_82599EB) {
+               mask |= IXGBE_EIMS_ECC;
                mask |= IXGBE_EIMS_GPI_SDP1;
                mask |= IXGBE_EIMS_GPI_SDP2;
        }
                 * effects of setting this bit are only that SRRCTL must be
                 * fully programmed [0..15]
                 */
-               if (adapter->flags &
-                   (IXGBE_FLAG_RSS_ENABLED | IXGBE_FLAG_VMDQ_ENABLED)) {
-                       rdrxctl = IXGBE_READ_REG(hw, IXGBE_RDRXCTL);
-                       rdrxctl |= IXGBE_RDRXCTL_MVMEN;
-                       IXGBE_WRITE_REG(hw, IXGBE_RDRXCTL, rdrxctl);
-               }
+               rdrxctl = IXGBE_READ_REG(hw, IXGBE_RDRXCTL);
+               rdrxctl |= IXGBE_RDRXCTL_MVMEN;
+               IXGBE_WRITE_REG(hw, IXGBE_RDRXCTL, rdrxctl);
        }
 
        /* Program MRQC for the distribution of queues */
                for (i = 0; i < 10; i++)
                        IXGBE_WRITE_REG(hw, IXGBE_RSSRK(i), seed[i]);
 
-               mrqc = IXGBE_MRQC_RSSEN
+               if (hw->mac.type == ixgbe_mac_82598EB)
+                       mrqc |= IXGBE_MRQC_RSSEN;
                    /* Perform hash on these packet types */
-                      | IXGBE_MRQC_RSS_FIELD_IPV4
-                      | IXGBE_MRQC_RSS_FIELD_IPV4_TCP
-                      | IXGBE_MRQC_RSS_FIELD_IPV4_UDP
-                      | IXGBE_MRQC_RSS_FIELD_IPV6
-                      | IXGBE_MRQC_RSS_FIELD_IPV6_TCP
-                      | IXGBE_MRQC_RSS_FIELD_IPV6_UDP;
-               IXGBE_WRITE_REG(hw, IXGBE_MRQC, mrqc);
-       }
+               mrqc |= IXGBE_MRQC_RSS_FIELD_IPV4
+                     | IXGBE_MRQC_RSS_FIELD_IPV4_TCP
+                     | IXGBE_MRQC_RSS_FIELD_IPV4_UDP
+                     | IXGBE_MRQC_RSS_FIELD_IPV6
+                     | IXGBE_MRQC_RSS_FIELD_IPV6_TCP
+                     | IXGBE_MRQC_RSS_FIELD_IPV6_UDP;
+       }
+       IXGBE_WRITE_REG(hw, IXGBE_MRQC, mrqc);
 
        rxcsum = IXGBE_READ_REG(hw, IXGBE_RXCSUM);