aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgbe/ixgbe_82599.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_82599.c')
-rw-r--r--drivers/net/ixgbe/ixgbe_82599.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/ixgbe/ixgbe_82599.c b/drivers/net/ixgbe/ixgbe_82599.c
index 6bc964fdacbe..eaecf5e595c7 100644
--- a/drivers/net/ixgbe/ixgbe_82599.c
+++ b/drivers/net/ixgbe/ixgbe_82599.c
@@ -816,12 +816,29 @@ s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
816 } 816 }
817 } 817 }
818 818
819 /*
820 * Store MAC address from RAR0, clear receive address registers, and
821 * clear the multicast table. Also reset num_rar_entries to 128,
822 * since we modify this value when programming the SAN MAC address.
823 */
824 hw->mac.num_rar_entries = 128;
825 hw->mac.ops.init_rx_addrs(hw);
826
819 /* Store the permanent mac address */ 827 /* Store the permanent mac address */
820 hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr); 828 hw->mac.ops.get_mac_addr(hw, hw->mac.perm_addr);
821 829
822 /* Store the permanent SAN mac address */ 830 /* Store the permanent SAN mac address */
823 hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr); 831 hw->mac.ops.get_san_mac_addr(hw, hw->mac.san_addr);
824 832
833 /* Add the SAN MAC address to the RAR only if it's a valid address */
834 if (ixgbe_validate_mac_addr(hw->mac.san_addr) == 0) {
835 hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1,
836 hw->mac.san_addr, 0, IXGBE_RAH_AV);
837
838 /* Reserve the last RAR for the SAN MAC address */
839 hw->mac.num_rar_entries--;
840 }
841
825reset_hw_out: 842reset_hw_out:
826 return status; 843 return status;
827} 844}