1 --- a/Embedded/src/GbE/iegbe_main.c
2 +++ b/Embedded/src/GbE/iegbe_main.c
3 @@ -2161,7 +2161,8 @@ static void iegbe_set_rx_mode(struct net
5 struct iegbe_adapter *adapter = netdev_priv(netdev);
6 struct iegbe_hw *hw = &adapter->hw;
7 - struct dev_addr_list *uc_ptr;
8 + struct netdev_hw_addr *ha;
10 struct dev_addr_list *mc_ptr;
13 @@ -2187,12 +2188,11 @@ int mta_reg_count = E1000_NUM_MTA_REGIST
18 if (netdev->uc_count > rar_entries - 1) {
19 rctl |= E1000_RCTL_UPE;
20 } else if (!(netdev->flags & IFF_PROMISC)) {
21 rctl &= ~E1000_RCTL_UPE;
22 - uc_ptr = netdev->uc_list;
26 E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
27 @@ -2210,13 +2210,20 @@ int mta_reg_count = E1000_NUM_MTA_REGIST
28 * if there are not 14 addresses, go ahead and clear the filters
29 * -- with 82571 controllers only 0-13 entries are filled here
33 + list_for_each_entry(ha, &netdev->uc_list, list) {
34 + if (i == rar_entries)
36 + iegbe_rar_set(hw, ha->addr, i++);
39 + WARN_ON(i == rar_entries);
41 mc_ptr = netdev->mc_list;
43 - for (i = 1; i < rar_entries; i++) {
45 - iegbe_rar_set(hw, uc_ptr->da_addr, i);
46 - uc_ptr = uc_ptr->next;
47 - } else if (mc_ptr) {
48 + for (; i < rar_entries; i++) {
50 iegbe_rar_set(hw, mc_ptr->da_addr, i);
51 mc_ptr = mc_ptr->next;
53 @@ -2226,7 +2233,6 @@ int mta_reg_count = E1000_NUM_MTA_REGIST
54 E1000_WRITE_FLUSH(&adapter->hw);
57 - WARN_ON(uc_ptr != NULL);
59 /* clear the old settings from the multicast hash table */