From patchwork Sat Nov 28 20:20:37 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: KY Srinivasan X-Patchwork-Id: 549687 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id A3EDD1402C2 for ; Sun, 29 Nov 2015 05:59:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752921AbbK1S73 (ORCPT ); Sat, 28 Nov 2015 13:59:29 -0500 Received: from p3plsmtps2ded02.prod.phx3.secureserver.net ([208.109.80.59]:58458 "EHLO p3plsmtps2ded02.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752848AbbK1S71 (ORCPT ); Sat, 28 Nov 2015 13:59:27 -0500 Received: from linuxonhyperv.com ([72.167.245.219]) by : HOSTING RELAY : with SMTP id 2kXaa100ne5tG2kXaaApSg; Sat, 28 Nov 2015 11:48:11 -0700 x-originating-ip: 72.167.245.219 Received: by linuxonhyperv.com (Postfix, from userid 507) id 93EF8190342; Sat, 28 Nov 2015 12:20:46 -0800 (PST) From: "K. Y. Srinivasan" To: davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, jasowang@redhat.com Cc: Vitaly Kuznetsov , "K. Y. Srinivasan" Subject: [PATCH net-next V2 09/17] hv_netvsc: move subchannel existence check to netvsc_select_queue() Date: Sat, 28 Nov 2015 12:20:37 -0800 Message-Id: <1448742045-22732-9-git-send-email-kys@microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1448742045-22732-1-git-send-email-kys@microsoft.com> References: <1448742017-22693-1-git-send-email-kys@microsoft.com> <1448742045-22732-1-git-send-email-kys@microsoft.com> X-CMAE-Envelope: MS4wfJ+Yzak6DD4bBstP5CxG/HGH8b8qQN9j/JYINNA05rB1hk68mU5xKz0Nqt5jJ9GxD8VDnCQmkrw2BFi/ZW42FpMd9hnjlX0RUitIB9bhAdLZnrq0bBSS NkauCQ6KZB82F6xz/GrFRwWotZlJxPlAmBGdRBUxGhQu/UWZnO+hJdatIXRz39MN5taBJmxJ4wFUzbSHJ995Im1RSE45cNcr+LEbPOMjj8zHfdwObjS6aG8U Zb5ZVlD0Y8Wgl6fmdvY2/u4uizh1CEGRKnYMIs8tg4ymbw4d+jlKd52rgEXhC9zO4/2XyoRiEE/DHFumgtCa7CbVECeslZ3+Jolh++BkTIiC3tb9PB8cnI9h ccAz0ONxY2ny8zk9dAG+HPVxcv+PP7h07R327j/NtXoZyllUfZXiUWXJyUbZRMna8F8O51BUkb99CjQxcTEjImUog18uQg== Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vitaly Kuznetsov Signed-off-by: Vitaly Kuznetsov Signed-off-by: K. Y. Srinivasan --- drivers/net/hyperv/hyperv_net.h | 15 --------------- drivers/net/hyperv/netvsc.c | 5 ++--- drivers/net/hyperv/netvsc_drv.c | 3 +++ 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h index e15dc2c..a9d2bdc5 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h @@ -1260,19 +1260,4 @@ struct rndis_message { #define TRANSPORT_INFO_IPV6_TCP ((INFO_IPV6 << 16) | INFO_TCP) #define TRANSPORT_INFO_IPV6_UDP ((INFO_IPV6 << 16) | INFO_UDP) -static inline struct vmbus_channel *get_channel(struct hv_netvsc_packet *packet, - struct netvsc_device *net_device) - -{ - struct vmbus_channel *out_channel; - - out_channel = net_device->chn_table[packet->q_idx]; - if (!out_channel) { - out_channel = net_device->dev->channel; - packet->q_idx = 0; - } - return out_channel; -} - - #endif /* _HYPERV_NET_H */ diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c index 0e0b723..419b055 100644 --- a/drivers/net/hyperv/netvsc.c +++ b/drivers/net/hyperv/netvsc.c @@ -749,8 +749,8 @@ static inline int netvsc_send_pkt( struct netvsc_device *net_device) { struct nvsp_message nvmsg; - struct vmbus_channel *out_channel = get_channel(packet, net_device); u16 q_idx = packet->q_idx; + struct vmbus_channel *out_channel = net_device->chn_table[q_idx]; struct net_device *ndev = net_device->ndev; u64 req_id; int ret; @@ -859,8 +859,7 @@ int netvsc_send(struct hv_device *device, if (!net_device) return -ENODEV; - out_channel = get_channel(packet, net_device); - q_idx = packet->q_idx; + out_channel = net_device->chn_table[q_idx]; packet->send_buf_index = NETVSC_INVALID_INDEX; packet->cp_partial = false; diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 90cc8d9..da3a224 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -272,6 +272,9 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb, skb_set_hash(skb, hash, PKT_HASH_TYPE_L3); } + if (!nvsc_dev->chn_table[q_idx]) + q_idx = 0; + return q_idx; }