Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp6254393imm; Mon, 23 Jul 2018 14:28:21 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcf6nf5vTweu1sV4m2BCZeEWe/DVCQho30EWz2/Odz0cjyci+75QscvITXBJKjWeYBBu2P+ X-Received: by 2002:a65:450a:: with SMTP id n10-v6mr13400993pgq.392.1532381301545; Mon, 23 Jul 2018 14:28:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532381301; cv=none; d=google.com; s=arc-20160816; b=YCPRqFOLF1iJWHmmPqwidCgeqcqanTBQEq9HUhVVdHZbHzIUItK9SrmrFHVdCCESEu 24mIubpJg69vwPXdVh2Emg05Jo9EuDvqYDMaR+XQj6KUZFLK9V202PadRWZhgzFqjCyi zhxw4c+moLN2X5y+000uGn50IgbjHuafYaccrnWIFYP7qyauCVS06ueDL6eX+FVJaMo7 OJl+QQQDV2hyyJ7LRklJQJPDvpStWmR1n+ERsCA7/qjbH8QUBgqoMbLp5GEERUV/by5Y QVUDp2tuTIagaBtH2GGIQzS6tq95gqL6Ji4kNv9O+bTNTPTQ73nCnklpZk8METvB8uhW Rr2Q== 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:dkim-signature:arc-authentication-results; bh=d1Za27wcuN7sHeOL/0KokiwCWrvu5jc334Ssx7ln6cQ=; b=GFuULEDVw23MyMbG2MdKE4L4Je0UFbcfaEpxOLWKACDb/UmxBpUwALP+AwwjImvDD2 ZSvRd47JJbkZk6sfzJXrXT3MLRwFH9BnzWyxYsuxCjhYqpE1ZXOM+8zrizNkXpO4OQz+ D5d3KN2W+cLOOxMesRS5bvo43HGT5dWT9GdaPHPUkcFvj7kqWmvE1vthG5TiA+ldDtD7 WUcS9xUNFcLMPiXVkeEtepA9BEy0kNIDS0sX0/eN5BxGKONquicNRnrsK7PteH/gAxhz XkZ3dP6WwyvhG53Y1nh/6R+8Noz2DsvR9uW382azzCxgQeM4JCNKbN6td33kg06I16BS ENSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VxLGjWVm; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j15-v6si9794355pgb.472.2018.07.23.14.28.06; Mon, 23 Jul 2018 14:28:21 -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; dkim=pass header.i=@linaro.org header.s=google header.b=VxLGjWVm; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388326AbeGWWaF (ORCPT + 99 others); Mon, 23 Jul 2018 18:30:05 -0400 Received: from mail-lj1-f194.google.com ([209.85.208.194]:32811 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388282AbeGWWaD (ORCPT ); Mon, 23 Jul 2018 18:30:03 -0400 Received: by mail-lj1-f194.google.com with SMTP id s12-v6so1779303ljj.0 for ; Mon, 23 Jul 2018 14:26:56 -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=d1Za27wcuN7sHeOL/0KokiwCWrvu5jc334Ssx7ln6cQ=; b=VxLGjWVmg52DX/Z2bx/9MzKKF/eQFkgY/odRP6QZDV0aE0SyupBBBa34pdIf71ozlq XLgWvoh5sAd+QjroInR5X0xexI1lCZtoXeTASrdFOXtRVg0VR8Z2on0rrscn0ADmDfeH i5kB8ztBxosNweVWp/XJBpQMQXMw+6c85t6b4= 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=d1Za27wcuN7sHeOL/0KokiwCWrvu5jc334Ssx7ln6cQ=; b=oPcjoz96bobGk/N7sZaeDtVKtxjCQiMYeDZq+PE0W2HFVQNFZKidd3raM9UqE314Gs VhK+RfNMxAJnH0jpvEJ9cVmfY3eELF0Wk9z3npovKv5zBaBFNB8V3QrMOGQnqYKtkjBC MNtQnDwYFg0RoOWkOcGxu5886Np0TefRHQuLx0Uy5sOX9R7qRQKMsEJswpLs8Su2kgfL 4FKel/N9G64JXmEiY0ac+U8ERsA+lxfZ+qZShl+m7UbZm7JzJkKy8veQV4a0VIXfycHK SBZpLdF7M51RcpWubxju8ciokSY1ICvmuMLy8HsRfCjQffP1gSO0/heEHpAwZNWBJ6VA 0lDw== X-Gm-Message-State: AOUpUlG48DQ8C/8MDQhc3Vyj/OrZba+KVCEaxDv/Qs0IvSLRzczzK/hS 37BJpVyC3gt6wi8uIpe/blpaXA== X-Received: by 2002:a2e:1004:: with SMTP id j4-v6mr10458738lje.2.1532381215695; Mon, 23 Jul 2018 14:26:55 -0700 (PDT) Received: from localhost.localdomain (59-201-94-178.pool.ukrtel.net. [178.94.201.59]) by smtp.gmail.com with ESMTPSA id q4-v6sm1990435ljh.36.2018.07.23.14.26.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Jul 2018 14:26:54 -0700 (PDT) From: Ivan Khoronzhuk To: davem@davemloft.net, grygorii.strashko@ti.com Cc: corbet@lwn.net, akpm@linux-foundation.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, vinicius.gomes@intel.com, henrik@austad.us, jesus.sanchez-palencia@intel.com, ilias.apalodimas@linaro.org, p-varis@ti.com, spatton@ti.com, francois.ozog@linaro.org, yogeshs@ti.com, nsekhar@ti.com, andrew@lunn.ch, Ivan Khoronzhuk Subject: [PATCH v5 net-next 5/6] net: ethernet: ti: cpsw: restore shaper configuration while down/up Date: Tue, 24 Jul 2018 00:26:33 +0300 Message-Id: <20180723212634.3219-6-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180723212634.3219-1-ivan.khoronzhuk@linaro.org> References: <20180723212634.3219-1-ivan.khoronzhuk@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Need to restore shapers configuration after interface was down/up. This is needed as appropriate configuration is still replicated in kernel settings. This only shapers context restore, so vlan configuration should be restored by user if needed, especially for devices with one port where vlan frames are sent via ALE. Reviewed-by: Ilias Apalodimas Reviewed-by: Grygorii Strashko Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 449dc7f1e5f8..171abcfb6184 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -1808,6 +1808,51 @@ static int cpsw_set_cbs(struct net_device *ndev, return ret; } +static void cpsw_cbs_resume(struct cpsw_slave *slave, struct cpsw_priv *priv) +{ + int fifo, bw; + + for (fifo = CPSW_FIFO_SHAPERS_NUM; fifo > 0; fifo--) { + bw = priv->fifo_bw[fifo]; + if (!bw) + continue; + + cpsw_set_fifo_rlimit(priv, fifo, bw); + } +} + +static void cpsw_mqprio_resume(struct cpsw_slave *slave, struct cpsw_priv *priv) +{ + struct cpsw_common *cpsw = priv->cpsw; + u32 tx_prio_map = 0; + int i, tc, fifo; + u32 tx_prio_rg; + + if (!priv->mqprio_hw) + return; + + for (i = 0; i < 8; i++) { + tc = netdev_get_prio_tc_map(priv->ndev, i); + fifo = CPSW_FIFO_SHAPERS_NUM - tc; + tx_prio_map |= fifo << (4 * i); + } + + tx_prio_rg = cpsw->version == CPSW_VERSION_1 ? + CPSW1_TX_PRI_MAP : CPSW2_TX_PRI_MAP; + + slave_write(slave, tx_prio_map, tx_prio_rg); +} + +/* restore resources after port reset */ +static void cpsw_restore(struct cpsw_priv *priv) +{ + /* restore MQPRIO offload */ + for_each_slave(priv, cpsw_mqprio_resume, priv); + + /* restore CBS offload */ + for_each_slave(priv, cpsw_cbs_resume, priv); +} + static int cpsw_ndo_open(struct net_device *ndev) { struct cpsw_priv *priv = netdev_priv(ndev); @@ -1887,6 +1932,8 @@ static int cpsw_ndo_open(struct net_device *ndev) } + cpsw_restore(priv); + /* Enable Interrupt pacing if configured */ if (cpsw->coal_intvl != 0) { struct ethtool_coalesce coal; -- 2.17.1