rule_added = true;
        }
 
+       vlan_ops = ice_get_compat_vsi_vlan_ops(uplink_vsi);
+       if (vlan_ops->dis_rx_filtering(uplink_vsi))
+               goto err_dis_rx;
+
        if (ice_vsi_update_security(uplink_vsi, ice_vsi_ctx_set_allow_override))
                goto err_override_uplink;
 
 err_override_control:
        ice_vsi_update_security(uplink_vsi, ice_vsi_ctx_clear_allow_override);
 err_override_uplink:
+       vlan_ops->ena_rx_filtering(uplink_vsi);
+err_dis_rx:
        if (rule_added)
                ice_clear_dflt_vsi(uplink_vsi);
 err_def_rx:
 {
        struct ice_vsi *uplink_vsi = pf->switchdev.uplink_vsi;
        struct ice_vsi *ctrl_vsi = pf->switchdev.control_vsi;
+       struct ice_vsi_vlan_ops *vlan_ops;
+
+       vlan_ops = ice_get_compat_vsi_vlan_ops(uplink_vsi);
 
        ice_vsi_update_security(ctrl_vsi, ice_vsi_ctx_clear_allow_override);
        ice_vsi_update_security(uplink_vsi, ice_vsi_ctx_clear_allow_override);
+       vlan_ops->ena_rx_filtering(uplink_vsi);
        ice_clear_dflt_vsi(uplink_vsi);
        ice_fltr_add_mac_and_broadcast(uplink_vsi,
                                       uplink_vsi->port_info->mac.perm_addr,