From patchwork Thu Feb 27 18:50: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: 13995022 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (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 AE2C426D5DB for ; Thu, 27 Feb 2025 18:50:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740682245; cv=none; b=VC4JzTq//L2PwsgriFs++FAZhoflzGrgiaLyj3zoLMVyQ+PQ+G3QaHM17cD6RgL4T3QZxiOn1Z8/6oHOIlKn32D+cwCycm2nR7o6lI5tpMe2vhqP3WbBRyZFT5VYWfOyeWqBeZH6Y7E8owa/ZwikMHFwU0rOpIHUtokNdcDLj8E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740682245; c=relaxed/simple; bh=oZEKZBNyzTFUQoyDm8VLIwp8l+Uss/+aDmlef+L4zKU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CMAMdaRa45fsysMata4eOprwVJggkrs6upGF9cQ8trPEmOr3RJROZS9cv8yrw3Yu2mi0C3pd1zvvuL8Qd9fiC+AdODKA1PU2KbJ0O1lX/BGPlHwNhSTcqVM7Ba6c19V6LVqTLy+ufwdWXcpWrWF9tSANqoZPeZsf5d5cCIJXXYk= 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=kvPpHehL; arc=none smtp.client-ip=209.85.214.173 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="kvPpHehL" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2234e5347e2so27346445ad.1 for ; Thu, 27 Feb 2025 10:50:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1740682242; x=1741287042; 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=kvPpHehLh7QX0nSvKrLbXx4/cHGp+YLaVXCWWPUl+dxWThUR8cnF5fejruKOzNNypl BjGRw/eyAuIgj+H1GnV5NQN3nViT1UiCx9BATchjVOjwstU0eloQ6dyR2VeXyU6VvsaZ EdGR4zUNTPm8ddCO9zXkwZuYma+4ddcpXGsCQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740682242; x=1741287042; 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=Q2gOFv7k7vUhz1/AqQzRxIYSDBrMNaNb2jhKem859yF62D/YOZlx+nScTvZ7exO127 Rp2fvMAcu6bIBlvJovLevvP2ItYTsHP70eirPBLPRLEoebFolWnYZWZZUCvXzSzBGzBS Z63vXhMP4CEDTLgrNlqPXv0FeH6g0hnmAydXGqK3TUOL9qyDN34jyzYHhMdh9USdObvU /wW87/5ShxoMTwDy5N8WUJrtNxHeyNHP+B1CHkOl9UcI5vzQZPtIaBVMpeXjZrGhK+um elsOCtm3XxDwFxb4rrgl8VT2GmNu1UBWysWaniRQGq9wo8bEZTDkAxPzogQLREyNBuOu R3WQ== X-Gm-Message-State: AOJu0Yw8Rl1sSIGlnmv18kErDS+CvJ1Zbkf3C6dX4pkk2JNVoBN/TC9p yuuxqVEz6XzMNTEsD5M/nNKhLJsShtJxPlYzX0iH0MuoSy3UN/UYss2/uy3ABHxCaFrNtmX8v0W beUhPI9vSurtpiTjPU8c5QjvYY4jaEmhE4g7cX7IB5GYcv4yPQUIwBL3SFdDluFBNXK9rJinBbQ AjbRr9FwX5E4ghuGGpsYe07SLiEahl3D6NyVxoBg== X-Gm-Gg: ASbGncsEUl9b0riw1mN0WR0wIV53x8fB4S4T481e25x0l2aWiFEe0LzCA6ueB1o+OxG AZFwJH40llnMP668RzzSy/wVL7c6HoHwGtDk52ji6fmeIKyVfKwgmZQlUeg45fdEuxzCOJEN7NM cNECp0ZoFvUcHE0Mqf3TyVrVxKh3LtbtjaNabZl4aM7oqWALR7aFHTnC59GVMKCItkPAJN0GUus K5b7d1A6QzAqMFGv3lGGHoWuGjlu82V63ZpAZmNehHu72zhDdJsvJ/SGA6sHEHYLs/U8vXmpqo5 WuQfJP6ZVvDHcJczbZqGC1QKYKLZXC8PQg== X-Google-Smtp-Source: AGHT+IGZcb+iC6eZQd5zAGhqgRUruIqyeQKBvaS/JmNMwuWmIIK9UyEnnF0UseSHFo77HzWGMN4JpA== X-Received: by 2002:a17:902:fccf:b0:220:e63c:5b08 with SMTP id d9443c01a7336-22368f6a1b5mr3409305ad.11.1740682242112; Thu, 27 Feb 2025 10:50:42 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22350503eb9sm18275985ad.193.2025.02.27.10.50.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 10:50:41 -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 v5 1/4] virtio-net: Refactor napi_enable paths Date: Thu, 27 Feb 2025 18:50:11 +0000 Message-ID: <20250227185017.206785-2-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250227185017.206785-1-jdamato@fastly.com> References: <20250227185017.206785-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 Thu Feb 27 18:50: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: 13995023 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 35D9126E622 for ; Thu, 27 Feb 2025 18:50:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740682246; cv=none; b=U0HXrnbHp82PD9EjnIl0oaEwv/sXSew3LTT4H1BmxfreGeJcfXOCKDT0DNNspYHoPg5KiVuWveK9M6dHNwzE+q1qm9hj4nvYNzDVlGN7dAzz75AJ+TeT2cc6H4eRQw5IZ4YZdxREopEzcuVCJHPT+hk1p5ypMV4iCW+7OSirpDY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740682246; c=relaxed/simple; bh=yAvpgVVKv0qwVx/BcaJPPk6io7i8uqUMf303YSpg6Bc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mGzhMxRLNi8g0dCoTsx0dhQtEX42B6DamoCSthySMS2HP4XBXBxXe870FCnTMIJL01Gb3vQUwSFrPxz/G+qB9bcbBD8mZsAmAi9zZ+Qhc58Hd0tncRJb9dL00zaeRznLxVc5cy6w/nzux6x8SoXsGKIl0YiI6d3ZyRMrtrr89N8= 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=Ij+Yj6ef; arc=none smtp.client-ip=209.85.214.175 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="Ij+Yj6ef" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-220c8f38febso26518715ad.2 for ; Thu, 27 Feb 2025 10:50:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1740682244; x=1741287044; 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=Ij+Yj6efCnaOTDAfh4AWIN1PMa8RpbRuEs92Zkmm0FOrPQSvSwoLXPD9Cg0v3WZG6j VM1bYerrqXtV4yYyazwsMl78/j4/Bs8f7CYVv5OH7jCqtWywgINzkFmcHzXU8fjoER7c Mx9QQd2pmoAHnAKnxrdOpsqvkLJGiHo/ih/30= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740682244; x=1741287044; 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=WvVU8m6djel65D/GSSuRPNMac7kUQRZbLaNL1Lx8wCIcZCppJTfEVmmKztIlOoHBmU 0zaNA90+ffSvii7C94sk+fLwyqFuV+Wh1f/R8xAC7gVddek8LBuE/EEPywZhWrr8mq+6 dIsVAYyuCBfFXx3ufSjMJ9Ej4MYgXbijPT3lviWTD3G6rmmSBIOL3cnKsn2m1x1KJoea kxzjHTu+IOYXQlu+Nh/jkKQ6IBDUUA9M+dNotbrwjOKm4edvV0JyIvG9l+4HGKHPPFmT fZu+NBY+mS2DGcV4cvfsjfkPhwlGl9YaG6s8Q8HBCwDxFk4J1A6XMGSTa2ONDanGYFx7 2qIQ== X-Gm-Message-State: AOJu0Yzw8dPW9ap1N5+YYMZH2WShJ6h/4ileQisnAaZt2/9UDGxQWR6c SdJjIjJ4u5n+uPqPt4j+H/WldMP021JmhHcCRXELqqKPkzWR1r/iYw0tiTzsleZv5Gqqn5jVArc acwq8xHAjmb0cP2FFzWjvCSK1scE1MNwFllVLLLSvUpxdkCqIXRcSy2iZAh0+VyI1IFYrbLah60 241/9k+h80M/pNpvtr7pFeU0ODdYY2AM7Q/SwlPQ== X-Gm-Gg: ASbGncu1sGOaAEamGlhzohwq+uFIAhuBB/z+5AYA7YRAsmuRm+V7Fo9eTJId6oROgKn 2tkpHPKgwVVJolvnG5G0wBmcX/R00FeKDEHjGkwUFmDf3Sujhx9iFCUYmjcOoqgpI3S5hI2AhP6 Q/DlUcYKlsWjmqTGy66iHHA+1sSJegB+I39+S6psYPAargD3MWXoW8FkgpTzfu3LSDFomY1T3bf X9XiJPZMc4pusW9arzBy4HusKwjVBHVQwsjyf+0iSpV7Iwcb4dBfgdZ4wDF7npZw7s+wpSJ+Gg4 iGolzQfIRfX9TOUGqY3Qnt+3PvtPGG9Txg== X-Google-Smtp-Source: AGHT+IG/mIbJ7+AwlpU7kzFyTXUYqGruYlMGaC/kiigMhtr+Deogz9sMy/ksGfgjZazdRJbKbvfNCw== X-Received: by 2002:a17:902:cec1:b0:223:5945:ffd5 with SMTP id d9443c01a7336-2236925558dmr3548155ad.32.1740682243894; Thu, 27 Feb 2025 10:50:43 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22350503eb9sm18275985ad.193.2025.02.27.10.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 10:50:43 -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 v5 2/4] virtio-net: Refactor napi_disable paths Date: Thu, 27 Feb 2025 18:50:12 +0000 Message-ID: <20250227185017.206785-3-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250227185017.206785-1-jdamato@fastly.com> References: <20250227185017.206785-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 Thu Feb 27 18:50:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 13995024 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 04C5526E150 for ; Thu, 27 Feb 2025 18:50:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740682248; cv=none; b=jNLtOGyITlTboIjc4hLMbcZGb9SsDfRDJeQ9y2u//Ri41oZ22svDrpXtDPEcfNir1i/0PqdJgTxZyXk2eXOrMZmtz5Dqf5MYaOjDGNOz5sObW/HFpXc80hwWazrRoOIDwWkeDrSQO7U1lh4uSziTpV02aX8788ltyrVQmtF7RI4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740682248; c=relaxed/simple; bh=ruLhp//Dblw3Q1cnTDsehC77vyCvqCtIvwsJ3QV+GLo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pAJC11byd9C+V6elcn7h4SoBC8epYQ+wt8Ko7e31ZhbvYLRvQj19WNAo2d0ZvahxkzCXKkkqwD1oA1dZaTJ6cWqWK1eNU5Ew5EpQGGc9Dz1rne4ih+Dkdl0+NIepHSDyCU6zr7fP/w1sfzGIk2hxYiY7bevxlB2sNopLef53Lmk= 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=bHtY1XH8; arc=none smtp.client-ip=209.85.214.182 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="bHtY1XH8" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-22359001f1aso23744025ad.3 for ; Thu, 27 Feb 2025 10:50:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1740682246; x=1741287046; 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=urTnWtLOZR1ii67wvyGmGFIgFDC5fRLxfMV5fbOG6tQ=; b=bHtY1XH8Ler7KSIYIt1+r11/hhJQ9PTVHZ2HBeaopyd8ttco5eya0Y70mbcMWBCW6L AqlN7/gYSbd53g4YnXXhd7/JvIvbGynLYwFzX9s6OdfJkG88JOrmfJsibwhGqFWfRscb miVtNn8BfDmHul6oVTU1TZg7ZHjsbwgy+Ce40= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740682246; x=1741287046; 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=urTnWtLOZR1ii67wvyGmGFIgFDC5fRLxfMV5fbOG6tQ=; b=v93tzdgaBBUuZM6EcVWHmhJ8N5uFG/DaSWrGnkzelcxGlYVlSKDozYPncc1AuhrXQR E5F8JHpwfA+agpUA03/aD/rmL9GmzrQ3fUJG6Z182NIR4U8X+QZVlX3YsBRAjAjRnmrm XZsw9W/3i+BoPjTEVTxZewxbruqUDxr2rN08vPXM53+sqm5ZURPDcpFbvN3ploDXAGT1 vKvxGAAPs54SIFkWthLR4kuwc5kaf2d2NAXzgK0VDNh4RzU696pkfPoo3+Q99nKpabCF 9lKu9fGtUo8AS0FvTUFxLcRigc1cDf4bZuO7Cn8KmCLV1n/zqF536vwsJ1bo73r/dhzu u0cw== X-Gm-Message-State: AOJu0Yy0QbU5MgdxheI5f/x2Z8vJ7PJ4WsYlUvC1dJgOYvncMtsU0/Gc 858dDyxcXqmzoiBgV5qmM2VdMGptnITWN1F9ct/e+5ZZjE4tWTxfbsJYUjbadSQjDmCa3oidnPL jTG55wo+BK4KuH2kChQk1+J7EFy2CsEO4BKa9JwzsVHs4NYGh0vfxUBNmvqggSF8QSawWPAR8x+ pAL7YgBNZqIE+wVWptsg4mjwu1U1UZ1Qgh0FVePQ== X-Gm-Gg: ASbGncuQYGOrjl1khDrcIpYeFDNZGikALuozIrcyLQbXSoihjWNapGAcfs5QQqVEpLB A4R+ftCuyybWcXQ+xYlxbvRAYpaTUfidksloF4ZZSQGxAM7n6oPAe9NaDmn5r4HC/Q/MN2iAGCE xeHik6ZF7Ert/UxpJfU+QwkNl9cFeGPw46KBeEZGkIeWvkfJ3bStNNlRQIMCzMGGFTQitbL1Trj yTfgt56f6g/wKKX8LE7tDFaHH0wDWshXEW2mgdN5/gVqyf7Ttehe3C9dY36bpvq4u/d80YGWg+Q DbuVCy8c8Kuj/6zHVFikEmC8djjDvU2vbg== X-Google-Smtp-Source: AGHT+IHu5hlvHH5LXXz1OMUSyDQuYBfGMEi0ghDf4USSKQwpy74Ccia4YTH/3ePDByGZSW6VYZTrMg== X-Received: by 2002:a17:903:32cf:b0:223:6744:bfb7 with SMTP id d9443c01a7336-22368f732c9mr3587465ad.8.1740682245661; Thu, 27 Feb 2025 10:50:45 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22350503eb9sm18275985ad.193.2025.02.27.10.50.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 10:50:45 -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 v5 3/4] virtio-net: Map NAPIs to queues Date: Thu, 27 Feb 2025 18:50:13 +0000 Message-ID: <20250227185017.206785-4-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250227185017.206785-1-jdamato@fastly.com> References: <20250227185017.206785-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. - refill_work, which has been updated to hold 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 | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index e578885c1093..76dcd65ec0f2 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,15 @@ static void refill_work(struct work_struct *work) for (i = 0; i < vi->curr_queue_pairs; i++) { struct receive_queue *rq = &vi->rq[i]; + rtnl_lock(); virtnet_napi_disable(rq); + rtnl_unlock(); + still_empty = !try_fill_recv(vi, rq, GFP_KERNEL); + + rtnl_lock(); virtnet_napi_enable(rq); + rtnl_unlock(); /* In theory, this can happen: if we don't get any buffers in * we will *never* try to fill again. @@ -5650,8 +5669,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 +5693,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 Thu Feb 27 18:50:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 13995025 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 8B85326E97A for ; Thu, 27 Feb 2025 18:50:48 +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=1740682250; cv=none; b=O0BeV2/gla2P6M1wiEkSIYv8UBNG/cDS3GxT3yB8qoS2Rs3DRL8rZ/kgnxQcXruVSOYEzjpnx/YDqZjOqM+QjiQ+T8Gyd8xUuSvbbbsCz4SI5toY66oI65fENGicpzbqHkhFm/aMxDIbGmt07UGS2FmxK9mNlBzBNoxRb90UL8A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740682250; c=relaxed/simple; bh=+SIdCL906LeLrhIoYRKYJT9sFHmdHFgcMAfsYXihQ1M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TaPbZU5WUQn/W4KIYxNdZ8bWkFOqB63JTNv7OPxaXhoGFYmpYHBeqhLGw+ev4P02AitmjgSrHNpzirxmLXhWQ5Vcwi3cSoRMPyts55K0Ub0uvltNsiHbl3igcrkUg5tHbV60Ixs1mK/XFW/vhAZ8t84pLw0o9MBnifqN1fuzKtA= 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=aFjPgxMg; 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="aFjPgxMg" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-220c8f38febso26519385ad.2 for ; Thu, 27 Feb 2025 10:50:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1740682247; x=1741287047; 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=Nb0M0TRCtHIEHCHSiRXPcmJ/ChrocE4CL7Co5HwgWeE=; b=aFjPgxMgDDx695S2YkqepH3rnw3sJcAl7sMRv4tEkZc1OctwYJ9WJvFBrsWn0XLTTx X/7hgcpnofXkqQ+VVnzNouTrgbjq3VmzcNxy3ObIwVuIMat7QNoZnR6VHDGommWO3/24 2Dkzm3d0NBsjevShpqOh5dzhDmcMxiQbQQiVs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740682247; x=1741287047; 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=Nb0M0TRCtHIEHCHSiRXPcmJ/ChrocE4CL7Co5HwgWeE=; b=FoDhB1rkLX3xWrx2jZ7UsyF9siFUVZmWukhMNRiHpR1gXDWozDkbooH2VAGPa+PppM 0Jq8/O+6U4D8dHst1sI27Raa5KRneXJZJGrv3TDtWJ7rjJo3ELmChefAeSv/AzorZ48L 7xH6CITuH4PCRGUwbjGAmTX4tEZWjVdY6MdP5AYJfFsuW3wWZk1eUXTtxbQPzXkJfSCm UPl/okQi8C9IhO1tD/lLP6bXRiAcgOuwIDu3cWAS7bvCj1igS34fV23StiTV2shSVSbB CjfSHFps0yaXV5ycpIqEY6SLXGELDqbeZWfizE01kukJRxspxzF4QjaSg211nGkHLosY vmsQ== X-Gm-Message-State: AOJu0Yxo0Qr67957sCwcbC7dDEZuVu6jQmfGcT8PormYrLxCg8ffmvsL 84zOTfjnys4waqaCzEV09cOEzcJs7zIsJ/Ig+KiMrLln8t18o2JRoewYJtFxt/zAPsD2ghd1ZYp zxVh4iyjxv3Olxmrd8kYqUU9lWvVgEVpHlfQif+BGFFTuGr6tQQsZe03hvXmlrVkwKq8YwLWYpb svpgdqJ2ocskxP8CtHdHCk2AmpYs4KY3iHL/I95w== X-Gm-Gg: ASbGncv7KIHHbwIyAdU8czW6leGQpoMWlbyGkrroWnT/C8QYQ008UntxHexQIDDXqvz eyF2pPrNPjBxQ8fRNujuQ5aOBckjnkd8NkLb0okXVTtk9q9K/Ev4BRJbJ/GqlrVV8fzzbVvhnEn BAh864YE+1Az580gSDFJl9KECKO4NDXJN3VuOzJNJvZEoqv4mtIyIo4SNp8e1bASelIRFGwvboD xvZvKI6Ru8laUkI1PnQWW7m27EyLGRN1b8D+KJSq3F2Jj0Q4Pb4b1j2hZV49nKNR3HrbSjfyw8x ad1nw9QlFibNYebclmnblAjbtwKM79Fkfg== X-Google-Smtp-Source: AGHT+IG09PRDodbXU23HoxlyyGWid4dyJeVF4PnAlwJOPsZe6tyJoXz4u2UsXV4jPCtXuFyfiaBoWQ== X-Received: by 2002:a17:902:c951:b0:221:78a1:27fb with SMTP id d9443c01a7336-22368f72060mr3908095ad.11.1740682247418; Thu, 27 Feb 2025 10:50:47 -0800 (PST) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22350503eb9sm18275985ad.193.2025.02.27.10.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2025 10:50:46 -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 v5 4/4] virtio_net: Use persistent NAPI config Date: Thu, 27 Feb 2025 18:50:14 +0000 Message-ID: <20250227185017.206785-5-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250227185017.206785-1-jdamato@fastly.com> References: <20250227185017.206785-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 76dcd65ec0f2..8569b600337f 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -6447,8 +6447,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);