source: trunk/package/ep80579-drivers/patches/103-iegbe_convert_unicast_addr_list.patch @ 20648

Last change on this file since 20648 was 20648, checked in by kaloz, 7 years ago

[x86]: add a subtarget and drivers for the Intel Tolapai SoC

File size: 1.6 KB
  • Embedded/src/GbE/iegbe_main.c

    a b static void iegbe_set_rx_mode(struct net 
    21612161{ 
    21622162        struct iegbe_adapter *adapter = netdev_priv(netdev); 
    21632163        struct iegbe_hw *hw = &adapter->hw; 
    2164         struct dev_addr_list *uc_ptr; 
     2164        struct netdev_hw_addr *ha; 
     2165        bool use_uc = false; 
    21652166        struct dev_addr_list *mc_ptr; 
    21662167        u32 rctl; 
    21672168        u32 hash_value; 
    int mta_reg_count = E1000_NUM_MTA_REGIST 
    21872188                } 
    21882189        } 
    21892190 
    2190         uc_ptr = NULL; 
    21912191        if (netdev->uc_count > rar_entries - 1) { 
    21922192                rctl |= E1000_RCTL_UPE; 
    21932193        } else if (!(netdev->flags & IFF_PROMISC)) { 
    21942194                rctl &= ~E1000_RCTL_UPE; 
    2195                 uc_ptr = netdev->uc_list; 
     2195                use_uc = true; 
    21962196        } 
    21972197 
    21982198        E1000_WRITE_REG(&adapter->hw, RCTL, rctl); 
    int mta_reg_count = E1000_NUM_MTA_REGIST 
    22102210         * if there are not 14 addresses, go ahead and clear the filters 
    22112211         * -- with 82571 controllers only 0-13 entries are filled here 
    22122212         */ 
     2213        i = 1; 
     2214        if (use_uc) 
     2215                list_for_each_entry(ha, &netdev->uc_list, list) { 
     2216                        if (i == rar_entries) 
     2217                                break; 
     2218                        iegbe_rar_set(hw, ha->addr, i++); 
     2219                } 
     2220 
     2221        WARN_ON(i == rar_entries); 
     2222 
    22132223        mc_ptr = netdev->mc_list; 
    22142224 
    2215         for (i = 1; i < rar_entries; i++) { 
    2216                 if (uc_ptr) { 
    2217                         iegbe_rar_set(hw, uc_ptr->da_addr, i); 
    2218                         uc_ptr = uc_ptr->next; 
    2219                 } else if (mc_ptr) {             
     2225        for (; i < rar_entries; i++) { 
     2226                if (mc_ptr) { 
    22202227                        iegbe_rar_set(hw, mc_ptr->da_addr, i); 
    22212228                        mc_ptr = mc_ptr->next; 
    22222229                } else { 
    int mta_reg_count = E1000_NUM_MTA_REGIST 
    22262233                        E1000_WRITE_FLUSH(&adapter->hw); 
    22272234                } 
    22282235        } 
    2229         WARN_ON(uc_ptr != NULL); 
    22302236 
    22312237        /* clear the old settings from the multicast hash table */ 
    22322238 
Note: See TracBrowser for help on using the repository browser.