From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752528AbdDLCMu (ORCPT ); Tue, 11 Apr 2017 22:12:50 -0400 Received: from shards.monkeyblade.net ([184.105.139.130]:38960 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751951AbdDLCMn (ORCPT ); Tue, 11 Apr 2017 22:12:43 -0400 Date: Tue, 11 Apr 2017 22:12:41 -0400 (EDT) Message-Id: <20170411.221241.2175639910931847215.davem@davemloft.net> To: haiyangz@microsoft.com, haiyangz@exchange.microsoft.com Cc: netdev@vger.kernel.org, kys@microsoft.com, olaf@aepfle.de, vkuznets@redhat.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH net-next,1/3] hv_netvsc: Use per socket hash when available From: David Miller In-Reply-To: <1491699241-9944-1-git-send-email-haiyangz@exchange.microsoft.com> References: <1491699241-9944-1-git-send-email-haiyangz@exchange.microsoft.com> X-Mailer: Mew version 6.7 on Emacs 25.1 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.5.12 (shards.monkeyblade.net [149.20.54.216]); Tue, 11 Apr 2017 18:31:23 -0700 (PDT) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Haiyang Zhang Date: Sat, 8 Apr 2017 17:53:59 -0700 > diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c > index f24c289..0a129cb 100644 > --- a/drivers/net/hyperv/netvsc_drv.c > +++ b/drivers/net/hyperv/netvsc_drv.c > @@ -211,9 +211,14 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb, > int q_idx = sk_tx_queue_get(sk); > > if (q_idx < 0 || skb->ooo_okay || q_idx >= num_tx_queues) { > - u16 hash = __skb_tx_hash(ndev, skb, VRSS_SEND_TAB_SIZE); > + u16 hash; > int new_idx; > > + if (sk) > + skb_set_hash_from_sk(skb, sk); > + > + hash = __skb_tx_hash(ndev, skb, VRSS_SEND_TAB_SIZE); Please do not do this. TCP performs this operation for you for every pack it emits. And also every socket family that uses skb_set_owner_w() either directly or indirectly gets this done as well. I do not want to see drivers start to get peppered with calls to this thing. Explain the case which is missing that matters, and we can address that instead. Thanks.