vhost_net: introduce vhost_exceeds_weight() [Linux 3.16.72]

This Linux kernel change "vhost_net: introduce vhost_exceeds_weight()" is included in the Linux 3.16.72 release. This change is authored by Jason Wang <jasowang [at] redhat.com> on Fri Jul 20 08:15:15 2018 +0800. The commit for this change in Linux stable tree is e22aecb (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 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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 bb7a1bd..ab10066 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -335,6 +335,12 @@ static void vhost_zerocopy_callback(struct ubuf_info *ubuf, bool success)
    rcu_read_unlock_bh();
 }

+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)
@@ -457,8 +463,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;
        }
@@ -668,8 +673,7 @@ static void handle_rx(struct vhost_net *net)
        if (unlikely(vq_log))
            vhost_log_write(vq, vq_log, log, vhost_len);
        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);
            break;
        }

Leave a Reply

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