From patchwork Fri Mar 7 01:12:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 14005645 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 20BFE1519B4 for ; Fri, 7 Mar 2025 01:12:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309944; cv=none; b=rS240Zew49yHRBtZoQc0yb+aSfqTBGE+6UpBdgK7PPwlsBNGz1W/7M8pCxe3NoKM0jMviv7F380cq4oRxIsSF3Th1RlL9W6dI1BhgAJjIaCN7nXkbY6uf3q26xuxGhOO0OXdbr9Yxfk/C8Nc8XWTQ3+auN6N29t7l0+VtUzwNT8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309944; c=relaxed/simple; bh=oZEKZBNyzTFUQoyDm8VLIwp8l+Uss/+aDmlef+L4zKU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YLAUgl6ao8A4wn/eFx772TUuoQ9iOfIVV3CvaFRdvM2fgg9H/akyIL8SZTjEFsgxUTn7cxVuIyV9nTMQTPhkwR1CpUiqst0r18trx+tv699233d7wlJ3cd76CcIwbbMUIyTAhLuGwinb6FcifhgnvBUCfFlEaYVPd3hA670BjnQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=WTNNMaIF; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="WTNNMaIF" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-22409077c06so28799925ad.1 for ; Thu, 06 Mar 2025 17:12:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1741309942; x=1741914742; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/tghgwiJFbKnAoocPVNdoGW6mlhutsLEBZ7NkypKcYI=; b=WTNNMaIFE5GC+RUz4X1R9wv8lNDLuFLbWsKgUiexVTUDNp5nKW5IdIZNElrh0VkxcU FhKRJC0Z4HlHkG6WAUiqT8Vq3mc3hpXZGWLd9qlef2F+3gr+A3vViaJ/VbaGcxaxGV12 VU2PXGy/IdcVhQsaf8pBA95yYojUsZypg30jg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741309942; x=1741914742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/tghgwiJFbKnAoocPVNdoGW6mlhutsLEBZ7NkypKcYI=; b=h6WrxpH2tix2p6Ar8xwcobcaK/6guLNpSWbXjmDxQTv2iu4XCQyF9BJhMJFdwexmRt pfP90vF3gLCx+jqqemtdBzb0jbEML6Q8r5qPbsA07yyKRm1z902wCyu6ouqfL9yQqDHW RstgRKX+lEuhTfw1cFsaG7dmNCmU+GwQ270C7nFkTwpyg0EYqwBrRsdEfYyFGrGICkrT 9RvJr6EGFN7tEVc0+f8gMOVK99K2Fq1kA+vuU6IEgpYpHnkPDefUoGDEbOMh3Tgu7879 prF0O8XdRUiLLfHBF0AktVj7nNWrOt1f6XlFwJOwMH8IxIZ8vXuZiceSSRdOP6+cgNVA pCfQ== X-Gm-Message-State: AOJu0YwSZL20lQSEIX3P4SjvNT7DjGBgJKLGe20eD4virWj58imiO9oO k4lzQ48FPWjoUAFb5oAcB6xFPhafvL7FvUrm/kEucNuusuz3ZQ2FLfxeYYFTKg5CTdYTx52o6oW GdIWog0jMadNL/9OF5F3wZ1zgO0y49RHCpjXsVqWRBqnXVyxYWUzGx2MqFXim6qNEdalyNwjmHr gfPb1UILSmB0y4HDUO0a+MfH7nfApsnl9zRblOgQ== X-Gm-Gg: ASbGncvcjEGI/zNZY0uDv2TKiole5Kab43bWCSnfk5QA0I/esqF8rdfqvS1nS3Ovcei cRQmgiF3ZVKfHnJ4xQxJAQ4cM5386TykzrnMfqfd0pE/amRpVfnH5Y98zKmM86IH4HxEhRF88bW sqh1agz04Z0yOtF6YQibO/Cxz0ZFb4irNCQ+JDK7loWWX2kSjgcaAZdUJlA1fAX3oK9qOcSEi4Q MB879e+n2dlfctSq0cTRigY2/jIJenYxvKocsceE+xangOk2MpTi/qWt5FkUTMqmSLRFS87/vEg oHAreAJBIGqIpJI2TG8x8KunIMcixk/za7+NpdgSfzilnfwHtHXc X-Google-Smtp-Source: AGHT+IGKhqwe2JpllICnS8YtflWUc4MgBo06dsvavfBwoHtdqy1vxCbTRe3YRbrAw0m3enhzIMPo2g== X-Received: by 2002:a17:902:ce0a:b0:224:584:6f05 with SMTP id d9443c01a7336-22428bdecdemr26052505ad.41.1741309941695; Thu, 06 Mar 2025 17:12:21 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410abc816sm18749685ad.258.2025.03.06.17.12.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 17:12:21 -0800 (PST) From: Joe Damato To: netdev@vger.kernel.org Cc: mkarsten@uwaterloo.ca, gerhard@engleder-embedded.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, kuba@kernel.org, mst@redhat.com, leiyang@redhat.com, Joe Damato , =?utf-8?q?Eugenio_P?= =?utf-8?q?=C3=A9rez?= , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , virtualization@lists.linux.dev (open list:VIRTIO CORE AND NET DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v6 1/4] virtio-net: Refactor napi_enable paths Date: Fri, 7 Mar 2025 01:12:09 +0000 Message-ID: <20250307011215.266806-2-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250307011215.266806-1-jdamato@fastly.com> References: <20250307011215.266806-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Refactor virtnet_napi_enable and virtnet_napi_tx_enable to take a struct receive_queue. Create a helper, virtnet_napi_do_enable, which contains the logic to enable a NAPI. Signed-off-by: Joe Damato Acked-by: Michael S. Tsirkin Acked-by: Jason Wang Tested-by: Lei Yang --- drivers/net/virtio_net.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index ac26a6201c44..133b004c7a9a 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -2807,7 +2807,8 @@ static void skb_recv_done(struct virtqueue *rvq) virtqueue_napi_schedule(&rq->napi, rvq); } -static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) +static void virtnet_napi_do_enable(struct virtqueue *vq, + struct napi_struct *napi) { napi_enable(napi); @@ -2820,10 +2821,16 @@ static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) local_bh_enable(); } -static void virtnet_napi_tx_enable(struct virtnet_info *vi, - struct virtqueue *vq, - struct napi_struct *napi) +static void virtnet_napi_enable(struct receive_queue *rq) { + virtnet_napi_do_enable(rq->vq, &rq->napi); +} + +static void virtnet_napi_tx_enable(struct send_queue *sq) +{ + struct virtnet_info *vi = sq->vq->vdev->priv; + struct napi_struct *napi = &sq->napi; + if (!napi->weight) return; @@ -2835,7 +2842,7 @@ static void virtnet_napi_tx_enable(struct virtnet_info *vi, return; } - return virtnet_napi_enable(vq, napi); + virtnet_napi_do_enable(sq->vq, napi); } static void virtnet_napi_tx_disable(struct napi_struct *napi) @@ -2856,7 +2863,7 @@ static void refill_work(struct work_struct *work) napi_disable(&rq->napi); still_empty = !try_fill_recv(vi, rq, GFP_KERNEL); - virtnet_napi_enable(rq->vq, &rq->napi); + virtnet_napi_enable(rq); /* In theory, this can happen: if we don't get any buffers in * we will *never* try to fill again. @@ -3073,8 +3080,8 @@ static int virtnet_enable_queue_pair(struct virtnet_info *vi, int qp_index) if (err < 0) goto err_xdp_reg_mem_model; - virtnet_napi_enable(vi->rq[qp_index].vq, &vi->rq[qp_index].napi); - virtnet_napi_tx_enable(vi, vi->sq[qp_index].vq, &vi->sq[qp_index].napi); + virtnet_napi_enable(&vi->rq[qp_index]); + virtnet_napi_tx_enable(&vi->sq[qp_index]); return 0; @@ -3339,7 +3346,7 @@ static void virtnet_rx_resume(struct virtnet_info *vi, struct receive_queue *rq) schedule_delayed_work(&vi->refill, 0); if (running) - virtnet_napi_enable(rq->vq, &rq->napi); + virtnet_napi_enable(rq); } static int virtnet_rx_resize(struct virtnet_info *vi, @@ -3402,7 +3409,7 @@ static void virtnet_tx_resume(struct virtnet_info *vi, struct send_queue *sq) __netif_tx_unlock_bh(txq); if (running) - virtnet_napi_tx_enable(vi, sq->vq, &sq->napi); + virtnet_napi_tx_enable(sq); } static int virtnet_tx_resize(struct virtnet_info *vi, struct send_queue *sq, @@ -5983,9 +5990,8 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog, if (old_prog) bpf_prog_put(old_prog); if (netif_running(dev)) { - virtnet_napi_enable(vi->rq[i].vq, &vi->rq[i].napi); - virtnet_napi_tx_enable(vi, vi->sq[i].vq, - &vi->sq[i].napi); + virtnet_napi_enable(&vi->rq[i]); + virtnet_napi_tx_enable(&vi->sq[i]); } } @@ -6000,9 +6006,8 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog, if (netif_running(dev)) { for (i = 0; i < vi->max_queue_pairs; i++) { - virtnet_napi_enable(vi->rq[i].vq, &vi->rq[i].napi); - virtnet_napi_tx_enable(vi, vi->sq[i].vq, - &vi->sq[i].napi); + virtnet_napi_enable(&vi->rq[i]); + virtnet_napi_tx_enable(&vi->sq[i]); } } if (prog) From patchwork Fri Mar 7 01:12:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 14005646 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4BE41624E9 for ; Fri, 7 Mar 2025 01:12:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309946; cv=none; b=m6QTwhZovSEtYYnznOnGo5hGdsrnbxGQKNC1q1xltOwce2Z/YER+aE3gxbvLoi7CPdsjK2xMTzW9ihmrk7MIUaSgOYUfvHHHtZb/ovSA8z4kxzeWDRJ9+b6d+B6Lx1T9o7jA5GB8RyfZIFCaP5u99Oqk5fBBE6CebSC0hOKcBNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309946; c=relaxed/simple; bh=yAvpgVVKv0qwVx/BcaJPPk6io7i8uqUMf303YSpg6Bc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YFmuWWP2udkit743F6dAdF6jKgy/7wt9ejy4BlT/aQrbbt9DTWOcWYTGNowRCw9MsQa2aufSV2KE2zBGWR2kH31aRGmzDZvLdmiYjQYFsNTmVEkA2lheiAyijW27ZMOvQTwgxM9m+zMNg8nKvZE5bOwfPr56POyr8fB0uW0CSY0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=uXXbd7Ux; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="uXXbd7Ux" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-223cc017ef5so26498265ad.0 for ; Thu, 06 Mar 2025 17:12:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1741309943; x=1741914743; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kvwTo73+IFY77/cYaIXsS2w5RqkSonWsueWTF0kXS/4=; b=uXXbd7Uxc0itPUE7M83fbS3D+/GaNswUO4C3yB7UDqCf7Kmx09SJyAuDcJ2GXpFSPc hbN6f6CENPJEKIGrWjmZ9szhZ3NoFPqsawtTA5wbQ4qV5O279iQWCj1vHC1ssFqiWt/6 SgjfyUhqjNhQE8sqBNMzVc4vXIu2lAlO0XJhk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741309943; x=1741914743; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kvwTo73+IFY77/cYaIXsS2w5RqkSonWsueWTF0kXS/4=; b=f5AdH7D0j6f5HN/qLfbcjWhadh+5eTeqDW06g5dTIV/x5o0cAo+cMo3QICbH5alH61 LQeDjByFrpy+tb2+TTgCtX6YhU7SbmNSLYgD23VARDHLC8/uSJTY/u0d5uVZwdIUhNu/ XJqgZkOLuCEoJ9BUgqE50MNWagctEwc1Une6I+bieYBZa0ORiOBMz5sObfKjeMDwBXyC H/IB01NSc22E/MADJc3vf593qQafYk4FVOm0/qE8oangJ44Gtb4guhVezvHD7TeuPDer wZpuztfOIrx+dGAV7pGiRbVij4mrt+hr5yEo+A1C5RPo6haSXxu/1egFd081IEuN4ogy Cllw== X-Gm-Message-State: AOJu0YyzeL+Pta4/0g1nykkSlWH1ttlzVOuqk/GXAtZCbE6nTOp04ych Ji2XmDE3xJonothPgx29hfWwZ6kFVHiiQREfU2a2rdPfsc5m6JBLYgOLOLapYghiL0TjKPY/en0 1HGQTecUppOiv9SXrQzbVOfFH9T1dhd90bvQGdJ4UcbAqG+f0mKvsRwUoWIJHuy4kOPEkJ3lXXw jRrGQGVs9kzEObO8XNjUzHLFApI/7mVMjIyk8a1g== X-Gm-Gg: ASbGncv+Jg9gbYvXiHn0Mv3bmd1cthvTlhm83ca0Q5CfXkymdTCxJb+LA3qoIhgrroh 2BiU26Vr7YSwQ20YkHwjYj/SN/we0puNVsnKdslJ+EI1jsXoeQgbZ3Oe0az50aIBEnQB7sCVGcK iqLw4h95HIqdxapkwX3MnqzX0xw6awh2xZz8qAKLMxL97mMM+HRXjiBUQ629qDX79F5o2jpi8Zw Ez0W06z5G9SkZK4uC11s87SB37ybG6AQKkuAOAizuIW6N4THC3l/GsFvYWLSljloQowVCM1mgdd rByAF+Xr+X1X6SZLI9BHkzUP4LDJSLGbrmLP1dcEIfRuUeCc7RYe X-Google-Smtp-Source: AGHT+IGoI+aPJvj7yY+4BLZ2+twYf/oT3+TiRwVbnShK0v7noTjCRMsILjhJFgqCavzprURMi0Wvnw== X-Received: by 2002:a17:902:e810:b0:223:432b:593d with SMTP id d9443c01a7336-22428c07537mr25062635ad.42.1741309943342; Thu, 06 Mar 2025 17:12:23 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410abc816sm18749685ad.258.2025.03.06.17.12.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 17:12:22 -0800 (PST) From: Joe Damato To: netdev@vger.kernel.org Cc: mkarsten@uwaterloo.ca, gerhard@engleder-embedded.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, kuba@kernel.org, mst@redhat.com, leiyang@redhat.com, Joe Damato , =?utf-8?q?Eugenio_P?= =?utf-8?q?=C3=A9rez?= , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , virtualization@lists.linux.dev (open list:VIRTIO CORE AND NET DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v6 2/4] virtio-net: Refactor napi_disable paths Date: Fri, 7 Mar 2025 01:12:10 +0000 Message-ID: <20250307011215.266806-3-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250307011215.266806-1-jdamato@fastly.com> References: <20250307011215.266806-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Create virtnet_napi_disable helper and refactor virtnet_napi_tx_disable to take a struct send_queue. Signed-off-by: Joe Damato Acked-by: Michael S. Tsirkin Acked-by: Jason Wang Tested-by: Lei Yang --- drivers/net/virtio_net.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 133b004c7a9a..e578885c1093 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -2845,12 +2845,21 @@ static void virtnet_napi_tx_enable(struct send_queue *sq) virtnet_napi_do_enable(sq->vq, napi); } -static void virtnet_napi_tx_disable(struct napi_struct *napi) +static void virtnet_napi_tx_disable(struct send_queue *sq) { + struct napi_struct *napi = &sq->napi; + if (napi->weight) napi_disable(napi); } +static void virtnet_napi_disable(struct receive_queue *rq) +{ + struct napi_struct *napi = &rq->napi; + + napi_disable(napi); +} + static void refill_work(struct work_struct *work) { struct virtnet_info *vi = @@ -2861,7 +2870,7 @@ static void refill_work(struct work_struct *work) for (i = 0; i < vi->curr_queue_pairs; i++) { struct receive_queue *rq = &vi->rq[i]; - napi_disable(&rq->napi); + virtnet_napi_disable(rq); still_empty = !try_fill_recv(vi, rq, GFP_KERNEL); virtnet_napi_enable(rq); @@ -3060,8 +3069,8 @@ static int virtnet_poll(struct napi_struct *napi, int budget) static void virtnet_disable_queue_pair(struct virtnet_info *vi, int qp_index) { - virtnet_napi_tx_disable(&vi->sq[qp_index].napi); - napi_disable(&vi->rq[qp_index].napi); + virtnet_napi_tx_disable(&vi->sq[qp_index]); + virtnet_napi_disable(&vi->rq[qp_index]); xdp_rxq_info_unreg(&vi->rq[qp_index].xdp_rxq); } @@ -3333,7 +3342,7 @@ static void virtnet_rx_pause(struct virtnet_info *vi, struct receive_queue *rq) bool running = netif_running(vi->dev); if (running) { - napi_disable(&rq->napi); + virtnet_napi_disable(rq); virtnet_cancel_dim(vi, &rq->dim); } } @@ -3375,7 +3384,7 @@ static void virtnet_tx_pause(struct virtnet_info *vi, struct send_queue *sq) qindex = sq - vi->sq; if (running) - virtnet_napi_tx_disable(&sq->napi); + virtnet_napi_tx_disable(sq); txq = netdev_get_tx_queue(vi->dev, qindex); @@ -5952,8 +5961,8 @@ 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. */ if (netif_running(dev)) { for (i = 0; i < vi->max_queue_pairs; i++) { - napi_disable(&vi->rq[i].napi); - virtnet_napi_tx_disable(&vi->sq[i].napi); + virtnet_napi_disable(&vi->rq[i]); + virtnet_napi_tx_disable(&vi->sq[i]); } } From patchwork Fri Mar 7 01:12:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 14005647 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 66AD71531E9 for ; Fri, 7 Mar 2025 01:12:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309948; cv=none; b=gMCWLAxMVD9f3QjuNkrwKzJUAeCPjuYFVi7MbOJdzedGXsqA9hXuT1oQ3kF6TieOsAxPE+KW2lkx45YbBwJPweybfY/bSWon69CiV1vwG6v3YSKcd2oclVmJ5UT1pFnDF58ZjcCbXLO16MsOPiqdMDHCByncDbXsWzXUgz85DI4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309948; c=relaxed/simple; bh=O43CjekhpNhqU5hy99CW3Pg6sV7P2M0U4HkhUdlpIoI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KWO6LnAItTnI+o22lMSHyMhb9MTHHzW8+CWkzvNJVJw4KEnXi1EJ82Da9XHelHxwlQiMCaHHxFhNnf5jAoEauo9SMAv/Os6Vq1XsH2GSpguhQ3+hXDCK8fyTCLfefDou1ZC/ofj2AKpH4bpVlNnvGgn+4qd92BgCpkSaxKjnCqs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=AuYLTS+j; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="AuYLTS+j" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-22356471820so22014705ad.0 for ; Thu, 06 Mar 2025 17:12:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1741309945; x=1741914745; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Kov/5Qi5/eXa3sZew7Uff/swL40CZY7WdNdYduRpGtQ=; b=AuYLTS+jy449um+B57nkmg+yhdv3lzxVzXFWpLvsij3FDJXQcl3+YVdHRLmXRvyneD 17OFw/7kC+QScQObKN2Wg1qC8LGpRkRhHJvG1nODAnI+G69UXHgDZSjfrh0oJY2BaoIp UtR3ZjI6ym4fwQPKUeuqFfjWV7gz9kjML8W10= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741309945; x=1741914745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Kov/5Qi5/eXa3sZew7Uff/swL40CZY7WdNdYduRpGtQ=; b=t6tLwhMXC3glLvyzXEqt1SJLWGKWwiSBkRchqInIrbKgBBrtVNDoQ1gJ1n51cMGjX4 z6xMQvcP1Mk7x+vx3G+Ep6QAqjKkY02FqNUF5Dt+k5S2oGbD7H02s0xvkFdU+KencjDl dcuHd4WWtDzaGGxVtHB18wYhLQxhlYVhotVyzkIVxpCTT+e+YkxpMYqvtVMdIrJDyPgC 80dqUvktAPzTQta9X5VC03ZyfDYqsMRaTDeurrPCQQwl14OeNJHT8GBEhr/NfkZXtjOs LBm5IW+m2flEwGbol7IxVc+LsKNhyEJCP2Uc01tF52lO2RxHRABfphHlLAZ/zzwO5NZI u5+A== X-Gm-Message-State: AOJu0Yx3/5AfLbLHHcOihDFSipg83AW8Ez4MyOqe+4/yfucJt/SyyEDg +fq6/hcSt9Cwfqj/JK6z2RnAbvw9PfROSvugsRHDOwN2NXKoeHqUSild785vzJQAppod8xe0YLN nZTnUZrVaEqXIvqfy7tt05p9nlx2YaJe/F+OmANrx8cQPNgP3hrR/xallARnZmRAH+rSEIZGKE7 1VOr3ejBAfh206lruoQoBx1oleE5fCG8eavZHjyA== X-Gm-Gg: ASbGncuchN7LXzzdztgR/yuLEjarMIsqXQ9Sdeq3NZIVTTp00KZqBof9tn0RT2k2QGd wqpfgOx6TzqXUgHvWfkUaRssA4/s8U5R/D/HXe4lC5B+JSHFHH0s7FQcyLXq3yakGBkt9bhXLpu YmHkFJ5Cv610MgqVZLkKejOXnt2dorwkhUwZAj5pjnIXCBthLG7SVQyVkQL8MMKaQ8rmEK+LdZl kfha1HYcgLF6n9HQPLokOckAQXoKiVH/ZAujcA8gMegCp1sGcN4ECu01+ng268u6dL+gAk+9uGf 4xJ1dOaV/3AcLfA7j/WSBXYgaDkYKpB9DQ6q4FRce+iz0Dn149fD X-Google-Smtp-Source: AGHT+IHk3rKIVw3xzN+NcT/1jnN7TTEd2BEkiVLbP8IFN0cXRTvNB5nEIsZoYv+ZdmtXYxpnfUvrZA== X-Received: by 2002:a17:903:1cf:b0:223:2630:6b82 with SMTP id d9443c01a7336-2242887fe22mr25579105ad.10.1741309945056; Thu, 06 Mar 2025 17:12:25 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410abc816sm18749685ad.258.2025.03.06.17.12.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 17:12:24 -0800 (PST) From: Joe Damato To: netdev@vger.kernel.org Cc: mkarsten@uwaterloo.ca, gerhard@engleder-embedded.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, kuba@kernel.org, mst@redhat.com, leiyang@redhat.com, Joe Damato , =?utf-8?q?Eugenio_P?= =?utf-8?q?=C3=A9rez?= , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , virtualization@lists.linux.dev (open list:VIRTIO CORE AND NET DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v6 3/4] virtio-net: Map NAPIs to queues Date: Fri, 7 Mar 2025 01:12:11 +0000 Message-ID: <20250307011215.266806-4-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250307011215.266806-1-jdamato@fastly.com> References: <20250307011215.266806-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Use netif_queue_set_napi to map NAPIs to queue IDs so that the mapping can be accessed by user apps. Note that the netif_queue_set_napi currently requires RTNL, so care must be taken to ensure RTNL is held on paths where this API might be reached. The paths in the driver where this API can be reached appear to be: - ndo_open, ndo_close, which hold RTNL so no driver change is needed. - rx_pause, rx_resume, tx_pause, tx_resume are reached either via an ethtool ioctl or via XSK - neither path requires a driver change. - power management paths (which call open and close), which have been updated to hold/release RTNL. $ ethtool -i ens4 | grep driver driver: virtio_net $ sudo ethtool -L ens4 combined 4 $ ./tools/net/ynl/pyynl/cli.py \ --spec Documentation/netlink/specs/netdev.yaml \ --dump queue-get --json='{"ifindex": 2}' [{'id': 0, 'ifindex': 2, 'napi-id': 8289, 'type': 'rx'}, {'id': 1, 'ifindex': 2, 'napi-id': 8290, 'type': 'rx'}, {'id': 2, 'ifindex': 2, 'napi-id': 8291, 'type': 'rx'}, {'id': 3, 'ifindex': 2, 'napi-id': 8292, 'type': 'rx'}, {'id': 0, 'ifindex': 2, 'type': 'tx'}, {'id': 1, 'ifindex': 2, 'type': 'tx'}, {'id': 2, 'ifindex': 2, 'type': 'tx'}, {'id': 3, 'ifindex': 2, 'type': 'tx'}] Note that virtio_net has TX-only NAPIs which do not have NAPI IDs, so the lack of 'napi-id' in the above output is expected. Signed-off-by: Joe Damato Acked-by: Jason Wang --- drivers/net/virtio_net.c | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index e578885c1093..7bd63a677123 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -2823,13 +2823,18 @@ static void virtnet_napi_do_enable(struct virtqueue *vq, static void virtnet_napi_enable(struct receive_queue *rq) { + struct virtnet_info *vi = rq->vq->vdev->priv; + int qidx = vq2rxq(rq->vq); + virtnet_napi_do_enable(rq->vq, &rq->napi); + netif_queue_set_napi(vi->dev, qidx, NETDEV_QUEUE_TYPE_RX, &rq->napi); } static void virtnet_napi_tx_enable(struct send_queue *sq) { struct virtnet_info *vi = sq->vq->vdev->priv; struct napi_struct *napi = &sq->napi; + int qidx = vq2txq(sq->vq); if (!napi->weight) return; @@ -2843,20 +2848,28 @@ static void virtnet_napi_tx_enable(struct send_queue *sq) } virtnet_napi_do_enable(sq->vq, napi); + netif_queue_set_napi(vi->dev, qidx, NETDEV_QUEUE_TYPE_TX, napi); } static void virtnet_napi_tx_disable(struct send_queue *sq) { + struct virtnet_info *vi = sq->vq->vdev->priv; struct napi_struct *napi = &sq->napi; + int qidx = vq2txq(sq->vq); - if (napi->weight) + if (napi->weight) { + netif_queue_set_napi(vi->dev, qidx, NETDEV_QUEUE_TYPE_TX, NULL); napi_disable(napi); + } } static void virtnet_napi_disable(struct receive_queue *rq) { + struct virtnet_info *vi = rq->vq->vdev->priv; struct napi_struct *napi = &rq->napi; + int qidx = vq2rxq(rq->vq); + netif_queue_set_napi(vi->dev, qidx, NETDEV_QUEUE_TYPE_RX, NULL); napi_disable(napi); } @@ -2870,9 +2883,23 @@ static void refill_work(struct work_struct *work) for (i = 0; i < vi->curr_queue_pairs; i++) { struct receive_queue *rq = &vi->rq[i]; - virtnet_napi_disable(rq); + /* + * When queue API support is added in the future and the call + * below becomes napi_disable_locked, this driver will need to + * be refactored. + * + * One possible solution would be to: + * - cancel refill_work with cancel_delayed_work (note: + * non-sync) + * - cancel refill_work with cancel_delayed_work_sync in + * virtnet_remove after the netdev is unregistered + * - wrap all of the work in a lock (perhaps the netdev + * instance lock) + * - check netif_running() and return early to avoid a race + */ + napi_disable(&rq->napi); still_empty = !try_fill_recv(vi, rq, GFP_KERNEL); - virtnet_napi_enable(rq); + virtnet_napi_do_enable(rq->vq, &rq->napi); /* In theory, this can happen: if we don't get any buffers in * we will *never* try to fill again. @@ -5650,8 +5677,11 @@ static void virtnet_freeze_down(struct virtio_device *vdev) netif_tx_lock_bh(vi->dev); netif_device_detach(vi->dev); netif_tx_unlock_bh(vi->dev); - if (netif_running(vi->dev)) + if (netif_running(vi->dev)) { + rtnl_lock(); virtnet_close(vi->dev); + rtnl_unlock(); + } } static int init_vqs(struct virtnet_info *vi); @@ -5671,7 +5701,9 @@ static int virtnet_restore_up(struct virtio_device *vdev) enable_rx_mode_work(vi); if (netif_running(vi->dev)) { + rtnl_lock(); err = virtnet_open(vi->dev); + rtnl_unlock(); if (err) return err; } From patchwork Fri Mar 7 01:12:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 14005648 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B35418C337 for ; Fri, 7 Mar 2025 01:12:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309950; cv=none; b=YyC0DE819ibqpZBrqp+QPQmaG/wUBkKqDxY915KtNuE+htJcrgaVQmnSRx808d/K0rXmemFU3D3kAOXYKNrYc3KZmDR71HPQ5GxpSCsnHAQDuAQMxLnqKNk7QsjbcajJqUVBJ1YL0N21lXSx6qwV+/zbRYHvCc0MwNvSjniB+lA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741309950; c=relaxed/simple; bh=NRQvfEmcLOdbXMa3vkDoUqv3L83HRqj8sSJXVTmzeH4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZmZ9VKvH1IiH1wMs+zOIyZRRSF97qNkCaPLJQUcEGgf7HtqCp7hAhZlK+vfH6sLqqVP/gPZezsXZ3XuBWabqyvuEzherrcH78xpLjLrmYGfaqg+fSN7dRqP4mJN1/d0WDTZ+Li5PcY5M0cAm2ACzhy+D/VCD8Y7TMypC3UEnzZs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=IpeKEemI; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="IpeKEemI" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2234e5347e2so24928165ad.1 for ; Thu, 06 Mar 2025 17:12:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1741309947; x=1741914747; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UXXMV7POf8zFLVgsmU4lqm240SOUGeBUlbPBBPUwDdE=; b=IpeKEemISXj8LM8F4+azipgqCDQIoWZO3WOO9dCpSsKymcU3CsKSadAZb3s8CpYxgj TUKz2BFrJsF9riuu69GT7d7YaurN0owT2jm4+Rb/MklWggf4fCc61SUL4lJ4sYgFa5UU zna0omr+SSTI9fp0JOJPRAsyH1vmOhh6kJZOY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741309947; x=1741914747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UXXMV7POf8zFLVgsmU4lqm240SOUGeBUlbPBBPUwDdE=; b=T3kNJX/oX7smzkSOHiSGZz8cCfOlzB4SiFQiqC0r8wSzi6jhX262YMISCNwsXpj5G8 rxJ0/5cq/LSW+9MRF1HpSu5MYSWBR50C1VdFi2oMEBbB3vjnCoios3E1myH5+akGUQ+8 TnWRXUVUBjSQbf6Wwjqf8+f88DLyyVeljXgmxJ+1QyRrPpnfPyb/UJbqCo5XTgb0wnXl qRNqfOIY0Dty/NlMEhXbdHaWF5aYEbU8sqifwIJzqyyR+ifs7MNLtTI5dsnn4klIyRHG bt7X29Li90MCvu4esWfwcvIPKDF7XkAOUNklpNvjwmHao/fY4+7hMhRWRVkxNfwlHucY 9DTg== X-Gm-Message-State: AOJu0YwDlwSbGbjYWZmzH8c/rY9/e5ivK5MWDnN2aliWCDauDzcaa9sC WlSdb/rzFSuKFlhrpi60FL0kLRfk9HrNBcxqt81nbsVML/s9iUUPQT7HD5B4vdZO6eMBi1oBBQh pPx1gVXU6GMTUSJFQhfTT++NOWTkKmFGHFGHF5LpZJBVpWW1AP4VNz0PrRXOYo4ofUA73K70VFV tOvyC3D8VOgVSTB+EtGRRaA5OW+RYDp+RuTvEeVg== X-Gm-Gg: ASbGncsq06yueUE12pyGumF6FM57ayDacaVtVxh2wlPtGdieYIZ2I0od2jp7jCd3vpY pbxhkMtUR5fbMxTc/Bprrw3dPMcxH4HCxAcJ9Hi67nUcd0b1AxHCAImo5TsA/kMKppam1RGD8ry SwKCUoXB9Ju9CBo1jl0lZ6IHtEh2Pqd83YJQusjEF4TLz/w5t8HPu0oXbJ3Rmcw7h9qYJP3U0TX 3TZovnv4lrqXbbf++OzL803Owj8JDR0KPoTxTJPYWH0dZnR07iF+Rkgu65UhDp1OKtArIV+hlk9 aMYkh6/tv5PgDpOeOINLaHd9CUcbLqnNhCDdo5gBHkutCHbyrCrX X-Google-Smtp-Source: AGHT+IFK3bB+IzKnnw66OCX8SvIqCP/r2HrOrRFyFYXEFX5hk5hRRIZRcJqImQVh7tFSujAdQgGJ9A== X-Received: by 2002:a17:903:32c6:b0:224:13c0:58e3 with SMTP id d9443c01a7336-22428bf1976mr19677025ad.51.1741309946772; Thu, 06 Mar 2025 17:12:26 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22410abc816sm18749685ad.258.2025.03.06.17.12.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Mar 2025 17:12:26 -0800 (PST) From: Joe Damato To: netdev@vger.kernel.org Cc: mkarsten@uwaterloo.ca, gerhard@engleder-embedded.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, kuba@kernel.org, mst@redhat.com, leiyang@redhat.com, Joe Damato , =?utf-8?q?Eugenio_P?= =?utf-8?q?=C3=A9rez?= , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , virtualization@lists.linux.dev (open list:VIRTIO CORE AND NET DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v6 4/4] virtio_net: Use persistent NAPI config Date: Fri, 7 Mar 2025 01:12:12 +0000 Message-ID: <20250307011215.266806-5-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250307011215.266806-1-jdamato@fastly.com> References: <20250307011215.266806-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Use persistent NAPI config so that NAPI IDs are not renumbered as queue counts change. $ sudo ethtool -l ens4 | tail -5 | egrep -i '(current|combined)' Current hardware settings: Combined: 4 $ ./tools/net/ynl/pyynl/cli.py \ --spec Documentation/netlink/specs/netdev.yaml \ --dump queue-get --json='{"ifindex": 2}' [{'id': 0, 'ifindex': 2, 'napi-id': 8193, 'type': 'rx'}, {'id': 1, 'ifindex': 2, 'napi-id': 8194, 'type': 'rx'}, {'id': 2, 'ifindex': 2, 'napi-id': 8195, 'type': 'rx'}, {'id': 3, 'ifindex': 2, 'napi-id': 8196, 'type': 'rx'}, {'id': 0, 'ifindex': 2, 'type': 'tx'}, {'id': 1, 'ifindex': 2, 'type': 'tx'}, {'id': 2, 'ifindex': 2, 'type': 'tx'}, {'id': 3, 'ifindex': 2, 'type': 'tx'}] Now adjust the queue count, note that the NAPI IDs are not renumbered: $ sudo ethtool -L ens4 combined 1 $ ./tools/net/ynl/pyynl/cli.py \ --spec Documentation/netlink/specs/netdev.yaml \ --dump queue-get --json='{"ifindex": 2}' [{'id': 0, 'ifindex': 2, 'napi-id': 8193, 'type': 'rx'}, {'id': 0, 'ifindex': 2, 'type': 'tx'}] $ sudo ethtool -L ens4 combined 8 $ ./tools/net/ynl/pyynl/cli.py \ --spec Documentation/netlink/specs/netdev.yaml \ --dump queue-get --json='{"ifindex": 2}' [{'id': 0, 'ifindex': 2, 'napi-id': 8193, 'type': 'rx'}, {'id': 1, 'ifindex': 2, 'napi-id': 8194, 'type': 'rx'}, {'id': 2, 'ifindex': 2, 'napi-id': 8195, 'type': 'rx'}, {'id': 3, 'ifindex': 2, 'napi-id': 8196, 'type': 'rx'}, {'id': 4, 'ifindex': 2, 'napi-id': 8197, 'type': 'rx'}, {'id': 5, 'ifindex': 2, 'napi-id': 8198, 'type': 'rx'}, {'id': 6, 'ifindex': 2, 'napi-id': 8199, 'type': 'rx'}, {'id': 7, 'ifindex': 2, 'napi-id': 8200, 'type': 'rx'}, [...] Signed-off-by: Joe Damato Reviewed-by: Xuan Zhuo Reviewed-by: Gerhard Engleder Acked-by: Jason Wang Acked-by: Michael S. Tsirkin Tested-by: Lei Yang --- drivers/net/virtio_net.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 7bd63a677123..34cec2b11b74 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -6455,8 +6455,9 @@ static int virtnet_alloc_queues(struct virtnet_info *vi) INIT_DELAYED_WORK(&vi->refill, refill_work); for (i = 0; i < vi->max_queue_pairs; i++) { vi->rq[i].pages = NULL; - netif_napi_add_weight(vi->dev, &vi->rq[i].napi, virtnet_poll, - napi_weight); + netif_napi_add_config(vi->dev, &vi->rq[i].napi, virtnet_poll, + i); + vi->rq[i].napi.weight = napi_weight; netif_napi_add_tx_weight(vi->dev, &vi->sq[i].napi, virtnet_poll_tx, napi_tx ? napi_weight : 0);