|
@@ -816,12 +816,29 @@ s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * Store MAC address from RAR0, clear receive address registers, and
|
|
|
+ * clear the multicast table. Also reset num_rar_entries to 128,
|
|
|
+ * since we modify this value when programming the SAN MAC address.
|
|
|
+ */
|
|
|
+ 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);
|
|
|
|
|
|
+ /* Add the SAN MAC address to the RAR only if it's a valid address */
|
|
|
+ if (ixgbe_validate_mac_addr(hw->mac.san_addr) == 0) {
|
|
|
+ hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1,
|
|
|
+ hw->mac.san_addr, 0, IXGBE_RAH_AV);
|
|
|
+
|
|
|
+ /* Reserve the last RAR for the SAN MAC address */
|
|
|
+ hw->mac.num_rar_entries--;
|
|
|
+ }
|
|
|
+
|
|
|
reset_hw_out:
|
|
|
return status;
|
|
|
}
|