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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




在 2022/2/21 上午11:40, Jason Wang 写道:

在 2022/2/17 下午5:30, Xuan Zhuo 写道:
On Thu, 17 Feb 2022 15:21:26 +0800, Jason Wang <jasowang@xxxxxxxxxx> wrote:
On Wed, Feb 16, 2022 at 3:52 PM Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> wrote:
On Wed, 16 Feb 2022 12:14:31 +0800, Jason Wang <jasowang@xxxxxxxxxx> wrote:
On Mon, Feb 14, 2022 at 4:14 PM Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> wrote:
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





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



Thanks.

Thanks

Thanks.


etc.

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

Thanks

Signed-off-by: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx>
---
  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





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux