From patchwork Fri Aug 10 12:47:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 956239 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=linaro.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="FFp/WRu+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41n4f83QYpz9s4Z for ; Fri, 10 Aug 2018 22:47:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728196AbeHJPRJ (ORCPT ); Fri, 10 Aug 2018 11:17:09 -0400 Received: from mail-lj1-f193.google.com ([209.85.208.193]:46524 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728076AbeHJPRJ (ORCPT ); Fri, 10 Aug 2018 11:17:09 -0400 Received: by mail-lj1-f193.google.com with SMTP id 203-v6so7058041ljj.13 for ; Fri, 10 Aug 2018 05:47:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=V6hmd09XYpCGXiuhvOsp9DvV/Bv2s+eIOM1qddmcKlA=; b=FFp/WRu+t+oYQsOuluFJ1lNh743K69Nyj2sGogRbZEY//48Lk92pasBpLUbkujQcp2 YXGV36K9+aPkTb1//CchS6jdiJ4skHp5VfbyphKKW6V0H2wsCg2AYRZWgQ/fOSXpwFPK 2hsMwDwiE+kGZyhO58WEKVq9DKTNYzEN4d7Mo= 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=V6hmd09XYpCGXiuhvOsp9DvV/Bv2s+eIOM1qddmcKlA=; b=GktpcJ0wabb0oC34fljNMQP9AX3Ocbhq7qs8Iau3n9HNAjgvfdcXm/SJpgSLNWpTrM 4fVcvwiPlZ/X/U5J0M3XR4hGDHCZSfv7/fhx94GA6LXqv68buAxT48ZVkDAHxYzBG7U/ kD7EhmhYPQB6S5A8gD5D/BJWh3fUtzMmyngJx1RRCgTck1Gko2twg73PAciQa7um1u1v 7OJ22J5y1yeaOVUpiGo6UcnwM/U3AO3AJq82KuKYaZw7P0qACR1gJ1xDfLnXMZIyUkMs lbR2HZtQW8Y7Vb+svnY4N0QOLEN9Hgz2/FDlj024HwY7JcQHKn+ZiuCi5AOw70mPtzrM lbdA== X-Gm-Message-State: AOUpUlFoRrVoyDjKgcz76oS3lsvRPGRYN4PC73kAp818sDzkqegw/VBc axOdLJC2F9e/P05lky/28m3cQg== X-Google-Smtp-Source: AA+uWPxfkmV+5juHXoN/gDE5EDOqgduRjgKS86Z4/XlBN6wOXwUx4474A8zQ3UL7M1R0ns8aUhaYnQ== X-Received: by 2002:a2e:8617:: with SMTP id a23-v6mr4985207lji.43.1533905241225; Fri, 10 Aug 2018 05:47:21 -0700 (PDT) Received: from localhost.localdomain (59-201-94-178.pool.ukrtel.net. [178.94.201.59]) by smtp.gmail.com with ESMTPSA id 84-v6sm1626382lje.48.2018.08.10.05.47.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Aug 2018 05:47:20 -0700 (PDT) From: Ivan Khoronzhuk To: grygorii.strashko@ti.com, davem@davemloft.net Cc: linux-omap@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Ivan Khoronzhuk Subject: [PATCH 1/2] net: ethernet: ti: cpsw: clear all entries when delete vid Date: Fri, 10 Aug 2018 15:47:08 +0300 Message-Id: <20180810124709.25089-2-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180810124709.25089-1-ivan.khoronzhuk@linaro.org> References: <20180810124709.25089-1-ivan.khoronzhuk@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In cases if some of the entries were not found in forwarding table while killing vlan, the rest not needed entries still left in the table. No need to stop, as entry was deleted anyway. So fix this by returning error only after all was cleaned. To implement this, return -ENOENT in cpsw_ale_del_mcast() as it's supposed to be. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 14 ++++---------- drivers/net/ethernet/ti/cpsw_ale.c | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 358edab9e72e..9edac671f276 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -2125,16 +2125,10 @@ static int cpsw_ndo_vlan_rx_kill_vid(struct net_device *ndev, dev_info(priv->dev, "removing vlanid %d from vlan filter\n", vid); ret = cpsw_ale_del_vlan(cpsw->ale, vid, 0); - if (ret != 0) - return ret; - - ret = cpsw_ale_del_ucast(cpsw->ale, priv->mac_addr, - HOST_PORT_NUM, ALE_VLAN, vid); - if (ret != 0) - return ret; - - ret = cpsw_ale_del_mcast(cpsw->ale, priv->ndev->broadcast, - 0, ALE_VLAN, vid); + ret |= cpsw_ale_del_ucast(cpsw->ale, priv->mac_addr, + HOST_PORT_NUM, ALE_VLAN, vid); + ret |= cpsw_ale_del_mcast(cpsw->ale, priv->ndev->broadcast, + 0, ALE_VLAN, vid); pm_runtime_put(cpsw->dev); return ret; } diff --git a/drivers/net/ethernet/ti/cpsw_ale.c b/drivers/net/ethernet/ti/cpsw_ale.c index 93dc05c194d3..5766225a4ce1 100644 --- a/drivers/net/ethernet/ti/cpsw_ale.c +++ b/drivers/net/ethernet/ti/cpsw_ale.c @@ -394,7 +394,7 @@ int cpsw_ale_del_mcast(struct cpsw_ale *ale, u8 *addr, int port_mask, idx = cpsw_ale_match_addr(ale, addr, (flags & ALE_VLAN) ? vid : 0); if (idx < 0) - return -EINVAL; + return -ENOENT; cpsw_ale_read(ale, idx, ale_entry);