vhost_net: introduce vhost_exceeds_weight() [Linux 4.9.190]

This Linux kernel change "vhost_net: introduce vhost_exceeds_weight()" is included in the Linux 4.9.190 release. This change is authored by Jason Wang <jasowang [at] redhat.com> on Sat Aug 17 00:00:36 2019 +0100. The commit for this change in Linux stable tree is 6214511 (patch) which is from upstream commit 272f35c. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream 272f35c.

vhost_net: introduce vhost_exceeds_weight()

commit 272f35cba53d088085e5952fd81d7a133ab90789 upstream.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 4.9: adjust context]
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

There are 12 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/vhost/net.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 4093b4e..0132cbd 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -357,6 +357,12 @@ static int vhost_net_tx_get_vq_desc(struct vhost_net *net,
    return r;
 }

+static bool vhost_exceeds_weight(int pkts, int total_len)
+{
+   return total_len >= VHOST_NET_WEIGHT ||
+          pkts >= VHOST_NET_PKT_WEIGHT;
+}
+
 /* Expects to be always run from workqueue - which acts as
  * read-size critical section for our kind of RCU. */
 static void handle_tx(struct vhost_net *net)
@@ -481,8 +487,7 @@ static void handle_tx(struct vhost_net *net)
            vhost_zerocopy_signal_used(net, vq);
        total_len += len;
        vhost_net_tx_packet(net);
-       if (unlikely(total_len >= VHOST_NET_WEIGHT) ||
-           unlikely(++sent_pkts >= VHOST_NET_PKT_WEIGHT)) {
+       if (unlikely(vhost_exceeds_weight(++sent_pkts, total_len))) {
            vhost_poll_queue(&vq->poll);
            break;
        }
@@ -763,8 +768,7 @@ static void handle_rx(struct vhost_net *net)
            vhost_log_write(vq, vq_log, log, vhost_len,
                    vq->iov, in);
        total_len += vhost_len;
-       if (unlikely(total_len >= VHOST_NET_WEIGHT) ||
-           unlikely(++recv_pkts >= VHOST_NET_PKT_WEIGHT)) {
+       if (unlikely(vhost_exceeds_weight(++recv_pkts, total_len))) {
            vhost_poll_queue(&vq->poll);
            goto out;
        }

Leave a Reply

Your email address will not be published. Required fields are marked *