Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux-2.6-microblaze.git] / drivers / net / ethernet / intel / i40e / i40e_virtchnl_pf.c
index 86b0f21..4f184c5 100644 (file)
@@ -4353,6 +4353,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev, int vf_id,
                /* duplicate request, so just return success */
                goto error_pvid;
 
+       i40e_vlan_stripping_enable(vsi);
        i40e_vc_reset_vf(vf, true);
        /* During reset the VF got a new VSI, so refresh a pointer. */
        vsi = pf->vsi[vf->lan_vsi_idx];
@@ -4368,7 +4369,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev, int vf_id,
         * MAC addresses deleted.
         */
        if ((!(vlan_id || qos) ||
-           vlanprio != le16_to_cpu(vsi->info.pvid)) &&
+            vlanprio != le16_to_cpu(vsi->info.pvid)) &&
            vsi->info.pvid) {
                ret = i40e_add_vlan_all_mac(vsi, I40E_VLAN_ANY);
                if (ret) {
@@ -4731,6 +4732,11 @@ int i40e_ndo_set_vf_trust(struct net_device *netdev, int vf_id, bool setting)
                goto out;
 
        vf->trusted = setting;
+
+       /* request PF to sync mac/vlan filters for the VF */
+       set_bit(__I40E_MACVLAN_SYNC_PENDING, pf->state);
+       pf->vsi[vf->lan_vsi_idx]->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
+
        i40e_vc_reset_vf(vf, true);
        dev_info(&pf->pdev->dev, "VF %u is now %strusted\n",
                 vf_id, setting ? "" : "un");