Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp467217ybt; Wed, 1 Jul 2020 02:52:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCrgqO25dWQrsa4gHUwhztLcU72+8eFHv4d4Nz/f71ELiarFY5zQ9Fqei/c+zCq6/Othsv X-Received: by 2002:a50:9b18:: with SMTP id o24mr28427082edi.335.1593597157651; Wed, 01 Jul 2020 02:52:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593597157; cv=none; d=google.com; s=arc-20160816; b=dqkG0+GBsa7lgk3inxOiKeCvpZPtR5I58RIvCK0+GOhNh9nbPYrNKp3uDdaoPfFXo3 69ddu/eDDU7L1QzW/PaFEnEMHZrDXgp95aG073tmRemJ60MuHUWVKriFeL5vind1eVLR Tl9cIMGWCXm5vrO8hVzslRDPTczJ8SzFpJr1Z7oY/Txl9qQ+5kJtJcryuBj9I3rH7vh3 2znkzsJrAEDCfrx3B2mxT43dymoJLcdrHtLt3kOd7R0HJBWzkI5BcgFsqBQjosKjQ9NV 8WTRqUf8qK9S7BUFq3KXr6USHy2pv0Jeo/DIcWDoJUKWu70Dk5faz57Q0Qqk9j9+aV8z egXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:dkim-signature; bh=0kXRdSJAJ2w4NQlFklwwTlNh4niyvAaA7nq0nb1Nl9w=; b=xr7tM8Hj+8ZBhS33rctnmAmYJlkmb4Tutbqpf8HiK4AEtMOd9ZOgCWvd3BlB36J/SM zslzYoGBtYt5vDy7MsZUc3ZVuJvPnDjPxS5fcFaG7Sztdv3vyTKk8lMuUe37bepTnENz 1Melyft6AP4WiMufHE4A3urt1S7VWwF2FVsID5uRSrfIguyitWu7MXp/dOUTxwUW4HFf hiwfj8bxH1Hxkvu0dCzrDEGNNWRfFfzMKKPoaShuCFnalWZiftkpfIwogvKOzXg6Az2j bhbZzkBztYJB8O6IGSmd1km1JMlNmveUqdpz95mUiwKgfnu++e1BQdY1Fdy1a+4nlzwC ObGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cumulusnetworks.com header.s=google header.b=TKjUYKLX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cumulusnetworks.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d19si3368887edz.443.2020.07.01.02.52.14; Wed, 01 Jul 2020 02:52:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@cumulusnetworks.com header.s=google header.b=TKjUYKLX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cumulusnetworks.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729629AbgGAJvh (ORCPT + 99 others); Wed, 1 Jul 2020 05:51:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35666 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729109AbgGAJvg (ORCPT ); Wed, 1 Jul 2020 05:51:36 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7286EC03E979 for ; Wed, 1 Jul 2020 02:51:36 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id h5so23119051wrc.7 for ; Wed, 01 Jul 2020 02:51:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=0kXRdSJAJ2w4NQlFklwwTlNh4niyvAaA7nq0nb1Nl9w=; b=TKjUYKLX6JQ1Vx3Tgm8MEFxB00Q/s6wjCbaTl6fB6p1083zS9fGrr4QNE60EbE+zh8 pqjBvxntdr4CRSOS3SAQ5HMGPVXCmQICT0jLF8ETNh5N3vS88001cu6PLG5DhRuQDNFy uiPqZRC0HChlt9qzVlENXWvQ+YJJv3gw+PoCo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=0kXRdSJAJ2w4NQlFklwwTlNh4niyvAaA7nq0nb1Nl9w=; b=fJdje9Qk4m/VMnDX/gJ1XxESthYIsfGMvgIiwHZUe+zFVTxj5DND9z70mfKV4FXB2i lFooGbB1zZWEPFWy156dPPS4Ixhd8+UdP/aF71H7W0s66agbf0Yih5uS6G3QgDFsXFQz /0h3Gu+FQ6Z7zbA+86w33t+I2QcMVdAxoqzLZDGRGsBIwiyQOn9bstDeAPhz1TTYKUoE rjZ22TbEeQ+eervFLcskSdBRTy3+IN9tF/bDM87pLzowupuDscwdnEwSyCDjEm+5WjjQ zUiwqnQWyxPa7wH9NYu6m/T3m9lVpFKht8o5sGOc2yezLEZRWUSOEZ0IHBciQuZgIH2U eTQw== X-Gm-Message-State: AOAM533BfktW38fF68vS4H85T82XwqMbNx1sjwx2rjvgh6hw0QbnhSIn HzL/wXUXYF3s952T6vN1r2UaXQ== X-Received: by 2002:a05:6000:1107:: with SMTP id z7mr25496107wrw.355.1593597095035; Wed, 01 Jul 2020 02:51:35 -0700 (PDT) Received: from [192.168.0.109] (84-238-136-197.ip.btc-net.bg. [84.238.136.197]) by smtp.gmail.com with ESMTPSA id n125sm6614837wme.30.2020.07.01.02.51.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 01 Jul 2020 02:51:34 -0700 (PDT) Subject: Re: [PATCH net-next v2 3/3] bridge: Extend br_fill_ifinfo to return MPR status To: Horatiu Vultur , roopa@cumulusnetworks.com, davem@davemloft.net, kuba@kernel.org, jiri@mellanox.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bridge@lists.linux-foundation.org, UNGLinuxDriver@microchip.com References: <20200701072239.520807-1-horatiu.vultur@microchip.com> <20200701072239.520807-4-horatiu.vultur@microchip.com> From: Nikolay Aleksandrov Message-ID: Date: Wed, 1 Jul 2020 12:51:32 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <20200701072239.520807-4-horatiu.vultur@microchip.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/07/2020 10:22, Horatiu Vultur wrote: > This patch extends the function br_fill_ifinfo to return also the MRP > status for each instance on a bridge. It also adds a new filter > RTEXT_FILTER_MRP to return the MRP status only when this is set, not to > interfer with the vlans. The MRP status is return only on the bridge > interfaces. > > Signed-off-by: Horatiu Vultur > --- > include/uapi/linux/rtnetlink.h | 1 + > net/bridge/br_netlink.c | 29 ++++++++++++++++++++++++++++- > 2 files changed, 29 insertions(+), 1 deletion(-) > > diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h > index 879e64950a0a2..9b814c92de123 100644 > --- a/include/uapi/linux/rtnetlink.h > +++ b/include/uapi/linux/rtnetlink.h > @@ -778,6 +778,7 @@ enum { > #define RTEXT_FILTER_BRVLAN (1 << 1) > #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2) > #define RTEXT_FILTER_SKIP_STATS (1 << 3) > +#define RTEXT_FILTER_MRP (1 << 4) > > /* End of information exported to user level */ > > diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c > index 240e260e3461c..6ecb7c7453dcb 100644 > --- a/net/bridge/br_netlink.c > +++ b/net/bridge/br_netlink.c > @@ -453,6 +453,32 @@ static int br_fill_ifinfo(struct sk_buff *skb, > rcu_read_unlock(); > if (err) > goto nla_put_failure; > + > + nla_nest_end(skb, af); > + } > + > + if (filter_mask & RTEXT_FILTER_MRP) { > + struct nlattr *af; > + int err; > + > + /* RCU needed because of the VLAN locking rules (rcu || rtnl) */ > + rcu_read_lock(); If you're using RCU, then in the previous patch (02) you should be using RCU primitives to walk the list and deref the ports. Alternatively if you rely on rtnl only then drop these RCU locks here as they're misleading. I'd prefer to just use RCU for it in case we drop rtnl one day when dumping. > + if (!br_mrp_enabled(br) || port) { > + rcu_read_unlock(); > + goto done; > + } > + af = nla_nest_start_noflag(skb, IFLA_AF_SPEC); > + if (!af) { > + rcu_read_unlock(); > + goto nla_put_failure; > + } > + > + err = br_mrp_fill_info(skb, br); > + > + rcu_read_unlock(); > + if (err) > + goto nla_put_failure; > + > nla_nest_end(skb, af); > } > > @@ -516,7 +542,8 @@ int br_getlink(struct sk_buff *skb, u32 pid, u32 seq, > struct net_bridge_port *port = br_port_get_rtnl(dev); > > if (!port && !(filter_mask & RTEXT_FILTER_BRVLAN) && > - !(filter_mask & RTEXT_FILTER_BRVLAN_COMPRESSED)) > + !(filter_mask & RTEXT_FILTER_BRVLAN_COMPRESSED) && > + !(filter_mask & RTEXT_FILTER_MRP)) > return 0; > > return br_fill_ifinfo(skb, port, pid, seq, RTM_NEWLINK, nlflags, >