From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
To: netdev@vger.kernel.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Jesper Dangaard Brouer" <hawk@kernel.org>,
"John Fastabend" <john.fastabend@gmail.com>,
virtualization@lists.linux.dev, bpf@vger.kernel.org
Subject: [PATCH net-next v7 07/10] virtio_net: xsk: support wakeup
Date: Fri, 5 Jul 2024 15:37:31 +0800 [thread overview]
Message-ID: <20240705073734.93905-8-xuanzhuo@linux.alibaba.com> (raw)
In-Reply-To: <20240705073734.93905-1-xuanzhuo@linux.alibaba.com>
xsk wakeup is used to trigger the logic for xsk xmit by xsk framework or
user.
Virtio-net does not support to actively generate an interruption, so it
tries to trigger tx NAPI on the local cpu.
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
---
drivers/net/virtio_net.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index cd87b39600d4..29fa25ce1a7f 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1054,6 +1054,29 @@ static void check_sq_full_and_disable(struct virtnet_info *vi,
}
}
+static int virtnet_xsk_wakeup(struct net_device *dev, u32 qid, u32 flag)
+{
+ struct virtnet_info *vi = netdev_priv(dev);
+ struct send_queue *sq;
+
+ if (!netif_running(dev))
+ return -ENETDOWN;
+
+ if (qid >= vi->curr_queue_pairs)
+ return -EINVAL;
+
+ sq = &vi->sq[qid];
+
+ if (napi_if_scheduled_mark_missed(&sq->napi))
+ return 0;
+
+ local_bh_disable();
+ virtqueue_napi_schedule(&sq->napi, sq->vq);
+ local_bh_enable();
+
+ return 0;
+}
+
static int __virtnet_xdp_xmit_one(struct virtnet_info *vi,
struct send_queue *sq,
struct xdp_frame *xdpf)
@@ -5399,6 +5422,7 @@ static const struct net_device_ops virtnet_netdev = {
.ndo_vlan_rx_kill_vid = virtnet_vlan_rx_kill_vid,
.ndo_bpf = virtnet_xdp,
.ndo_xdp_xmit = virtnet_xdp_xmit,
+ .ndo_xsk_wakeup = virtnet_xsk_wakeup,
.ndo_features_check = passthru_features_check,
.ndo_get_phys_port_name = virtnet_get_phys_port_name,
.ndo_set_features = virtnet_set_features,
--
2.32.0.3.g01195cf9f
next prev parent reply other threads:[~2024-07-05 7:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-05 7:37 [PATCH net-next v7 00/10] virtio-net: support AF_XDP zero copy Xuan Zhuo
2024-07-05 7:37 ` [PATCH net-next v7 01/10] virtio_net: replace VIRTIO_XDP_HEADROOM by XDP_PACKET_HEADROOM Xuan Zhuo
2024-07-08 6:18 ` Jason Wang
2024-07-05 7:37 ` [PATCH net-next v7 02/10] virtio_net: separate virtnet_rx_resize() Xuan Zhuo
2024-07-05 7:37 ` [PATCH net-next v7 03/10] virtio_net: separate virtnet_tx_resize() Xuan Zhuo
2024-07-05 7:37 ` [PATCH net-next v7 04/10] virtio_net: separate receive_buf Xuan Zhuo
2024-07-05 7:37 ` [PATCH net-next v7 05/10] virtio_net: separate receive_mergeable Xuan Zhuo
2024-07-05 7:37 ` [PATCH net-next v7 06/10] virtio_net: xsk: bind/unbind xsk for rx Xuan Zhuo
2024-07-08 6:36 ` Jason Wang
2024-07-05 7:37 ` Xuan Zhuo [this message]
2024-07-05 7:37 ` [PATCH net-next v7 08/10] virtio_net: xsk: rx: support fill with xsk buffer Xuan Zhuo
2024-07-08 6:49 ` Jason Wang
2024-07-08 7:57 ` Xuan Zhuo
2024-07-05 7:37 ` [PATCH net-next v7 09/10] virtio_net: xsk: rx: support recv small mode Xuan Zhuo
2024-07-08 7:00 ` Jason Wang
2024-07-08 7:42 ` Xuan Zhuo
2024-07-08 8:08 ` Jason Wang
2024-07-08 8:09 ` Xuan Zhuo
2024-07-05 7:37 ` [PATCH net-next v7 10/10] virtio_net: xsk: rx: support recv merge mode Xuan Zhuo
2024-07-08 8:10 ` Jason Wang
2024-07-05 14:14 ` [PATCH net-next v7 00/10] virtio-net: support AF_XDP zero copy Michal Kubiak
2024-07-08 1:11 ` Xuan Zhuo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240705073734.93905-8-xuanzhuo@linux.alibaba.com \
--to=xuanzhuo@linux.alibaba.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eperezma@redhat.com \
--cc=hawk@kernel.org \
--cc=jasowang@redhat.com \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=virtualization@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.