diff options
-rw-r--r-- | drivers/net/igb/e1000_82575.c | 39 | ||||
-rw-r--r-- | drivers/net/igb/e1000_mac.c | 25 | ||||
-rw-r--r-- | drivers/net/igb/e1000_mac.h | 1 |
3 files changed, 30 insertions, 35 deletions
diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/igb/e1000_82575.c index 5d2c2fbf926b..95360dc4a566 100644 --- a/drivers/net/igb/e1000_82575.c +++ b/drivers/net/igb/e1000_82575.c | |||
@@ -765,39 +765,6 @@ static s32 igb_get_pcs_speed_and_duplex_82575(struct e1000_hw *hw, u16 *speed, | |||
765 | } | 765 | } |
766 | 766 | ||
767 | /** | 767 | /** |
768 | * igb_init_rx_addrs_82575 - Initialize receive address's | ||
769 | * @hw: pointer to the HW structure | ||
770 | * @rar_count: receive address registers | ||
771 | * | ||
772 | * Setups the receive address registers by setting the base receive address | ||
773 | * register to the devices MAC address and clearing all the other receive | ||
774 | * address registers to 0. | ||
775 | **/ | ||
776 | static void igb_init_rx_addrs_82575(struct e1000_hw *hw, u16 rar_count) | ||
777 | { | ||
778 | u32 i; | ||
779 | u8 addr[6] = {0,0,0,0,0,0}; | ||
780 | /* | ||
781 | * This function is essentially the same as that of | ||
782 | * e1000_init_rx_addrs_generic. However it also takes care | ||
783 | * of the special case where the register offset of the | ||
784 | * second set of RARs begins elsewhere. This is implicitly taken care by | ||
785 | * function e1000_rar_set_generic. | ||
786 | */ | ||
787 | |||
788 | hw_dbg("e1000_init_rx_addrs_82575"); | ||
789 | |||
790 | /* Setup the receive address */ | ||
791 | hw_dbg("Programming MAC Address into RAR[0]\n"); | ||
792 | hw->mac.ops.rar_set(hw, hw->mac.addr, 0); | ||
793 | |||
794 | /* Zero out the other (rar_entry_count - 1) receive addresses */ | ||
795 | hw_dbg("Clearing RAR[1-%u]\n", rar_count-1); | ||
796 | for (i = 1; i < rar_count; i++) | ||
797 | hw->mac.ops.rar_set(hw, addr, i); | ||
798 | } | ||
799 | |||
800 | /** | ||
801 | * igb_shutdown_fiber_serdes_link_82575 - Remove link during power down | 768 | * igb_shutdown_fiber_serdes_link_82575 - Remove link during power down |
802 | * @hw: pointer to the HW structure | 769 | * @hw: pointer to the HW structure |
803 | * | 770 | * |
@@ -889,7 +856,8 @@ static s32 igb_reset_hw_82575(struct e1000_hw *hw) | |||
889 | wr32(E1000_IMC, 0xffffffff); | 856 | wr32(E1000_IMC, 0xffffffff); |
890 | icr = rd32(E1000_ICR); | 857 | icr = rd32(E1000_ICR); |
891 | 858 | ||
892 | igb_check_alt_mac_addr(hw); | 859 | /* Install any alternate MAC address into RAR0 */ |
860 | ret_val = igb_check_alt_mac_addr(hw); | ||
893 | 861 | ||
894 | return ret_val; | 862 | return ret_val; |
895 | } | 863 | } |
@@ -918,7 +886,8 @@ static s32 igb_init_hw_82575(struct e1000_hw *hw) | |||
918 | igb_clear_vfta(hw); | 886 | igb_clear_vfta(hw); |
919 | 887 | ||
920 | /* Setup the receive address */ | 888 | /* Setup the receive address */ |
921 | igb_init_rx_addrs_82575(hw, rar_count); | 889 | igb_init_rx_addrs(hw, rar_count); |
890 | |||
922 | /* Zero out the Multicast HASH table */ | 891 | /* Zero out the Multicast HASH table */ |
923 | hw_dbg("Zeroing the MTA\n"); | 892 | hw_dbg("Zeroing the MTA\n"); |
924 | for (i = 0; i < mac->mta_reg_count; i++) | 893 | for (i = 0; i < mac->mta_reg_count; i++) |
diff --git a/drivers/net/igb/e1000_mac.c b/drivers/net/igb/e1000_mac.c index 46e27e98254a..a1e3da78dbb1 100644 --- a/drivers/net/igb/e1000_mac.c +++ b/drivers/net/igb/e1000_mac.c | |||
@@ -104,6 +104,31 @@ static void igb_write_vfta(struct e1000_hw *hw, u32 offset, u32 value) | |||
104 | } | 104 | } |
105 | 105 | ||
106 | /** | 106 | /** |
107 | * igb_init_rx_addrs - Initialize receive address's | ||
108 | * @hw: pointer to the HW structure | ||
109 | * @rar_count: receive address registers | ||
110 | * | ||
111 | * Setups the receive address registers by setting the base receive address | ||
112 | * register to the devices MAC address and clearing all the other receive | ||
113 | * address registers to 0. | ||
114 | **/ | ||
115 | void igb_init_rx_addrs(struct e1000_hw *hw, u16 rar_count) | ||
116 | { | ||
117 | u32 i; | ||
118 | u8 mac_addr[ETH_ALEN] = {0}; | ||
119 | |||
120 | /* Setup the receive address */ | ||
121 | hw_dbg("Programming MAC Address into RAR[0]\n"); | ||
122 | |||
123 | hw->mac.ops.rar_set(hw, hw->mac.addr, 0); | ||
124 | |||
125 | /* Zero out the other (rar_entry_count - 1) receive addresses */ | ||
126 | hw_dbg("Clearing RAR[1-%u]\n", rar_count-1); | ||
127 | for (i = 1; i < rar_count; i++) | ||
128 | hw->mac.ops.rar_set(hw, mac_addr, i); | ||
129 | } | ||
130 | |||
131 | /** | ||
107 | * igb_vfta_set - enable or disable vlan in VLAN filter table | 132 | * igb_vfta_set - enable or disable vlan in VLAN filter table |
108 | * @hw: pointer to the HW structure | 133 | * @hw: pointer to the HW structure |
109 | * @vid: VLAN id to add or remove | 134 | * @vid: VLAN id to add or remove |
diff --git a/drivers/net/igb/e1000_mac.h b/drivers/net/igb/e1000_mac.h index f9ebfb3f234c..7518af8cbbf5 100644 --- a/drivers/net/igb/e1000_mac.h +++ b/drivers/net/igb/e1000_mac.h | |||
@@ -62,6 +62,7 @@ void igb_clear_hw_cntrs_base(struct e1000_hw *hw); | |||
62 | void igb_clear_vfta(struct e1000_hw *hw); | 62 | void igb_clear_vfta(struct e1000_hw *hw); |
63 | s32 igb_vfta_set(struct e1000_hw *hw, u32 vid, bool add); | 63 | s32 igb_vfta_set(struct e1000_hw *hw, u32 vid, bool add); |
64 | void igb_config_collision_dist(struct e1000_hw *hw); | 64 | void igb_config_collision_dist(struct e1000_hw *hw); |
65 | void igb_init_rx_addrs(struct e1000_hw *hw, u16 rar_count); | ||
65 | void igb_mta_set(struct e1000_hw *hw, u32 hash_value); | 66 | void igb_mta_set(struct e1000_hw *hw, u32 hash_value); |
66 | void igb_put_hw_semaphore(struct e1000_hw *hw); | 67 | void igb_put_hw_semaphore(struct e1000_hw *hw); |
67 | void igb_rar_set(struct e1000_hw *hw, u8 *addr, u32 index); | 68 | void igb_rar_set(struct e1000_hw *hw, u8 *addr, u32 index); |