From patchwork Wed Dec 12 10:58:06 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 205481 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 3B6412C00A6 for ; Wed, 12 Dec 2012 21:58:28 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753593Ab2LLK6Y (ORCPT ); Wed, 12 Dec 2012 05:58:24 -0500 Received: from mail-ee0-f46.google.com ([74.125.83.46]:49070 "EHLO mail-ee0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753546Ab2LLK6X (ORCPT ); Wed, 12 Dec 2012 05:58:23 -0500 Received: by mail-ee0-f46.google.com with SMTP id e53so325458eek.19 for ; Wed, 12 Dec 2012 02:58:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=voFJzpaPw6B3ZnaunTTYfBIPUSQMai8Rz6Xt486Pzr0=; b=Ef3GxS64iBAbokuUnNRo/HiAk7Q0t9sN3QkdeidkqhMR6qnVh9U3JQZe7NaoOmw245 zFjSvnnR3Ek34PZ4KSSElhHEl1Mf3RIewjK54W6SBHs7uj3Knoi740edeIAubyANEtmR AWWGgybD3BNWCD1SXGG6gaxIrsZp2Eda8XjKEsbBnRHyjiU5rlvkMFLKyLvAxDCCC4Ze 7FWhNLwDvhq+8avTbGk3B2ocOuAoj7kM+gY+yzl9h+td09o4PTpKwMbC+CKV830A/ROk fszDAYQJHHHxvYCO2DyxmEpjBBpE8/WcZ4ZKL4ec9pXsgS2dTCjPHWNtN28iB9Q+HrHd dsyg== Received: by 10.14.225.72 with SMTP id y48mr1806496eep.46.1355309902244; Wed, 12 Dec 2012 02:58:22 -0800 (PST) Received: from localhost (ip-89-103-8-129.net.upcbroadband.cz. [89.103.8.129]) by mx.google.com with ESMTPS id b49sm55235028eem.16.2012.12.12.02.58.20 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 12 Dec 2012 02:58:21 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, bhutchings@solarflare.com, mirqus@gmail.com, shemminger@vyatta.com, greearb@candelatech.com, fbl@redhat.com Subject: [patch net-next 3/4] rtnl: expose carrier value with possibility to set it Date: Wed, 12 Dec 2012 11:58:06 +0100 Message-Id: <1355309887-1081-4-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 1.8.0 In-Reply-To: <1355309887-1081-1-git-send-email-jiri@resnulli.us> References: <1355309887-1081-1-git-send-email-jiri@resnulli.us> X-Gm-Message-State: ALoCoQkXKt2INR5ufDY2RQFhqtQkxDLYGjz26QEtNdZln6YV4h0SzLMxXgjRAp3K8nPiwhpL8PH5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Jiri Pirko --- include/uapi/linux/if_link.h | 1 + net/core/rtnetlink.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h index 60f3b6b..c4edfe1 100644 --- a/include/uapi/linux/if_link.h +++ b/include/uapi/linux/if_link.h @@ -142,6 +142,7 @@ enum { #define IFLA_PROMISCUITY IFLA_PROMISCUITY IFLA_NUM_TX_QUEUES, IFLA_NUM_RX_QUEUES, + IFLA_CARRIER, __IFLA_MAX }; diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 1868625..2ef7a56 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -780,6 +780,7 @@ static noinline size_t if_nlmsg_size(const struct net_device *dev, + nla_total_size(4) /* IFLA_MTU */ + nla_total_size(4) /* IFLA_LINK */ + nla_total_size(4) /* IFLA_MASTER */ + + nla_total_size(1) /* IFLA_CARRIER */ + nla_total_size(4) /* IFLA_PROMISCUITY */ + nla_total_size(4) /* IFLA_NUM_TX_QUEUES */ + nla_total_size(4) /* IFLA_NUM_RX_QUEUES */ @@ -909,6 +910,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev, nla_put_u32(skb, IFLA_LINK, dev->iflink)) || (dev->master && nla_put_u32(skb, IFLA_MASTER, dev->master->ifindex)) || + nla_put_u8(skb, IFLA_CARRIER, netif_carrier_ok(dev)) || (dev->qdisc && nla_put_string(skb, IFLA_QDISC, dev->qdisc->ops->id)) || (dev->ifalias && @@ -1108,6 +1110,7 @@ const struct nla_policy ifla_policy[IFLA_MAX+1] = { [IFLA_MTU] = { .type = NLA_U32 }, [IFLA_LINK] = { .type = NLA_U32 }, [IFLA_MASTER] = { .type = NLA_U32 }, + [IFLA_CARRIER] = { .type = NLA_U8 }, [IFLA_TXQLEN] = { .type = NLA_U32 }, [IFLA_WEIGHT] = { .type = NLA_U32 }, [IFLA_OPERSTATE] = { .type = NLA_U8 }, @@ -1438,6 +1441,13 @@ static int do_setlink(struct net_device *dev, struct ifinfomsg *ifm, modified = 1; } + if (tb[IFLA_CARRIER]) { + err = dev_change_carrier(dev, nla_get_u8(tb[IFLA_CARRIER])); + if (err) + goto errout; + modified = 1; + } + if (tb[IFLA_TXQLEN]) dev->tx_queue_len = nla_get_u32(tb[IFLA_TXQLEN]);