Thread (42 messages) flat view 42 messages, 3 authors, 2022-02-21

Re: [PATCH v5 20/22] virtio_net: set the default max ring num

From: Jason Wang <hidden>
Date: 2022-02-21 07:00:36
Also in: bpf, netdev

在 2022/2/21 上午11:40, Jason Wang 写道:
在 2022/2/17 下午5:30, Xuan Zhuo 写道:
quoted
On Thu, 17 Feb 2022 15:21:26 +0800, Jason Wang [off-list ref] 
wrote:
quoted
On Wed, Feb 16, 2022 at 3:52 PM Xuan Zhuo 
[off-list ref] wrote:
quoted
On Wed, 16 Feb 2022 12:14:31 +0800, Jason Wang 
[off-list ref] wrote:
quoted
On Mon, Feb 14, 2022 at 4:14 PM Xuan Zhuo 
[off-list ref] wrote:
quoted
Sets the default maximum ring num based on 
virtio_set_max_ring_num().

The default maximum ring num is 1024.
Having a default value is pretty useful, I see 32K is used by 
default for IFCVF.

Rethink this, how about having a different default value based on 
the speed?

Without SPEED_DUPLEX, we use 1024. Otherwise

10g 4096
40g 8192
We can define different default values of tx and rx by the way. 
This way I can
just use it in the new interface of find_vqs().

without SPEED_DUPLEX:  tx 512 rx 1024
Any reason that TX is smaller than RX?
I've seen some NIC drivers with default tx smaller than rx.

Interesting, do they use combined channels?

Adding Ling Shan.

I see 32K is used for IFCVF by default, this is another call for the 
this patch:

# ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX:        32768
RX Mini:    0
RX Jumbo:    0
TX:        32768
Current hardware settings:
RX:        32768
RX Mini:    0
RX Jumbo:    0
TX:        32768

Thanks

quoted
One problem I have now is that inside virtnet_probe, init_vqs is 
before getting
speed/duplex. I'm not sure, can the logic to get speed/duplex be put 
before
init_vqs? Is there any risk?

Can you help me?

The feature has been negotiated during probe(), so I don't see any risk.

Thanks

quoted
Thanks.
quoted
Thanks
quoted
Thanks.

quoted
etc.

(The number are just copied from the 10g/40g default parameter from
other vendors)

Thanks
quoted
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
---
  drivers/net/virtio_net.c | 4 ++++
  1 file changed, 4 insertions(+)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index a4ffd7cdf623..77e61fe0b2ce 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -35,6 +35,8 @@ module_param(napi_tx, bool, 0644);
  #define GOOD_PACKET_LEN (ETH_HLEN + VLAN_HLEN + ETH_DATA_LEN)
  #define GOOD_COPY_LEN  128

+#define VIRTNET_DEFAULT_MAX_RING_NUM 1024
+
  #define VIRTNET_RX_PAD (NET_IP_ALIGN + NET_SKB_PAD)

  /* Amount of XDP headroom to prepend to packets for use by 
xdp_adjust_head */
@@ -3045,6 +3047,8 @@ static int virtnet_find_vqs(struct 
virtnet_info *vi)
                         ctx[rxq2vq(i)] = true;
         }

+       virtio_set_max_ring_num(vi->vdev, 
VIRTNET_DEFAULT_MAX_RING_NUM);
+
         ret = virtio_find_vqs_ctx(vi->vdev, total_vqs, vqs, 
callbacks,
                                   names, ctx, NULL);
         if (ret)
-- 
2.31.0
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help