if (err)
                goto err_req_irq;
 
+       i40evf_add_filter(adapter, adapter->hw.mac.addr);
        i40evf_configure(adapter);
 
        err = i40evf_up_complete(adapter);
                                                      struct i40evf_adapter,
                                                      init_task.work);
        struct net_device *netdev = adapter->netdev;
-       struct i40evf_mac_filter *f;
        struct i40e_hw *hw = &adapter->hw;
        struct pci_dev *pdev = adapter->pdev;
        int i, err, bufsz;
        ether_addr_copy(netdev->dev_addr, adapter->hw.mac.addr);
        ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr);
 
-       f = kzalloc(sizeof(*f), GFP_ATOMIC);
-       if (!f)
-               goto err_sw_init;
-
-       ether_addr_copy(f->macaddr, adapter->hw.mac.addr);
-       f->add = true;
-       adapter->aq_required |= I40EVF_FLAG_AQ_ADD_MAC_FILTER;
-
-       list_add(&f->list, &adapter->mac_filter_list);
-
        init_timer(&adapter->watchdog_timer);
        adapter->watchdog_timer.function = &i40evf_watchdog_timer;
        adapter->watchdog_timer.data = (unsigned long)adapter;