struct e1000_hw *hw = &adapter->hw;
        u32 rar_low, rar_high;
 
-       /* HW expects these in little endian so we reverse the byte order
-        * from network order (big endian) to CPU endian
+       /* HW expects these to be in network order when they are plugged
+        * into the registers which are little endian.  In order to guarantee
+        * that ordering we need to do an leXX_to_cpup here in order to be
+        * ready for the byteswap that occurs with writel
         */
-       rar_low = le32_to_cpup((__be32 *)(addr));
-       rar_high = le16_to_cpup((__be16 *)(addr + 4));
+       rar_low = le32_to_cpup((__le32 *)(addr));
+       rar_high = le16_to_cpup((__le16 *)(addr + 4));
 
        /* Indicate to hardware the Address is Valid. */
        rar_high |= E1000_RAH_AV;