Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp284022ybl; Fri, 23 Aug 2019 00:28:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqwfZwe5pGYAAGEE/qsygH1cJ1V8L35V3GT7L1WNBuVmvbWGboDny2GxWTCT47JjFNceoUJo X-Received: by 2002:aa7:9ab8:: with SMTP id x24mr3546238pfi.98.1566545280515; Fri, 23 Aug 2019 00:28:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566545280; cv=none; d=google.com; s=arc-20160816; b=F9NOKJghszYB1pAYKmFgazEXah7cFRqpON+K+7V1cC3FgzXm04kYjgMqcUcIot6dI7 cjOBhFGUJvTq57r/sUPjNERZW6bua67embj9BnSyFiG9fHsRLsYVjf5Lo/zDo7UhabcP tZjNgp6g3qqh5xvnjfQNafDLmiot5xCrv/82EmOt0KfBye4EUOuXGWLTu8und902cCLE M3zjvMUTLzrNtxmVl1IR7qSlBLlyayhByzu+zyOgOqnyQ02kTJ/IVtAVCeH5XEVSTxCO hekyXMTkDSxGATRtYv45/jgyWRlFMPFm9xObSMmVVtxShx/U6SUgt4cGeerSnY71ZWlb 2Ujw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:ironport-sdr; bh=RVPIHzYtcU6U/txg8MwV+nZyQ/zuBR2ztNPutaIeI6k=; b=BZTZ0IoGZrl4IqTOUrclVO5Vbccfx61BfKS9z9u31o/zYF1NA76HMAlBcS7SlxPBAh +SnLsVzxOn9VSJaBYE7SqZFvkTbMe90WqDdJca4veexjBgAWnBjNd89g6GkMvRCT3eEx AsCyBSvd6EP9jxFmuSK1khyAC+gwecvLSxuVrQ6kKwKD/KRMJdg20qEDqwUEuKIwPm7d bUsQVaEKi5IeFWP/WTivq2His/yGLeBmzVweAqwrm7Ozrr24wpfHTUU06zgNwxml2oPt KZCVmorlcCHGX9vU935fevgASL2Anp5MbOw0od6x+aIW6szMQLyMFl57GuZBCHIAktN3 +7kQ== 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=microchip.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h3si1564635pjs.49.2019.08.23.00.27.44; Fri, 23 Aug 2019 00:28:00 -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=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391498AbfHVTIL (ORCPT + 99 others); Thu, 22 Aug 2019 15:08:11 -0400 Received: from esa3.microchip.iphmx.com ([68.232.153.233]:24585 "EHLO esa3.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391463AbfHVTIK (ORCPT ); Thu, 22 Aug 2019 15:08:10 -0400 Received-SPF: Pass (esa3.microchip.iphmx.com: domain of Horatiu.Vultur@microchip.com designates 198.175.253.82 as permitted sender) identity=mailfrom; client-ip=198.175.253.82; receiver=esa3.microchip.iphmx.com; envelope-from="Horatiu.Vultur@microchip.com"; x-sender="Horatiu.Vultur@microchip.com"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 mx a:ushub1.microchip.com a:smtpout.microchip.com a:mx1.microchip.iphmx.com a:mx2.microchip.iphmx.com include:servers.mcsv.net include:mktomail.com include:spf.protection.outlook.com ~all" Received-SPF: None (esa3.microchip.iphmx.com: no sender authenticity information available from domain of postmaster@email.microchip.com) identity=helo; client-ip=198.175.253.82; receiver=esa3.microchip.iphmx.com; envelope-from="Horatiu.Vultur@microchip.com"; x-sender="postmaster@email.microchip.com"; x-conformance=spf_only Authentication-Results: esa3.microchip.iphmx.com; dkim=none (message not signed) header.i=none; spf=Pass smtp.mailfrom=Horatiu.Vultur@microchip.com; spf=None smtp.helo=postmaster@email.microchip.com; dmarc=pass (p=none dis=none) d=microchip.com IronPort-SDR: p6TsNpFV/dT6Lm9QJJSaBBDLeHrS08P8mpzPc2Jre12VTgrPM5DLhQ6Uul1zO8W/AubdAqQXh0 +37Hh7O248bBlLmfag3hRxbsGIM/CDuTjvHi8+n1kPQaIqE/KfL8bX3Sv4VoCrQTBSMVGjOK1i replUztcpqCjKar5ksg8scvGXn/hatJXdqkqqYZr0pmCGJW0Ewgvzy2W7QlZ8h9Sl3Kg4VKUKc 8x4JklPR6d3TqdZ2LpRGNkgefozjLn5M/9qEeUsP2fLuZtwwGnLM555LqEdZGO1kBPTGI+7oEH w5I= X-IronPort-AV: E=Sophos;i="5.64,417,1559545200"; d="scan'208";a="46283521" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 22 Aug 2019 12:08:09 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 22 Aug 2019 12:08:07 -0700 Received: from soft-dev3.microsemi.net (10.10.85.251) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.1713.5 via Frontend Transport; Thu, 22 Aug 2019 12:08:05 -0700 From: Horatiu Vultur To: , , , , , , , , CC: Horatiu Vultur Subject: [PATCH 3/3] net: mscc: Implement promisc mode. Date: Thu, 22 Aug 2019 21:07:30 +0200 Message-ID: <1566500850-6247-4-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1566500850-6247-1-git-send-email-horatiu.vultur@microchip.com> References: <1566500850-6247-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Before when a port was added to a bridge then the port was added in promisc mode. But because of the patches: commit 6657c3d812dc5d ("net: Add HW_BRIDGE offload feature") commit e2e3678c292f9c (net: mscc: Use NETIF_F_HW_BRIDGE") the port is not needed to be in promisc mode to be part of the bridge. So it is possible to togle the promisc mode of the port even if it is or not part of the bridge. Signed-off-by: Horatiu Vultur --- drivers/net/ethernet/mscc/ocelot.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c index c9cf2bee..9fa97fe 100644 --- a/drivers/net/ethernet/mscc/ocelot.c +++ b/drivers/net/ethernet/mscc/ocelot.c @@ -691,6 +691,25 @@ static void ocelot_set_rx_mode(struct net_device *dev) __dev_mc_sync(dev, ocelot_mc_sync, ocelot_mc_unsync); } +static void ocelot_change_rx_flags(struct net_device *dev, int flags) +{ + struct ocelot_port *port = netdev_priv(dev); + struct ocelot *ocelot = port->ocelot; + u32 val; + + if (!(flags & IFF_PROMISC)) + return; + + val = ocelot_read_gix(ocelot, ANA_PORT_CPU_FWD_CFG, + port->chip_port); + if (dev->flags & IFF_PROMISC) + val |= ANA_PORT_CPU_FWD_CFG_CPU_SRC_COPY_ENA; + else + val &= ~(ANA_PORT_CPU_FWD_CFG_CPU_SRC_COPY_ENA); + + ocelot_write_gix(ocelot, val, ANA_PORT_CPU_FWD_CFG, port->chip_port); +} + static int ocelot_port_get_phys_port_name(struct net_device *dev, char *buf, size_t len) { @@ -1070,6 +1089,7 @@ static const struct net_device_ops ocelot_port_netdev_ops = { .ndo_stop = ocelot_port_stop, .ndo_start_xmit = ocelot_port_xmit, .ndo_set_rx_mode = ocelot_set_rx_mode, + .ndo_change_rx_flags = ocelot_change_rx_flags, .ndo_get_phys_port_name = ocelot_port_get_phys_port_name, .ndo_set_mac_address = ocelot_port_set_mac_address, .ndo_get_stats64 = ocelot_get_stats64, -- 2.7.4