Re: [PATCH net-next V1 1/4] virtio_net: extract interrupt coalescing settings to a structure

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

 





On Mon, Jul 10, 2023 at 5:21 PM Gavin Li <gavinl@xxxxxxxxxx> wrote:
Extract interrupt coalescing settings to a structure so that it could be
reused in other data structures.

Signed-off-by: Gavin Li <gavinl@xxxxxxxxxx>
Reviewed-by: Dragos Tatulea <dtatulea@xxxxxxxxxx>
Reviewed-by: Jiri Pirko <jiri@xxxxxxxxxx>
---
 drivers/net/virtio_net.c | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

Acked-by: Jason Wang <jasowang@xxxxxxxxxx>

Thanks
 

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 0db14f6b87d3..dd5fec073a27 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -126,6 +126,11 @@ static const struct virtnet_stat_desc virtnet_rq_stats_desc[] = {
 #define VIRTNET_SQ_STATS_LEN   ARRAY_SIZE(virtnet_sq_stats_desc)
 #define VIRTNET_RQ_STATS_LEN   ARRAY_SIZE(virtnet_rq_stats_desc)

+struct virtnet_interrupt_coalesce {
+       u32 max_packets;
+       u32 max_usecs;
+};
+
 /* Internal representation of a send virtqueue */
 struct send_queue {
        /* Virtqueue associated with this send _queue */
@@ -281,10 +286,8 @@ struct virtnet_info {
        u32 speed;

        /* Interrupt coalescing settings */
-       u32 tx_usecs;
-       u32 rx_usecs;
-       u32 tx_max_packets;
-       u32 rx_max_packets;
+       struct virtnet_interrupt_coalesce intr_coal_tx;
+       struct virtnet_interrupt_coalesce intr_coal_rx;

        unsigned long guest_offloads;
        unsigned long guest_offloads_capable;
@@ -3056,8 +3059,8 @@ static int virtnet_send_notf_coal_cmds(struct virtnet_info *vi,
                return -EINVAL;

        /* Save parameters */
-       vi->tx_usecs = ec->tx_coalesce_usecs;
-       vi->tx_max_packets = ec->tx_max_coalesced_frames;
+       vi->intr_coal_tx.max_usecs = ec->tx_coalesce_usecs;
+       vi->intr_coal_tx.max_packets = ec->tx_max_coalesced_frames;

        vi->ctrl->coal_rx.rx_usecs = cpu_to_le32(ec->rx_coalesce_usecs);
        vi->ctrl->coal_rx.rx_max_packets = cpu_to_le32(ec->rx_max_coalesced_frames);
@@ -3069,8 +3072,8 @@ static int virtnet_send_notf_coal_cmds(struct virtnet_info *vi,
                return -EINVAL;

        /* Save parameters */
-       vi->rx_usecs = ec->rx_coalesce_usecs;
-       vi->rx_max_packets = ec->rx_max_coalesced_frames;
+       vi->intr_coal_rx.max_usecs = ec->rx_coalesce_usecs;
+       vi->intr_coal_rx.max_packets = ec->rx_max_coalesced_frames;

        return 0;
 }
@@ -3132,10 +3135,10 @@ static int virtnet_get_coalesce(struct net_device *dev,
        struct virtnet_info *vi = netdev_priv(dev);

        if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_NOTF_COAL)) {
-               ec->rx_coalesce_usecs = vi->rx_usecs;
-               ec->tx_coalesce_usecs = vi->tx_usecs;
-               ec->tx_max_coalesced_frames = vi->tx_max_packets;
-               ec->rx_max_coalesced_frames = vi->rx_max_packets;
+               ec->rx_coalesce_usecs = vi->intr_coal_rx.max_usecs;
+               ec->tx_coalesce_usecs = vi->intr_coal_tx.max_usecs;
+               ec->tx_max_coalesced_frames = vi->intr_coal_tx.max_packets;
+               ec->rx_max_coalesced_frames = vi->intr_coal_rx.max_packets;
        } else {
                ec->rx_max_coalesced_frames = 1;

@@ -4119,10 +4122,10 @@ static int virtnet_probe(struct virtio_device *vdev)
        }

        if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_NOTF_COAL)) {
-               vi->rx_usecs = 0;
-               vi->tx_usecs = 0;
-               vi->tx_max_packets = 0;
-               vi->rx_max_packets = 0;
+               vi->intr_coal_rx.max_usecs = 0;
+               vi->intr_coal_tx.max_usecs = 0;
+               vi->intr_coal_tx.max_packets = 0;
+               vi->intr_coal_rx.max_packets = 0;
        }

        if (virtio_has_feature(vdev, VIRTIO_NET_F_HASH_REPORT))
--
2.39.1

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux