From patchwork Wed Mar 26 20:28:31 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlad Yasevich X-Patchwork-Id: 334083 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 0E878140081 for ; Thu, 27 Mar 2014 07:29:01 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755274AbaCZU2x (ORCPT ); Wed, 26 Mar 2014 16:28:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:23028 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754037AbaCZU2w (ORCPT ); Wed, 26 Mar 2014 16:28:52 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2QKSo7g001665 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 26 Mar 2014 16:28:50 -0400 Received: from vyasevic.redhat.com (ovpn-113-153.phx2.redhat.com [10.3.113.153]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2QKSnJM031372; Wed, 26 Mar 2014 16:28:49 -0400 From: Vlad Yasevich To: netdev@vger.kernel.org Cc: davem@davemloft.net, kaber@trash.net, Vlad Yasevich Subject: [PATCH v2 net] vlan: Mask off vlan acceleration features on vlan device. Date: Wed, 26 Mar 2014 16:28:31 -0400 Message-Id: <1395865711-3347-1-git-send-email-vyasevic@redhat.com> In-Reply-To: <1395865521-2318-1-git-send-email-vyasevic@redhat.com> References: <1395865521-2318-1-git-send-email-vyasevic@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Some drivers incorrectly assign vlan acceleration features to vlan_features thus causing issues for Q-in-Q vlan configurations. Prevent this once and for all by masking off acceleration features for vlan devices until such time as we support stacked acceleration. Signed-off-by: Vlad Yasevich --- include/linux/netdev_features.h | 7 +++++++ net/8021q/vlan_dev.c | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h index 1005ebf..5a09a48 100644 --- a/include/linux/netdev_features.h +++ b/include/linux/netdev_features.h @@ -163,4 +163,11 @@ enum { /* changeable features with no special hardware requirements */ #define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO) +#define NETIF_F_VLAN_FEATURES (NETIF_F_HW_VLAN_CTAG_FILTER | \ + NETIF_F_HW_VLAN_CTAG_RX | \ + NETIF_F_HW_VLAN_CTAG_TX | \ + NETIF_F_HW_VLAN_STAG_FILTER | \ + NETIF_F_HW_VLAN_STAG_RX | \ + NETIF_F_HW_VLAN_STAG_TX) + #endif /* _LINUX_NETDEV_FEATURES_H */ diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index a9591ff..d99e8df 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c @@ -576,7 +576,8 @@ static int vlan_dev_init(struct net_device *dev) NETIF_F_HIGHDMA | NETIF_F_SCTP_CSUM | NETIF_F_ALL_FCOE; - dev->features |= real_dev->vlan_features | NETIF_F_LLTX; + dev->features |= (real_dev->vlan_features & ~NETIF_F_VLAN_FEATURES) | + NETIF_F_LLTX; dev->gso_max_size = real_dev->gso_max_size; /* ipv6 shared card related stuff */ @@ -651,6 +652,7 @@ static netdev_features_t vlan_dev_fix_features(struct net_device *dev, features &= real_dev->features; features |= old_features & NETIF_F_SOFT_FEATURES; + features &= ~NETIF_F_VLAN_FEATURES; features |= NETIF_F_LLTX; return features;