le16_to_cpu(vsi->info.pvid));
 
        list_for_each_entry(f, &vsi->mac_filter_list, list) {
+               if (f->state == I40E_FILTER_REMOVE)
+                       continue;
                add = i40e_add_filter(vsi, macaddr, f->vlan);
                if (!add)
                        return NULL;
        }
 
        list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
+               if (f->state == I40E_FILTER_REMOVE)
+                       continue;
                add_f = i40e_add_filter(vsi, f->macaddr, vid);
                if (!add_f) {
                        dev_info(&vsi->back->pdev->dev,
        /* Do not assume that I40E_VLAN_ANY should be reset to VLAN 0 */
        if (vid > 0 && !vsi->info.pvid) {
                list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
+                       if (f->state == I40E_FILTER_REMOVE)
+                               continue;
                        if (!i40e_find_filter(vsi, f->macaddr, I40E_VLAN_ANY))
                                continue;
                        i40e_del_filter(vsi, f->macaddr, I40E_VLAN_ANY);