From: John Fastabend <john.fastabend@gmail.com>
To: Daniel Borkmann <daniel@iogearbox.net>,
eric.dumazet@gmail.com, mst@redhat.com, kubakici@wp.pl,
shm@cumulusnetworks.com, davem@davemloft.net,
alexei.starovoitov@gmail.com
Cc: netdev@vger.kernel.org, bblanco@plumgrid.com,
john.r.fastabend@intel.com, brouer@redhat.com, tgraf@suug.ch
Subject: Re: [net-next PATCH v2 4/5] virtio_net: add dedicated XDP transmit queues
Date: Mon, 21 Nov 2016 07:56:50 -0800 [thread overview]
Message-ID: <58331942.1010009@gmail.com> (raw)
In-Reply-To: <5832DE60.4000200@iogearbox.net>
On 16-11-21 03:45 AM, Daniel Borkmann wrote:
> On 11/20/2016 03:51 AM, John Fastabend wrote:
>> XDP requires using isolated transmit queues to avoid interference
>> with normal networking stack (BQL, NETDEV_TX_BUSY, etc). This patch
>> adds a XDP queue per cpu when a XDP program is loaded and does not
>> expose the queues to the OS via the normal API call to
>> netif_set_real_num_tx_queues(). This way the stack will never push
>> an skb to these queues.
>>
>> However virtio/vhost/qemu implementation only allows for creating
>> TX/RX queue pairs at this time so creating only TX queues was not
>> possible. And because the associated RX queues are being created I
>> went ahead and exposed these to the stack and let the backend use
>> them. This creates more RX queues visible to the network stack than
>> TX queues which is worth mentioning but does not cause any issues as
>> far as I can tell.
>>
>> Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
>> ---
[...]
>> }
>>
>> + curr_qp = vi->curr_queue_pairs - vi->xdp_queue_pairs;
>> + if (prog)
>> + xdp_qp = nr_cpu_ids;
>> +
>> + /* XDP requires extra queues for XDP_TX */
>> + if (curr_qp + xdp_qp > vi->max_queue_pairs) {
>> + netdev_warn(dev, "request %i queues but max is %i\n",
>> + curr_qp + xdp_qp, vi->max_queue_pairs);
>> + return -ENOMEM;
>> + }
>> +
>> + err = virtnet_set_queues(vi, curr_qp + xdp_qp);
>> + if (err) {
>> + dev_warn(&dev->dev, "XDP Device queue allocation failure.\n");
>> + return err;
>> + }
>> +
>> if (prog) {
>> - prog = bpf_prog_add(prog, vi->max_queue_pairs - 1);
>> - if (IS_ERR(prog))
>> + prog = bpf_prog_add(prog, vi->max_queue_pairs);
>
> I think this change is not correct, it would be off by one now.
> The previous 'vi->max_queue_pairs - 1' was actually correct here.
> dev_change_xdp_fd() already gives you a reference (see the doc on
> enum xdp_netdev_command in netdevice.h).
Right, this was an error thanks for checking it I'll send a v3. And
maybe draft a test for XDP ref counting to test it in the future.
.John
next prev parent reply other threads:[~2016-11-21 15:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-20 2:49 [net-next PATCH v2 0/5] XDP for virtio_net John Fastabend
2016-11-20 2:49 ` [net-next PATCH v2 1/5] net: virtio dynamically disable/enable LRO John Fastabend
2016-11-21 23:23 ` Michael S. Tsirkin
2016-11-22 8:16 ` John Fastabend
2016-11-20 2:50 ` [net-next PATCH v2 2/5] net: xdp: add invalid buffer warning John Fastabend
2016-11-20 2:50 ` [net-next PATCH v2 3/5] virtio_net: Add XDP support John Fastabend
2016-11-21 23:20 ` Michael S. Tsirkin
2016-11-22 8:27 ` John Fastabend
2016-11-22 14:58 ` Michael S. Tsirkin
2016-11-25 21:24 ` John Fastabend
2016-11-28 3:36 ` Michael S. Tsirkin
2016-11-28 3:56 ` John Fastabend
2016-11-28 4:07 ` Michael S. Tsirkin
2016-11-28 23:26 ` John Fastabend
2016-11-20 2:51 ` [net-next PATCH v2 4/5] virtio_net: add dedicated XDP transmit queues John Fastabend
2016-11-21 11:45 ` Daniel Borkmann
2016-11-21 15:56 ` John Fastabend [this message]
2016-11-21 23:13 ` Michael S. Tsirkin
2016-11-22 8:17 ` John Fastabend
2016-11-22 14:59 ` Michael S. Tsirkin
2016-11-20 2:51 ` [net-next PATCH v2 5/5] virtio_net: add XDP_TX support John Fastabend
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=58331942.1010009@gmail.com \
--to=john.fastabend@gmail.com \
--cc=alexei.starovoitov@gmail.com \
--cc=bblanco@plumgrid.com \
--cc=brouer@redhat.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=john.r.fastabend@intel.com \
--cc=kubakici@wp.pl \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=shm@cumulusnetworks.com \
--cc=tgraf@suug.ch \
/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.