|
|
@@ -2185,8 +2185,9 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog,
|
|
|
}
|
|
|
|
|
|
/* Make sure NAPI is not using any XDP TX queues for RX. */
|
|
|
- for (i = 0; i < vi->max_queue_pairs; i++)
|
|
|
- napi_disable(&vi->rq[i].napi);
|
|
|
+ if (netif_running(dev))
|
|
|
+ for (i = 0; i < vi->max_queue_pairs; i++)
|
|
|
+ napi_disable(&vi->rq[i].napi);
|
|
|
|
|
|
netif_set_real_num_rx_queues(dev, curr_qp + xdp_qp);
|
|
|
err = _virtnet_set_queues(vi, curr_qp + xdp_qp);
|
|
|
@@ -2205,7 +2206,8 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog,
|
|
|
}
|
|
|
if (old_prog)
|
|
|
bpf_prog_put(old_prog);
|
|
|
- virtnet_napi_enable(vi->rq[i].vq, &vi->rq[i].napi);
|
|
|
+ if (netif_running(dev))
|
|
|
+ virtnet_napi_enable(vi->rq[i].vq, &vi->rq[i].napi);
|
|
|
}
|
|
|
|
|
|
return 0;
|