Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1378485imm; Sat, 4 Aug 2018 02:09:44 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcXZVOlxEXel5GEzkzHr7aerQFSn5hu1vIzQNuA7Tu5V2eTII+zbv9UM+zx6MH62NdHDrYd X-Received: by 2002:a62:5cc1:: with SMTP id q184-v6mr8325922pfb.241.1533373784107; Sat, 04 Aug 2018 02:09:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533373784; cv=none; d=google.com; s=arc-20160816; b=n9h/aMPY5VjXGqLE+fZHCJmOxk+bnGYuMHP0F0udMkNOE5sYSLG/+37cBxcboP6XY0 CYVl6Vxi+QkQjZAm54+JRGs6aJAarksv5OJu7dPZm92SWeGSLHzT+mDq6cgWZX8LN66V bQWOdpnkwJjlJhCpXfxzRv4n3Xf2SyaBRtHBN76DcGPXrsq33Y6iRDmZ2gHxlLIWm4sP ObXejoIWfagzwcrtaRqCdZrVJJ57BcdEnur1fo7MGWxp0Z/+/Vk18rWMg8Zi50SP3oMa TUjhN4Ux1DeL3VylCiHAizfI62FKocGTt8Cvb9oxA9VIZVNU7mnicHW0+AOiZj8iYHTc RFfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=Udt6XDOgpXJrcFrJ7MNYjJamW/lJHlMfkhVXddikifA=; b=zNeXj3k+hXLLY3OwPsmwyKx+pnYwlkAk9BZUYb6KlOpOsfyKJZT7EK+ntu0EaFMJOY vOXBw2cGvlO9Te80/mr8a0YOMVgPkt+9m7mG6p/3D1MwRGXh23lmirhvJtM7JXott7W8 R9YdRezFmkaFHqqaah0nQULPDmXnxENfB9W8Z028qMCB9DwIAR4xwh4UHvpzWg9OR40K NHSzpgUuacxMIUDCYvIDo3uOXuTu1WcDSokDm96AS/Hx6H5KnmOERuW2ohJ152JPvxyA zFk8jNW4OPuPHozelKJWXUdZc0HEvZ/+QmVdftAqh83KTmip22Tb2kzjyrWi8BYu0QYM 16aA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q74-v6si7955054pfq.32.2018.08.04.02.09.30; Sat, 04 Aug 2018 02:09:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387642AbeHDLHm (ORCPT + 99 others); Sat, 4 Aug 2018 07:07:42 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:49418 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726754AbeHDLHl (ORCPT ); Sat, 4 Aug 2018 07:07:41 -0400 Received: from localhost (D57E6652.static.ziggozakelijk.nl [213.126.102.82]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id B389E89C; Sat, 4 Aug 2018 09:07:42 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Juergen Gross , Boris Ostrovsky , "David S. Miller" , Sasha Levin Subject: [PATCH 4.4 009/124] xen/netfront: raise max number of slots in xennet_get_responses() Date: Sat, 4 Aug 2018 10:59:58 +0200 Message-Id: <20180804082702.800715724@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180804082702.434482435@linuxfoundation.org> References: <20180804082702.434482435@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Juergen Gross [ Upstream commit 57f230ab04d2910a06d17d988f1c4d7586a59113 ] The max number of slots used in xennet_get_responses() is set to MAX_SKB_FRAGS + (rx->status <= RX_COPY_THRESHOLD). In old kernel-xen MAX_SKB_FRAGS was 18, while nowadays it is 17. This difference is resulting in frequent messages "too many slots" and a reduced network throughput for some workloads (factor 10 below that of a kernel-xen based guest). Replacing MAX_SKB_FRAGS by XEN_NETIF_NR_SLOTS_MIN for calculation of the max number of slots to use solves that problem (tests showed no more messages "too many slots" and throughput was as high as with the kernel-xen based guest system). Replace MAX_SKB_FRAGS-2 by XEN_NETIF_NR_SLOTS_MIN-1 in netfront_tx_slot_available() for making it clearer what is really being tested without actually modifying the tested value. Signed-off-by: Juergen Gross Reviewed-by: Boris Ostrovsky Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/net/xen-netfront.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -238,7 +238,7 @@ static void rx_refill_timeout(unsigned l static int netfront_tx_slot_available(struct netfront_queue *queue) { return (queue->tx.req_prod_pvt - queue->tx.rsp_cons) < - (NET_TX_RING_SIZE - MAX_SKB_FRAGS - 2); + (NET_TX_RING_SIZE - XEN_NETIF_NR_SLOTS_MIN - 1); } static void xennet_maybe_wake_tx(struct netfront_queue *queue) @@ -775,7 +775,7 @@ static int xennet_get_responses(struct n RING_IDX cons = queue->rx.rsp_cons; struct sk_buff *skb = xennet_get_rx_skb(queue, cons); grant_ref_t ref = xennet_get_rx_ref(queue, cons); - int max = MAX_SKB_FRAGS + (rx->status <= RX_COPY_THRESHOLD); + int max = XEN_NETIF_NR_SLOTS_MIN + (rx->status <= RX_COPY_THRESHOLD); int slots = 1; int err = 0; unsigned long ret;