浏览代码

ixgbe: store permanent address before initializing Rx addresses

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>
Emil Tantilov 14 年之前
父节点
当前提交
278675d855
共有 2 个文件被更改,包括 6 次插入6 次删除
  1. 3 3
      drivers/net/ixgbe/ixgbe_82598.c
  2. 3 3
      drivers/net/ixgbe/ixgbe_82599.c

+ 3 - 3
drivers/net/ixgbe/ixgbe_82598.c

@@ -831,15 +831,15 @@ mac_reset_top:
 		IXGBE_WRITE_REG(hw, IXGBE_AUTOC, hw->mac.orig_autoc);
 		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
 	 * Store MAC address from RAR0, clear receive address registers, and
 	 * clear the multicast table
 	 * clear the multicast table
 	 */
 	 */
 	hw->mac.ops.init_rx_addrs(hw);
 	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:
 reset_hw_out:
 	if (phy_status)
 	if (phy_status)
 		status = phy_status;
 		status = phy_status;

+ 3 - 3
drivers/net/ixgbe/ixgbe_82599.c

@@ -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
 	 * Store MAC address from RAR0, clear receive address registers, and
 	 * clear the multicast table.  Also reset num_rar_entries to 128,
 	 * 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.num_rar_entries = 128;
 	hw->mac.ops.init_rx_addrs(hw);
 	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 */
 	/* Store the permanent SAN mac address */
 	hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr);
 	hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr);