From patchwork Wed Aug 18 04:45:08 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Phil Oester X-Patchwork-Id: 61988 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 15AA9B70DB for ; Wed, 18 Aug 2010 14:45:20 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750962Ab0HREpP (ORCPT ); Wed, 18 Aug 2010 00:45:15 -0400 Received: from mail-pv0-f174.google.com ([74.125.83.174]:34635 "EHLO mail-pv0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750740Ab0HREpN (ORCPT ); Wed, 18 Aug 2010 00:45:13 -0400 Received: by pvg2 with SMTP id 2so51372pvg.19 for ; Tue, 17 Aug 2010 21:45:13 -0700 (PDT) Received: by 10.114.111.14 with SMTP id j14mr9024914wac.126.1282106713048; Tue, 17 Aug 2010 21:45:13 -0700 (PDT) Received: from linuxace.com (cpe-76-171-111-203.socal.res.rr.com [76.171.111.203]) by mx.google.com with ESMTPS id c10sm15737896wam.1.2010.08.17.21.45.11 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 17 Aug 2010 21:45:12 -0700 (PDT) Date: Tue, 17 Aug 2010 21:45:08 -0700 From: Phil Oester To: netdev@vger.kernel.org Subject: [PATCH] vlan: Match underlying dev carrier on vlan add Message-ID: <20100818044508.GA23361@linuxace.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-12-10) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When adding a new vlan, if the underlying interface has no carrier, then the newly added vlan interface should also have no carrier. At present, this is not true - the newly added vlan is added with carrier up. Fix by checking state of real device. Signed-off-by: Phil Oester diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 3d59c9b..3bccdd1 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c @@ -510,7 +510,8 @@ static int vlan_dev_open(struct net_device *dev) if (vlan->flags & VLAN_FLAG_GVRP) vlan_gvrp_request_join(dev); - netif_carrier_on(dev); + if (netif_carrier_ok(real_dev)) + netif_carrier_on(dev); return 0; clear_allmulti: