ixgbe: store permanent address before initializing Rx addresses
authorEmil Tantilov <emil.s.tantilov@intel.com>
Sat, 19 Feb 2011 08:43:49 +0000 (08:43 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Thu, 3 Mar 2011 12:22:00 +0000 (04:22 -0800)
We were reading the address after it had been initialized and this results
in the permanent address on the system being changed.  This change corrects
that by storing the address before we re-initialize it.

Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ixgbe/ixgbe_82598.c
drivers/net/ixgbe/ixgbe_82599.c

index 8f5e347ac003434d590f4caf73f992c5a3d36b2a..8f6205ef4a97a69f4c6ba9029b0fc9d264c06a4d 100644 (file)
@@ -831,15 +831,15 @@ mac_reset_top:
                IXGBE_WRITE_REG(hw, IXGBE_AUTOC, hw->mac.orig_autoc);
        }
 
+       /* Store the permanent mac address */
+       hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr);
+
        /*
         * Store MAC address from RAR0, clear receive address registers, and
         * clear the multicast table
         */
        hw->mac.ops.init_rx_addrs(hw);
 
-       /* Store the permanent mac address */
-       hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr);
-
 reset_hw_out:
        if (phy_status)
                status = phy_status;
index 5e2edcd1244db82758dceee0d33a52c282905152..3d40e68b1b892964eada928bc14b63f482b6d9a8 100644 (file)
@@ -965,6 +965,9 @@ mac_reset_top:
                }
        }
 
+       /* Store the permanent mac address */
+       hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr);
+
        /*
         * Store MAC address from RAR0, clear receive address registers, and
         * clear the multicast table.  Also reset num_rar_entries to 128,
@@ -973,9 +976,6 @@ mac_reset_top:
        hw->mac.num_rar_entries = 128;
        hw->mac.ops.init_rx_addrs(hw);
 
-       /* Store the permanent mac address */
-       hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr);
-
        /* Store the permanent SAN mac address */
        hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr);