From patchwork Tue Jun 14 00:14:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 634963 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 3rT9BQ1qR2z9rxm for ; Tue, 14 Jun 2016 10:14:38 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b=BBJEGp9o; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1422659AbcFNAOc (ORCPT ); Mon, 13 Jun 2016 20:14:32 -0400 Received: from mail-pf0-f175.google.com ([209.85.192.175]:32924 "EHLO mail-pf0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161338AbcFNAOb (ORCPT ); Mon, 13 Jun 2016 20:14:31 -0400 Received: by mail-pf0-f175.google.com with SMTP id y124so51079622pfy.0 for ; Mon, 13 Jun 2016 17:14:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id; bh=BP2z4AGGhW7pAgUT4Mspogjoz5ybpt+hlhGCLX2aLf8=; b=BBJEGp9orwf4dIrTnWodBRPsdNebHpDyEhSn4Qyun2VPwtXR4uVHJJl/4m8D51i4si tI8HtWbh+aGGYvHrjcCE4G+gSKVt3lsL4hFnQeZ50D05rx7QFxK0AfT6N8yRay+ZEPgO smwbmUE3OoBIuD1+Va2gj21eeZmDpujwEHaRM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=BP2z4AGGhW7pAgUT4Mspogjoz5ybpt+hlhGCLX2aLf8=; b=kE2WBY9TTPKIYR4D9VrjyvZlByleYF+y/JbK/S6zdJidJFS31GRDDNW0ALn0XrqEkq iAMy8v84P/98csmf7gZbBQMDpYCa/ce2rgJ2dzmEF5GVtBzOcjpyIw4h0+euUEefu8ak wVITm+auBw+mgdYsTVNbYF2yKPFyfCQawkxPv7j/gzUaluj5zXcDWvV93eFatfdAl4W1 jf/jVsdfSPoCR/y2NAnHJYIF3xy7vmhZs5iu67/ETsf9mm13IZ/sOJ+3kPHsqakA8UuZ hpLJaSr+advucGkVuDkh3PiRgro17cpLi54QQHiFEDi4EJmiV4WdLENNkEcKrBKV/nJi /35g== X-Gm-Message-State: ALyK8tK/SGJ5vOE26DXe0LmqmdSyEofAQEgLSZYB9S8UwddEkDKaYWbkKXBgm67qUapePaLS X-Received: by 10.98.11.4 with SMTP id t4mr189482pfi.159.1465863270455; Mon, 13 Jun 2016 17:14:30 -0700 (PDT) Received: from kenny.cumulusnetworks.com. ([216.129.126.126]) by smtp.googlemail.com with ESMTPSA id o2sm40192036pfi.85.2016.06.13.17.14.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 13 Jun 2016 17:14:29 -0700 (PDT) From: David Ahern To: netdev@vger.kernel.org Cc: David Ahern Subject: [PATCH net-next] net: vrf: Update flags and features settings Date: Mon, 13 Jun 2016 17:14:12 -0700 Message-Id: <1465863252-17288-1-git-send-email-dsa@cumulusnetworks.com> X-Mailer: git-send-email 2.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 1. Default VRF devices to not having a qdisc (IFF_NO_QUEUE). Users can add one as desired. 2. Disable adding a VLAN to a VRF device. 3. Enable offloads and hardware features similar to other logical devices (e.g., dummy, veth) Change provides a significant boost in TCP stream Tx performance, from ~2,700 Mbps to ~18,100 Mbps and makes throughput close to the performance without a VRF (18,500 Mbps). netperf TCP_STREAM benchmark using qemu with virtio+vhost for the NICs Signed-off-by: David Ahern --- drivers/net/vrf.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c index 0b5b3c258c2b..e3fc6d32a289 100644 --- a/drivers/net/vrf.c +++ b/drivers/net/vrf.c @@ -1099,6 +1099,20 @@ static void vrf_setup(struct net_device *dev) /* don't allow vrf devices to change network namespaces. */ dev->features |= NETIF_F_NETNS_LOCAL; + + /* does not make sense for a VLAN to be added to a vrf device */ + dev->features |= NETIF_F_VLAN_CHALLENGED; + + /* enable offload features */ + dev->features |= NETIF_F_GSO_SOFTWARE; + dev->features |= NETIF_F_RXCSUM | NETIF_F_HW_CSUM; + dev->features |= NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA; + + dev->hw_features = dev->features; + dev->hw_enc_features = dev->features; + + /* default to no qdisc; user can add if desired */ + dev->priv_flags |= IFF_NO_QUEUE; } static int vrf_validate(struct nlattr *tb[], struct nlattr *data[])