hv_netvsc: Set needed_headroom according to VF
authorHaiyang Zhang <haiyangz@microsoft.com>
Fri, 18 Jun 2021 19:35:39 +0000 (12:35 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 21 Jun 2021 19:10:00 +0000 (12:10 -0700)
Set needed_headroom according to VF if VF needs a bigger
headroom.

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/netvsc_drv.c

index f682a55..382bebc 100644 (file)
@@ -2384,6 +2384,9 @@ static int netvsc_register_vf(struct net_device *vf_netdev)
        dev_hold(vf_netdev);
        rcu_assign_pointer(net_device_ctx->vf_netdev, vf_netdev);
 
+       if (ndev->needed_headroom < vf_netdev->needed_headroom)
+               ndev->needed_headroom = vf_netdev->needed_headroom;
+
        vf_netdev->wanted_features = ndev->features;
        netdev_update_features(vf_netdev);
 
@@ -2462,6 +2465,8 @@ static int netvsc_unregister_vf(struct net_device *vf_netdev)
        RCU_INIT_POINTER(net_device_ctx->vf_netdev, NULL);
        dev_put(vf_netdev);
 
+       ndev->needed_headroom = RNDIS_AND_PPI_SIZE;
+
        return NOTIFY_OK;
 }