From patchwork Wed Feb 6 20:46:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1037765 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="E8Na6xxp"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43vtmj0G0Vz9sN9 for ; Thu, 7 Feb 2019 07:47:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726797AbfBFUrc (ORCPT ); Wed, 6 Feb 2019 15:47:32 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:43298 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726001AbfBFUrb (ORCPT ); Wed, 6 Feb 2019 15:47:31 -0500 Received: by mail-pg1-f196.google.com with SMTP id v28so3429815pgk.10 for ; Wed, 06 Feb 2019 12:47:31 -0800 (PST) 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=coKeeRfOau6Z6voAa8tmXKLd+q9uQQ2UtnGr7Q2tDSc=; b=E8Na6xxpF4xxOhz3lj50K4Ft76mKc3gPEjbZiyxR41EY8dvh7Rm6ZUQf0wR2RTXNnQ pMPsnp3smbk4zDQ4FiVuWRCSIrY3x/I7bDGoRpDgFaJ5q+xF0bgmMIp1R5YXpfHiCDjO PGvSBU2xIYqNUzir05gVO0plNgt6CWqPB7u6EuTUy1DWsagAViJsnk3MUqQl1st1INDl 9wfHpMMnTk+lsiVQprKRPT3dBwuXeYQ3QGnFMm0fgXUSDRtCwWlvuoNgIoHFgEUxGu8h WjGIibz7PJYbVYUFTLxOWkjZuX8rU31iMp48K/dLhpho0867dqFOIa89kzvJCyVf4JHP BCtA== 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=coKeeRfOau6Z6voAa8tmXKLd+q9uQQ2UtnGr7Q2tDSc=; b=dJyZbUeAMEVn8tl9bLvLNgTuVum2iSFCqDO0syGBkgjixZ6qoGKh8d4rnYKbZ+djot OW6Ny8I9fhxOZwpEn8P8zdGn66SYtJ/Ya5VuvLlM/PBZdrqNc8baRKCSx5ADVfALo3b9 vqv6OQU5b9HVitbs6AGyh0gbYI031iTjIHzh2lEfdHGPi54+FX3X4zCDpk1P7CfzR8wF tQcwZFzYN5gXHKLEYUKCgUKzBtnx6md3mkNv3zbW0tmWn6xaVehwlGhuBA91c9R8Egll sZSUrrxXxG4oEsnsBFBPeOeoZnXeuXvs9jSY/8UgoOgaLfMNQRHPJry6WvDvxUMZC3BN RnEQ== X-Gm-Message-State: AHQUAubPRjQVNkzR7aXl63usI3l9VROdMTD0edDKpf9Zj6v6rld/Byl3 DqDBrNjQRS6q74JlJox66p28IBSU X-Google-Smtp-Source: AHgI3IbBKNibgIt0/p5v9k2FdvVdE3xkz2IWHKEPEUO9w+7BfGQ8/ATUCDxu20hDxsYIkAEyD7MksA== X-Received: by 2002:a62:c42:: with SMTP id u63mr12188164pfi.73.1549486050373; Wed, 06 Feb 2019 12:47:30 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id d21sm10597888pfo.162.2019.02.06.12.47.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Feb 2019 12:47:29 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, cphealy@gmail.com, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net-next 4/4] net: dsa: bcm_sf2: Allow looping back CFP rules Date: Wed, 6 Feb 2019 12:46:00 -0800 Message-Id: <20190206204600.24109-5-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190206204600.24109-1-f.fainelli@gmail.com> References: <20190206204600.24109-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When the source and destination port of a CFP rule match, we must set the loopback bit enable to allow that, otherwise the frame is discarded. Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2_cfp.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2_cfp.c b/drivers/net/dsa/bcm_sf2_cfp.c index 8747d18297fa..0b9ca4bdf47e 100644 --- a/drivers/net/dsa/bcm_sf2_cfp.c +++ b/drivers/net/dsa/bcm_sf2_cfp.c @@ -213,6 +213,7 @@ static inline unsigned int bcm_sf2_cfp_rule_size(struct bcm_sf2_priv *priv) static int bcm_sf2_cfp_act_pol_set(struct bcm_sf2_priv *priv, unsigned int rule_index, + int src_port, unsigned int port_num, unsigned int queue_num, bool fwd_map_change) @@ -230,6 +231,10 @@ static int bcm_sf2_cfp_act_pol_set(struct bcm_sf2_priv *priv, else reg = 0; + /* Enable looping back to the original port */ + if (src_port == port_num) + reg |= LOOP_BK_EN; + core_writel(priv, reg, CORE_ACT_POL_DATA0); /* Set classification ID that needs to be put in Broadcom tag */ @@ -443,7 +448,7 @@ static int bcm_sf2_cfp_ipv4_rule_set(struct bcm_sf2_priv *priv, int port, } /* Insert into Action and policer RAMs now */ - ret = bcm_sf2_cfp_act_pol_set(priv, rule_index, port_num, + ret = bcm_sf2_cfp_act_pol_set(priv, rule_index, port, port_num, queue_num, true); if (ret) goto out_err_flow_rule; @@ -733,7 +738,7 @@ static int bcm_sf2_cfp_ipv6_rule_set(struct bcm_sf2_priv *priv, int port, } /* Insert into Action and policer RAMs now */ - ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[0], port_num, + ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[0], port, port_num, queue_num, false); if (ret) goto out_err_flow_rule; @@ -795,7 +800,7 @@ static int bcm_sf2_cfp_ipv6_rule_set(struct bcm_sf2_priv *priv, int port, /* Insert into Action and policer RAMs now, set chain ID to * the one we are chained to */ - ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[1], port_num, + ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[1], port, port_num, queue_num, true); if (ret) goto out_err_flow_rule;