From patchwork Mon May 14 22:32:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 913317 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=networkplumber.org Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=networkplumber-org.20150623.gappssmtp.com header.i=@networkplumber-org.20150623.gappssmtp.com header.b="Z+zvTe8m"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40lFp12Yh4z9s0q for ; Tue, 15 May 2018 08:32:57 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752298AbeENWcy (ORCPT ); Mon, 14 May 2018 18:32:54 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:35734 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752222AbeENWcw (ORCPT ); Mon, 14 May 2018 18:32:52 -0400 Received: by mail-pg0-f68.google.com with SMTP id n1-v6so6090793pgs.2 for ; Mon, 14 May 2018 15:32:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DEEWWZJLV9s4N8HAAn3puL5WItYwvRYao4c1CkZFSRk=; b=Z+zvTe8mxA+NNx29K+ECjDi3aRaA74qKA1cGtXCJgTD4sOWypVQLapAPlS3d4XPAt+ k25IEPxp9HWQDkAZU9ErgGCM1AQPcND4GkqGLzaqse09PzE9T3NiYWih1WSgkP9eGQ0p zPGA7ma1CJz41h4WYK6uXHpHOXCMNPI2Zdy+/rfkCeFUXa+gpQ8kquImPBcTZMbts7gn UgsUHQly84Um/ncUP5J9pvJ9ntw8LLw4fcJn0dIm6ZbIz+DBcugNzBDtBiljYBoct71t MHgp7cjnABkJ6JBZseO3LiWc34HRNcsjfiQr+P/6jEAMvpF26MsiVJiHrELKujkuRbMK J2nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=DEEWWZJLV9s4N8HAAn3puL5WItYwvRYao4c1CkZFSRk=; b=ZuMFQkAN17B4THxTN/Lj/1+DUbzySIAo6ZVUn/CMaeOXat8KM2A5AlkeIQ390pO8iv B3hUCXqMZZqswJa5za7HZFh6N2NDgye3SsMMnQg00h+1Mf0wDfbfxHgbc1Qi1nfCwiCQ /++LM7rgdl355khfJ7yUEA50TG+HO0g78hSDKCtJAS3P2ImB7AjLfXCQply/AdKCIUaA db08S2nv/5M2EaANZqBBbUBZsSMddrUj9PDHw+VwHtSEbvleQMnTrw2JbGR3orqrYAXS 1RwlfZ9mpwcfiLummrHyy36qNJszeh4fctGd9oIlGeG7UeZEMo4VXkIP46wKRvWN9PQB TKdg== X-Gm-Message-State: ALKqPwfFNGDUklSf/bnGYgt8mIuZGnvKaiGLuqgStqZWG4UfhHaICf4L 4aqeDOnUpdklWNEqi+RLbfme5h/kDeY= X-Google-Smtp-Source: AB8JxZrjcVsNp6c8pTOqQdLz5RU6g8+V7glaga2aXUwoA/ICfIqFa2Dr2UhiRd7tbYZkctIAwXIuAw== X-Received: by 2002:a65:628a:: with SMTP id f10-v6mr9930637pgv.6.1526337171848; Mon, 14 May 2018 15:32:51 -0700 (PDT) Received: from xeon-e3.lan (204-195-35-107.wavecable.com. [204.195.35.107]) by smtp.gmail.com with ESMTPSA id y29-v6sm23827830pff.42.2018.05.14.15.32.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 May 2018 15:32:50 -0700 (PDT) From: Stephen Hemminger X-Google-Original-From: Stephen Hemminger To: davem@davemloft.net Cc: netdev@vger.kernel.org, Stephen Hemminger , Stephen Hemminger Subject: [PATCH net-stable 15/24] hv_netvsc: defer queue selection to VF Date: Mon, 14 May 2018 15:32:14 -0700 Message-Id: <20180514223223.25433-16-sthemmin@microsoft.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514223223.25433-1-sthemmin@microsoft.com> References: <20180514223223.25433-1-sthemmin@microsoft.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Stephen Hemminger commit b3bf5666a51068ad5ddd89a76ed877101ef3bc16 upstream When VF is used for accelerated networking it will likely have more queues (and different policy) than the synthetic NIC. This patch defers the queue policy to the VF so that all the queues can be used. This impacts workloads like local generate UDP. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller --- drivers/net/hyperv/netvsc_drv.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index bcd74f01f04b..daa450e4e2a4 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -283,8 +283,19 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb, rcu_read_lock(); vf_netdev = rcu_dereference(ndc->vf_netdev); if (vf_netdev) { - txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : 0; - qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping; + const struct net_device_ops *vf_ops = vf_netdev->netdev_ops; + + if (vf_ops->ndo_select_queue) + txq = vf_ops->ndo_select_queue(vf_netdev, skb, + accel_priv, fallback); + else + txq = fallback(vf_netdev, skb); + + /* Record the queue selected by VF so that it can be + * used for common case where VF has more queues than + * the synthetic device. + */ + qdisc_skb_cb(skb)->slave_dev_queue_mapping = txq; } else { txq = netvsc_pick_tx(ndev, skb); }