From patchwork Mon Jun 10 23:43:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yifeng Sun X-Patchwork-Id: 1113392 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="VKNurehl"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45N8rs0TJbz9sNC for ; Tue, 11 Jun 2019 09:45:33 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id D07B511E3; Mon, 10 Jun 2019 23:43:30 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 7BDBA11D7 for ; Mon, 10 Jun 2019 23:43:29 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id A8BAD6D6 for ; Mon, 10 Jun 2019 23:43:28 +0000 (UTC) Received: by mail-wm1-f68.google.com with SMTP id s3so974555wms.2 for ; Mon, 10 Jun 2019 16:43:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=w7o8JtkU4if1h8iGNK+Uod0+wV9PXUgjjQWiZ+6YeuM=; b=VKNurehlPuKg1TdqtJXZ9Oia2/V5ocAXZkYg3CAafr3VzGOMZPJWzXw0ix7CSDhAe4 dH/ZKL89Uc+P76GBtMREi9qHu9dU1dTsQJujp0CEwCKfeZYAd/xaCpqveoLoORnzqt1Y LEdjLc3cpASk3zkCIifPO1d+swqo8P9IasaEcqNEJ/V7uSylzITYQP52TkaDoQo9lGiq UxmPWlli6u19QpslruxBlf0idNhqDTXK9cZ7rMbGA4fgdUq3yantVZ91Czj86e01ankF hl1zzrb4kDwEMm0nR3z6jJOa7+U243XNaqkNyGRdw6+CzrZiggClv3WdpcIvGazENuhG Ge7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=w7o8JtkU4if1h8iGNK+Uod0+wV9PXUgjjQWiZ+6YeuM=; b=AQKqLgZYDZrDHghMWm03XKcDy2Z3xfQixzwopVGg0hhw5VQ2FMpmzkfikVFCM1SAXs 59pnr5ASow6QEzaXGLWQvfbhhDvuAewKdtLLPxdvhqJLsi2gUV0abDEiHbPAxqxrfG3q Xv8W4JbulTb+aOwfFW4kibZ9PpIDwouI71E+JEa6AQpIaXP5WsoK0mhHfA3N6/p4c5UP eMIHxVlTZHJuc1qvl3Ji6UDDUhSy9fXx0uPbXbSSzQ39Yn4Mn1k74XTkaVzwMkewXo5N ToiBGpLWFro5mVH6za/VB5O4aGsSpVe9THhfl5sR6hL5SPvXdC2ZP1eujk0tSC2uPhnc Aq3Q== X-Gm-Message-State: APjAAAVAHXeuhV1RRZkuCJvVsOMv1+aG6zqjn/Mj1O12DJWClCvz3rHW Ktcwdbk8l6r7dxUJO/kebVK7sIYI2OI= X-Google-Smtp-Source: APXvYqwgyVQUxvJNZQfQZ+fem2TaVEf2gfMvm/prpZr/p2OPRRufevUhYa8AgFwlPBl2XCH+R17rvw== X-Received: by 2002:a1c:1d8d:: with SMTP id d135mr14549341wmd.54.1560210207008; Mon, 10 Jun 2019 16:43:27 -0700 (PDT) Received: from kern417.eng.vmware.com ([66.170.99.2]) by smtp.gmail.com with ESMTPSA id v2sm10052180wrn.30.2019.06.10.16.43.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 10 Jun 2019 16:43:26 -0700 (PDT) From: Yifeng Sun To: dev@openvswitch.org Date: Mon, 10 Jun 2019 16:43:10 -0700 Message-Id: <1560210191-9414-5-git-send-email-pkusunyifeng@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1560210191-9414-1-git-send-email-pkusunyifeng@gmail.com> References: <1560210191-9414-1-git-send-email-pkusunyifeng@gmail.com> X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Petr Machata Subject: [ovs-dev] [PATCH 4/5] net: core: dev: Add extack argument to dev_change_flags() X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org From: Petr Machata Upstream commit: commit 567c5e13be5cc74d24f5eb54cf353c2e2277189b Author: Petr Machata Date: Thu Dec 6 17:05:42 2018 +0000 net: core: dev: Add extack argument to dev_change_flags() In order to pass extack together with NETDEV_PRE_UP notifications, it's necessary to route the extack to __dev_open() from diverse (possibly indirect) callers. One prominent API through which the notification is invoked is dev_change_flags(). Therefore extend dev_change_flags() with and extra extack argument and update all users. Most of the calls end up just encoding NULL, but several sites (VLAN, ipvlan, VRF, rtnetlink) do have extack available. Since the function declaration line is changed anyway, name the other function arguments to placate checkpatch. Signed-off-by: Petr Machata Acked-by: Jiri Pirko Reviewed-by: Ido Schimmel Reviewed-by: David Ahern Signed-off-by: David S. Miller This patch backports the above upstream patch and also adds fixes in compat code. Cc: Petr Machata Signed-off-by: Yifeng Sun Acked-by: Yi-Hung Wei --- acinclude.m4 | 3 +++ datapath/linux/compat/include/linux/netdevice.h | 10 ++++++++++ datapath/linux/compat/ip6_gre.c | 4 ++-- datapath/linux/compat/ip_gre.c | 4 ++-- datapath/vport-geneve.c | 2 +- datapath/vport-gre.c | 2 +- datapath/vport-lisp.c | 2 +- datapath/vport-stt.c | 2 +- datapath/vport-vxlan.c | 2 +- 9 files changed, 22 insertions(+), 9 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index eb978e0fae6c..93fbf0ebb84c 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -617,6 +617,9 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ [max_mtu]) OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device_ops_extended], [ndo_change_mtu], [OVS_DEFINE([HAVE_RHEL7_MAX_MTU])]) + OVS_FIND_PARAM_IFELSE([$KSRC/include/linux/netdevice.h], + [dev_change_flags], [extack], + [OVS_DEFINE([HAVE_DEV_CHANGE_FLAGS_TAKES_EXTACK])]) OVS_GREP_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hook_state]) OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hook_state], diff --git a/datapath/linux/compat/include/linux/netdevice.h b/datapath/linux/compat/include/linux/netdevice.h index cf68ed5238d4..126ff23cfa27 100644 --- a/datapath/linux/compat/include/linux/netdevice.h +++ b/datapath/linux/compat/include/linux/netdevice.h @@ -323,4 +323,14 @@ static inline void netif_keep_dst(struct net_device *dev) } #endif +#ifndef HAVE_DEV_CHANGE_FLAGS_TAKES_EXTACK +static inline int rpl_dev_change_flags(struct net_device *dev, + unsigned int flags, + struct netlink_ext_ack *extack) +{ + return dev_change_flags(dev, flags); +} +#define dev_change_flags rpl_dev_change_flags +#endif + #endif /* __LINUX_NETDEVICE_WRAPPER_H */ diff --git a/datapath/linux/compat/ip6_gre.c b/datapath/linux/compat/ip6_gre.c index 2ffdda5e1dc3..ca4e66133570 100644 --- a/datapath/linux/compat/ip6_gre.c +++ b/datapath/linux/compat/ip6_gre.c @@ -2647,7 +2647,7 @@ static struct vport *erspan6_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); @@ -2748,7 +2748,7 @@ static struct vport *ip6gre_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); diff --git a/datapath/linux/compat/ip_gre.c b/datapath/linux/compat/ip_gre.c index 89ef45556dce..cf8803b53075 100644 --- a/datapath/linux/compat/ip_gre.c +++ b/datapath/linux/compat/ip_gre.c @@ -1500,7 +1500,7 @@ static struct vport *erspan_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); @@ -1554,7 +1554,7 @@ static struct vport *ipgre_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); diff --git a/datapath/vport-geneve.c b/datapath/vport-geneve.c index 14a54f1997a9..a5b91246f8dd 100644 --- a/datapath/vport-geneve.c +++ b/datapath/vport-geneve.c @@ -93,7 +93,7 @@ static struct vport *geneve_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); diff --git a/datapath/vport-gre.c b/datapath/vport-gre.c index 1d63734f4141..07a8c19df96e 100644 --- a/datapath/vport-gre.c +++ b/datapath/vport-gre.c @@ -68,7 +68,7 @@ static struct vport *gre_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); diff --git a/datapath/vport-lisp.c b/datapath/vport-lisp.c index 27f40ab4272f..5e2bcda88ac8 100644 --- a/datapath/vport-lisp.c +++ b/datapath/vport-lisp.c @@ -92,7 +92,7 @@ static struct vport *lisp_tnl_create(const struct vport_parms *parms) ovs_vport_free(vport); return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); diff --git a/datapath/vport-stt.c b/datapath/vport-stt.c index 31fa46245503..35c4942c5f51 100644 --- a/datapath/vport-stt.c +++ b/datapath/vport-stt.c @@ -95,7 +95,7 @@ static struct vport *stt_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock(); diff --git a/datapath/vport-vxlan.c b/datapath/vport-vxlan.c index c7139abc8919..05764467a687 100644 --- a/datapath/vport-vxlan.c +++ b/datapath/vport-vxlan.c @@ -162,7 +162,7 @@ static struct vport *vxlan_tnl_create(const struct vport_parms *parms) return ERR_CAST(dev); } - err = dev_change_flags(dev, dev->flags | IFF_UP); + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); if (err < 0) { rtnl_delete_link(dev); rtnl_unlock();