Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2650323imm; Sun, 12 Aug 2018 20:19:09 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxm12qm00+huK6wpE7Dvfr0Jsh0AULiC+jhtJn2gxx76tUMtsCZOycaenBFvMAbHAeA3O4E X-Received: by 2002:a17:902:b08d:: with SMTP id p13-v6mr15412012plr.0.1534130349137; Sun, 12 Aug 2018 20:19:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534130349; cv=none; d=google.com; s=arc-20160816; b=mwd0B8hZpy9wC1VtQx8ZTYJEl7G7XgvN3JielApi1S/m4G8jJFdHdrjNgyvM2h+Ijg 6mPJzLW9QO5xSzP/Gtd25OmIttG7em+WF8UdRy/rWnWCvDgLMJed8lShDVUR883A59yS AujqTuZWVIAKxsO+AXdU5C8zhKuFPv5SlzyAfTpBHIs1mBpmTXouOYXHBeGfjlr0a4qL CCUx+29QFGZMEbDjkq91I9wg//qSCZ/R1tqhzYbxKBPrpJoPUNlOouk+qzQ0rSrZJm4u 6MO5dBcM6cnX3ar797UvxwtBtOPFHe+1IcxCrJmxUJmNAeWhOXAltEfpX0zToSvzErbV E82g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=nragEhu+4wW9SxnA68/lbAN1RRQKSfnQ2xES0O4x9p8=; b=LaAldw20UZn68ZB/FifB8sT4q7gMC70hQiKPkJDcvBh09BGI9YFnw1MoOIeZtNoaE0 tGIy/it/0j03ACHhSrDWzCcHrh9ZW//CHM2zDbn77cne1B8RFffkD1Ku4Clo1nRSaWJR GUyu+F653g41K87TDLwk948nkaQZEKCBFrAtWUwwwkoiGr9kXQo7/kAgChtNEfMAgsTt c1Uau/PHsbbcMNDxTVcKVwIzBbC9jez1ke3DrbBzF8Ue5UGPzIp0yhSCIlVmNf18AgHs GBNnNuz2Jt3FXUxRZfkLBxYb3buYoj74wY14WRm9Tp81bA+dhGsevYsuYtPio8IrZUMR dTqQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e17-v6si13950294pgv.615.2018.08.12.20.18.54; Sun, 12 Aug 2018 20:19:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728386AbeHMF6H (ORCPT + 99 others); Mon, 13 Aug 2018 01:58:07 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:33312 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728128AbeHMF6G (ORCPT ); Mon, 13 Aug 2018 01:58:06 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AB765401B3A9; Mon, 13 Aug 2018 03:17:51 +0000 (UTC) Received: from jason-ThinkPad-T450s.redhat.com (ovpn-12-183.pek2.redhat.com [10.72.12.183]) by smtp.corp.redhat.com (Postfix) with ESMTP id 98EAA2156712; Mon, 13 Aug 2018 03:17:48 +0000 (UTC) From: Jason Wang To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, jbrouer@redhat.com, mst@redhat.com, Jason Wang Subject: [RFC PATCH net-next V2 4/6] macvlan: count the number of vlan in source mode Date: Mon, 13 Aug 2018 11:17:28 +0800 Message-Id: <1534130250-5302-5-git-send-email-jasowang@redhat.com> In-Reply-To: <1534130250-5302-1-git-send-email-jasowang@redhat.com> References: <1534130250-5302-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Mon, 13 Aug 2018 03:17:51 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Mon, 13 Aug 2018 03:17:51 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'jasowang@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch tries to count the number of vlans in source mode. This will be used for implementing XDP rx handler for macvlan. Signed-off-by: Jason Wang --- drivers/net/macvlan.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index cfda146..b7c814d 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -53,6 +53,7 @@ struct macvlan_port { struct hlist_head vlan_source_hash[MACVLAN_HASH_SIZE]; DECLARE_BITMAP(mc_filter, MACVLAN_MC_FILTER_SZ); unsigned char perm_addr[ETH_ALEN]; + unsigned long source_count; }; struct macvlan_source_entry { @@ -1433,6 +1434,9 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev, if (err) goto unregister_netdev; + if (vlan->mode == MACVLAN_MODE_SOURCE) + port->source_count++; + list_add_tail_rcu(&vlan->list, &port->vlans); netif_stacked_transfer_operstate(lowerdev, dev); linkwatch_fire_event(dev); @@ -1477,6 +1481,7 @@ static int macvlan_changelink(struct net_device *dev, struct netlink_ext_ack *extack) { struct macvlan_dev *vlan = netdev_priv(dev); + struct macvlan_port *port = vlan->port; enum macvlan_mode mode; bool set_mode = false; enum macvlan_macaddr_mode macmode; @@ -1491,8 +1496,10 @@ static int macvlan_changelink(struct net_device *dev, (vlan->mode == MACVLAN_MODE_PASSTHRU)) return -EINVAL; if (vlan->mode == MACVLAN_MODE_SOURCE && - vlan->mode != mode) + vlan->mode != mode) { macvlan_flush_sources(vlan->port, vlan); + port->source_count--; + } } if (data && data[IFLA_MACVLAN_FLAGS]) { @@ -1510,8 +1517,13 @@ static int macvlan_changelink(struct net_device *dev, } vlan->flags = flags; } - if (set_mode) + if (set_mode) { vlan->mode = mode; + if (mode == MACVLAN_MODE_SOURCE && + vlan->mode != mode) { + port->source_count++; + } + } if (data && data[IFLA_MACVLAN_MACADDR_MODE]) { if (vlan->mode != MACVLAN_MODE_SOURCE) return -EINVAL; -- 2.7.4