module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 
-/* some defines for controlling descriptor fetches in h/w */
-#define RXDCTL_WTHRESH_DEFAULT 15  /* chip writes back at this many or RXT0 */
-#define RXDCTL_PTHRESH_DEFAULT 0   /* chip considers prefech below
-                                    * this */
-#define RXDCTL_HTHRESH_DEFAULT 0   /* chip will only prefetch if tail
-                                    * is pushed this many descriptors
-                                    * from head */
-
 /**
  * ixgb_init_module - Driver Registration Routine
  *
        struct ixgb_hw *hw = &adapter->hw;
        u32 rctl;
        u32 rxcsum;
-       u32 rxdctl;
 
        /* make sure receives are disabled while setting up the descriptors */
 
        IXGB_WRITE_REG(hw, RDH, 0);
        IXGB_WRITE_REG(hw, RDT, 0);
 
-       /* set up pre-fetching of receive buffers so we get some before we
-        * run out (default hardware behavior is to run out before fetching
-        * more).  This sets up to fetch if HTHRESH rx descriptors are avail
-        * and the descriptors in hw cache are below PTHRESH.  This avoids
-        * the hardware behavior of fetching <=512 descriptors in a single
-        * burst that pre-empts all other activity, usually causing fifo
-        * overflows. */
-       /* use WTHRESH to burst write 16 descriptors or burst when RXT0 */
-       rxdctl = RXDCTL_WTHRESH_DEFAULT << IXGB_RXDCTL_WTHRESH_SHIFT |
-                RXDCTL_HTHRESH_DEFAULT << IXGB_RXDCTL_HTHRESH_SHIFT |
-                RXDCTL_PTHRESH_DEFAULT << IXGB_RXDCTL_PTHRESH_SHIFT;
-       IXGB_WRITE_REG(hw, RXDCTL, rxdctl);
+       /* due to the hardware errata with RXDCTL, we are unable to use any of
+        * the performance enhancing features of it without causing other
+        * subtle bugs, some of the bugs could include receive length
+        * corruption at high data rates (WTHRESH > 0) and/or receive
+        * descriptor ring irregularites (particularly in hardware cache) */
+       IXGB_WRITE_REG(hw, RXDCTL, 0);
 
        /* Enable Receive Checksum Offload for TCP and UDP */
        if (adapter->rx_csum) {