From patchwork Thu Jan 19 16:58:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 91980 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp378622qgi; Thu, 19 Jan 2017 09:08:38 -0800 (PST) X-Received: by 10.84.232.201 with SMTP id x9mr14825120plm.102.1484845718896; Thu, 19 Jan 2017 09:08:38 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 3si4089908plm.58.2017.01.19.09.08.38; Thu, 19 Jan 2017 09:08:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of netdev-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; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-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 S1754050AbdASRII (ORCPT + 5 others); Thu, 19 Jan 2017 12:08:08 -0500 Received: from mail-lf0-f51.google.com ([209.85.215.51]:36727 "EHLO mail-lf0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753877AbdASRIF (ORCPT ); Thu, 19 Jan 2017 12:08:05 -0500 Received: by mail-lf0-f51.google.com with SMTP id z134so41353459lff.3 for ; Thu, 19 Jan 2017 09:08:04 -0800 (PST) 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=O5kPqVgWycT8yUFnv59Llw6iRNVuy//fI9F3f+o4Ujg=; b=RdOsb0TjaLQn8OGV2fJVVqLNA3Jf/xeItRjGpGJcBe56DJOVgPb95oLYKhn3xCPCdR oktlCHZAbs+jRIdP4FjQZvjbsJm6gkB7lQVKc2JA3d9AbpivJLxtw0JrO/L/r5YiTlKa hJ3Me30LaaWKLS+HzNPoIi6OyDhnefLqtukp0= 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=O5kPqVgWycT8yUFnv59Llw6iRNVuy//fI9F3f+o4Ujg=; b=ELA4znXU/zMVpSj7IXB/3svkWzJ5CYI0QYUlLTqa1a6/cJbZi6P9nPbuCMUQhr/GHo XyLgAVNrluEIqhNAZGG+63Q/FD/5F43P4L79SNxC8wglieEMFN0W+2xUafXh1f5btnZ9 ZJEhxh6c8qQoSx9jywhPe4ijcSzjPDm8FKGq/ssINAYBqHfESnzt08JBjpQ1NZA2CH95 WS8z9HWSluOKIKrmgM1Rovm4Ad1lqOGgOA1KIs+BtLPlyoNd/sf0HTa5ESmT/SGoLBKb qJIUpAlfBzH8HGwk41GEfoogdipSg4L0EvLhVrmPjr73ouQjz7bvoIpsd3PzkGJuv5DF ohBw== X-Gm-Message-State: AIkVDXKBV1SYbEnweO/DvedcmRicusIipR7jt6ZeL17qt083UmBVC7bg7wlu1KWT+Dzam4ji X-Received: by 10.25.74.72 with SMTP id x69mr3315355lfa.66.1484845111613; Thu, 19 Jan 2017 08:58:31 -0800 (PST) Received: from khorivan.synapse.com ([2001:67c:2e5c:2011:b088:28ef:5680:e1cf]) by smtp.gmail.com with ESMTPSA id r27sm2162942ljd.14.2017.01.19.08.58.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Jan 2017 08:58:31 -0800 (PST) From: Ivan Khoronzhuk To: mugunthanvnm@ti.com Cc: grygorii.strashko@ti.com, netdev@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, Ivan Khoronzhuk Subject: [PATCH v2 1/5] net: ethernet: ti: cpsw: remove dual check from common res usage function Date: Thu, 19 Jan 2017 18:58:23 +0200 Message-Id: <1484845107-30331-2-git-send-email-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> References: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Common res usage is possible only in case an interface is running. In case of not dual emac here can be only one interface, so while ndo_open and switch mode, only one interface can be opened, thus if open is called no any interface is running ... and no common res are used. So remove check on dual emac, it will simplify code/understanding and will match the name it's called. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 3 --- 1 file changed, 3 deletions(-) -- 2.7.4 diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 02b03ee..296ddf2 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -1240,9 +1240,6 @@ static int cpsw_common_res_usage_state(struct cpsw_common *cpsw) u32 i; u32 usage_count = 0; - if (!cpsw->data.dual_emac) - return 0; - for (i = 0; i < cpsw->data.slaves; i++) if (cpsw->slaves[i].open_stat) usage_count++; From patchwork Thu Jan 19 16:58:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 91979 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp378220qgi; Thu, 19 Jan 2017 09:07:55 -0800 (PST) X-Received: by 10.84.215.15 with SMTP id k15mr14595360pli.58.1484845675342; Thu, 19 Jan 2017 09:07:55 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k6si4057785pla.288.2017.01.19.09.07.55; Thu, 19 Jan 2017 09:07:55 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-omap-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753488AbdASRHw (ORCPT + 4 others); Thu, 19 Jan 2017 12:07:52 -0500 Received: from mail-lf0-f47.google.com ([209.85.215.47]:33215 "EHLO mail-lf0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753512AbdASRHc (ORCPT ); Thu, 19 Jan 2017 12:07:32 -0500 Received: by mail-lf0-f47.google.com with SMTP id k86so41271138lfi.0 for ; Thu, 19 Jan 2017 09:06:54 -0800 (PST) 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=69aHUBxHFUJ3TSuN6hso3+YqZW9tXsWKaoyUo1lGnyM=; b=iv1jj/XfAxjUzgmOAsuJsfdvYsdOWGrur17F5DQAqLhlREQ9T4GjMEaIlVa3QF6rPn 80i1e+onMut1nDcTJMQybRjAO+FwBeGbKXvqmQFMDS1Nlbxu2iaq3vTBEZUpYYrdu25h mJA6Fg77RL9TFY6cmoa5gZEbHgbD13KjMdZls= 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=69aHUBxHFUJ3TSuN6hso3+YqZW9tXsWKaoyUo1lGnyM=; b=knp7HFaU1zHEhGX1BxXll9rV9Y69++PFd5UQB2tM4mCSjHf3/IuBMVgA7KXhTb3qMk 8SHfQ6dd2PvtbZPu2U1eF2kn92WlFBu5lN5A/lTsuLw5IVRC8/rPyUY9KR1YTOs2hPYp sTE4ahY9ycG/1HRMkXH8YK4mjcbJbaEPjMNe25WDCuXg/pTI/X9xT4r3BKITS4pJHpNj iWHQHjnDbAEyQPByMcJIkpB8aoHlvO870BmwNIaQEns+NosJYIC9IDvxvfdsj/b7dMJX APL4hKQocjFP28D0xKZzEgLoWadqiijIAyQWuqxWKEhuUC1sEvkw5oDpasjaajDE8iJO ZKGg== X-Gm-Message-State: AIkVDXKhTdO86ez0QkcoA6VQO189YNuXqaykSOd3v2gq/+fuSGbNf+PcI5d+eD0BlBVx8S5o X-Received: by 10.25.201.71 with SMTP id z68mr2955820lff.3.1484845112828; Thu, 19 Jan 2017 08:58:32 -0800 (PST) Received: from khorivan.synapse.com ([2001:67c:2e5c:2011:b088:28ef:5680:e1cf]) by smtp.gmail.com with ESMTPSA id r27sm2162942ljd.14.2017.01.19.08.58.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Jan 2017 08:58:32 -0800 (PST) From: Ivan Khoronzhuk To: mugunthanvnm@ti.com Cc: grygorii.strashko@ti.com, netdev@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, Ivan Khoronzhuk Subject: [PATCH v2 2/5] net: ethernet: ti: cpsw: don't disable interrupts in ndo_open Date: Thu, 19 Jan 2017 18:58:24 +0200 Message-Id: <1484845107-30331-3-git-send-email-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> References: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org No need to disable interrupts if no open devices, they are disabled anyway. Even no need to disable interrupts if some ndev is opened, In this case shared resources are not touched, only parameters of ndev shell, so no reason to disable them also. Removed lines have proved it. So, no need in redundant check and interrupt disable. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 2 -- 1 file changed, 2 deletions(-) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 296ddf2..f798905 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -1480,8 +1480,6 @@ static int cpsw_ndo_open(struct net_device *ndev) return ret; } - if (!cpsw_common_res_usage_state(cpsw)) - cpsw_intr_disable(cpsw); netif_carrier_off(ndev); /* Notify the stack of the actual queue counts. */ From patchwork Thu Jan 19 16:58:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 91982 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp378799qgi; Thu, 19 Jan 2017 09:08:59 -0800 (PST) X-Received: by 10.84.248.10 with SMTP id p10mr14491393pll.87.1484845739647; Thu, 19 Jan 2017 09:08:59 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y30si4087148plh.106.2017.01.19.09.08.59; Thu, 19 Jan 2017 09:08:59 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of netdev-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; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-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 S1753993AbdASRHw (ORCPT + 5 others); Thu, 19 Jan 2017 12:07:52 -0500 Received: from mail-lf0-f42.google.com ([209.85.215.42]:35512 "EHLO mail-lf0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753488AbdASRHd (ORCPT ); Thu, 19 Jan 2017 12:07:33 -0500 Received: by mail-lf0-f42.google.com with SMTP id n124so41286137lfd.2 for ; Thu, 19 Jan 2017 09:06:50 -0800 (PST) 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=UEMUZoV/N4rZrx7tQDP55rHeVaO9UYIK1S//j3l5UJw=; b=W/ip1ILv6kP7YZPAAz179uM5FX0n0Z8lkg99iJbUZI6p4pWkpON2TA4TAxH0CdB/nW 0ZNZybyXfu09+mv48Ta3WjGi1HnPjhepc4fOZvJ+x0MYwE8fgEioSeozCzqJx21Xp1VJ RmWSip2kfgS6Jslg1yLKLG6kw5b26fZgTg6Qc= 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=UEMUZoV/N4rZrx7tQDP55rHeVaO9UYIK1S//j3l5UJw=; b=fYtikeKFigjPgcfVm6lg3y/iFASY9i/YMsW8hIUqiGbUioNCG5xqzb4MFJoG/ZDfbY 8+yZRYRhxxQUpBrDlNw8LDrJA4IXyvej95zltDnt7uqfcEGGmWmaByoKyXCTYXFIZ0i+ GtX/BBdW2ffel36N0t0dtZjRE0Nfo0a3YUGIutBS4HYWRsWzns5cuLwh7P8b775Nf5hj 6dCfjaYOZu6b7O3X88j10FVUT/2k/1SdkN11E8NDF43sI2exUtxER8ZqlrCwMnnSoiYR 8XmMRxOL1fKTF0CdUI6/sBgjIfLtJqJabmAbh5Sijz6LsevX6FEOC8JHtQdp+2BQoFqm SyKA== X-Gm-Message-State: AIkVDXJG6jx/gSBt8Gt03pgh0+rb/QQxDyNOanCz9x+KDAG/+UnDW1FuiY1PwKV95uah9Xdm X-Received: by 10.25.29.68 with SMTP id d65mr2907626lfd.112.1484845113962; Thu, 19 Jan 2017 08:58:33 -0800 (PST) Received: from khorivan.synapse.com ([2001:67c:2e5c:2011:b088:28ef:5680:e1cf]) by smtp.gmail.com with ESMTPSA id r27sm2162942ljd.14.2017.01.19.08.58.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Jan 2017 08:58:33 -0800 (PST) From: Ivan Khoronzhuk To: mugunthanvnm@ti.com Cc: grygorii.strashko@ti.com, netdev@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, Ivan Khoronzhuk Subject: [PATCH v2 3/5] net: ethernet: ti: cpsw: don't duplicate ndev_running Date: Thu, 19 Jan 2017 18:58:25 +0200 Message-Id: <1484845107-30331-4-git-send-email-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> References: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org No need to create additional vars to identify if interface is running. So simplify code by removing redundant var and checking usage counter instead. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) -- 2.7.4 diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index f798905..c681d39 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -357,7 +357,6 @@ struct cpsw_slave { struct phy_device *phy; struct net_device *ndev; u32 port_vlan; - u32 open_stat; }; static inline u32 slave_read(struct cpsw_slave *slave, u32 offset) @@ -1235,13 +1234,13 @@ static void cpsw_get_ethtool_stats(struct net_device *ndev, } } -static int cpsw_common_res_usage_state(struct cpsw_common *cpsw) +static int cpsw_get_usage_count(struct cpsw_common *cpsw) { u32 i; u32 usage_count = 0; for (i = 0; i < cpsw->data.slaves; i++) - if (cpsw->slaves[i].open_stat) + if (netif_running(cpsw->slaves[i].ndev)) usage_count++; return usage_count; @@ -1501,8 +1500,11 @@ static int cpsw_ndo_open(struct net_device *ndev) CPSW_MAJOR_VERSION(reg), CPSW_MINOR_VERSION(reg), CPSW_RTL_VERSION(reg)); - /* initialize host and slave ports */ - if (!cpsw_common_res_usage_state(cpsw)) + /* Initialize host and slave ports. + * Given ndev is marked as opened already, so init port only if 1 ndev + * is opened + */ + if (cpsw_get_usage_count(cpsw) < 2) cpsw_init_host_port(priv); for_each_slave(priv, cpsw_slave_open, priv); @@ -1513,7 +1515,10 @@ static int cpsw_ndo_open(struct net_device *ndev) cpsw_ale_add_vlan(cpsw->ale, cpsw->data.default_vlan, ALE_ALL_PORTS, ALE_ALL_PORTS, 0, 0); - if (!cpsw_common_res_usage_state(cpsw)) { + /* Given ndev is marked as opened already, so if more ndev + * are opened - no need to init shared resources. + */ + if (cpsw_get_usage_count(cpsw) < 2) { /* disable priority elevation */ __raw_writel(0, &cpsw->regs->ptype); @@ -1556,9 +1561,6 @@ static int cpsw_ndo_open(struct net_device *ndev) cpdma_ctlr_start(cpsw->dma); cpsw_intr_enable(cpsw); - if (cpsw->data.dual_emac) - cpsw->slaves[priv->emac_port].open_stat = true; - return 0; err_cleanup: @@ -1578,7 +1580,10 @@ static int cpsw_ndo_stop(struct net_device *ndev) netif_tx_stop_all_queues(priv->ndev); netif_carrier_off(priv->ndev); - if (cpsw_common_res_usage_state(cpsw) <= 1) { + /* Given ndev is marked as close already, + * so disable shared resources if no open devices + */ + if (!cpsw_get_usage_count(cpsw)) { napi_disable(&cpsw->napi_rx); napi_disable(&cpsw->napi_tx); cpts_unregister(cpsw->cpts); @@ -1592,8 +1597,6 @@ static int cpsw_ndo_stop(struct net_device *ndev) cpsw_split_res(ndev); pm_runtime_put_sync(cpsw->dev); - if (cpsw->data.dual_emac) - cpsw->slaves[priv->emac_port].open_stat = false; return 0; } @@ -2418,7 +2421,7 @@ static int cpsw_set_channels(struct net_device *ndev, netif_dormant_off(slave->ndev); } - if (cpsw_common_res_usage_state(cpsw)) { + if (cpsw_get_usage_count(cpsw)) { ret = cpsw_fill_rx_channels(priv); if (ret) goto err; @@ -2537,7 +2540,7 @@ static int cpsw_set_ringparam(struct net_device *ndev, netif_dormant_off(slave->ndev); } - if (cpsw_common_res_usage_state(cpsw)) { + if (cpsw_get_usage_count(cpsw)) { cpdma_chan_split_pool(cpsw->dma); ret = cpsw_fill_rx_channels(priv); From patchwork Thu Jan 19 16:58:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 91978 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp378201qgi; Thu, 19 Jan 2017 09:07:53 -0800 (PST) X-Received: by 10.99.127.28 with SMTP id a28mr5896989pgd.60.1484845673424; Thu, 19 Jan 2017 09:07:53 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k6si4057785pla.288.2017.01.19.09.07.53; Thu, 19 Jan 2017 09:07:53 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of linux-omap-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-omap-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753878AbdASRHt (ORCPT + 4 others); Thu, 19 Jan 2017 12:07:49 -0500 Received: from mail-lf0-f52.google.com ([209.85.215.52]:35832 "EHLO mail-lf0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753554AbdASRHd (ORCPT ); Thu, 19 Jan 2017 12:07:33 -0500 Received: by mail-lf0-f52.google.com with SMTP id n124so41301990lfd.2 for ; Thu, 19 Jan 2017 09:07:33 -0800 (PST) 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=WUdMdSbRKAgKeXy/Mw6EZqB7pvQOExhP3XVX8X4F0LQ=; b=HLOh/nVVtiz9b9uZs8/7Ls8pWvyWmuD74qJENMmtiwfiHnirNKpNsSwTSZfV8yxFoi vTIGrGTPN3Axc1Ki886nZModBCes1xkbB7b115kR54Y3TH5M+O5cht6eBoMhhnqB+Vo2 lNpMSnNA4zs09kK+wxcVH7XrXxOswUNm713hg= 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=WUdMdSbRKAgKeXy/Mw6EZqB7pvQOExhP3XVX8X4F0LQ=; b=iKI6bW91lGZYIxx3lt3quhQBOOstVIVdg7tDQO9kyKYJMX524Tokzr95Dc7sLXubw0 hkMPfAlig3UN0FbXtg6yk/F2vakfWMWlLMiRJl+7JCS/pP+tll3bqDSUwyHbSN+UDmSs E7ZVrvWaa0Vxp9ANU5R3c+lvPcEiEu7b4m40lG43HDnWjUkfeTUWS/gJ0UR+ZtygY9OL ICs7ysRLxWQ1jRqv6+XEF1tKVvYjWwKu19DBmWIuMXgjK+15HVxrimWzOSSNzqqeDL8S JtcSI5+NsdCr/goNPk7AwbW9i6HPxk8f0jECsN9Ys+rRASNQd9ZqLURJYR2lPDpraRRd VY2w== X-Gm-Message-State: AIkVDXJa4IylVJpm5gYxnHiqQZKRPb/GitMXNv1b88oKlNNUz9zqU8M+wuIScim3+RiZ7dH9 X-Received: by 10.25.190.205 with SMTP id o196mr3558183lff.130.1484845115080; Thu, 19 Jan 2017 08:58:35 -0800 (PST) Received: from khorivan.synapse.com ([2001:67c:2e5c:2011:b088:28ef:5680:e1cf]) by smtp.gmail.com with ESMTPSA id r27sm2162942ljd.14.2017.01.19.08.58.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Jan 2017 08:58:34 -0800 (PST) From: Ivan Khoronzhuk To: mugunthanvnm@ti.com Cc: grygorii.strashko@ti.com, netdev@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, Ivan Khoronzhuk Subject: [PATCH v2 4/5] net: ethernet: ti: cpsw: don't duplicate common res in rx handler Date: Thu, 19 Jan 2017 18:58:26 +0200 Message-Id: <1484845107-30331-5-git-send-email-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> References: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org No need to duplicate the same function in rx handler to get info if any interface is running. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index c681d39..1f14afd 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -671,6 +671,18 @@ static void cpsw_intr_disable(struct cpsw_common *cpsw) return; } +static int cpsw_get_usage_count(struct cpsw_common *cpsw) +{ + u32 i; + u32 usage_count = 0; + + for (i = 0; i < cpsw->data.slaves; i++) + if (netif_running(cpsw->slaves[i].ndev)) + usage_count++; + + return usage_count; +} + static void cpsw_tx_handler(void *token, int len, int status) { struct netdev_queue *txq; @@ -703,18 +715,10 @@ static void cpsw_rx_handler(void *token, int len, int status) cpsw_dual_emac_src_port_detect(cpsw, status, ndev, skb); if (unlikely(status < 0) || unlikely(!netif_running(ndev))) { - bool ndev_status = false; - struct cpsw_slave *slave = cpsw->slaves; - int n; - - if (cpsw->data.dual_emac) { - /* In dual emac mode check for all interfaces */ - for (n = cpsw->data.slaves; n; n--, slave++) - if (netif_running(slave->ndev)) - ndev_status = true; - } - - if (ndev_status && (status >= 0)) { + /* In dual emac mode check for all interfaces */ + if (cpsw->data.dual_emac && + cpsw_get_usage_count(cpsw) && + (status >= 0)) { /* The packet received is for the interface which * is already down and the other interface is up * and running, instead of freeing which results @@ -1234,18 +1238,6 @@ static void cpsw_get_ethtool_stats(struct net_device *ndev, } } -static int cpsw_get_usage_count(struct cpsw_common *cpsw) -{ - u32 i; - u32 usage_count = 0; - - for (i = 0; i < cpsw->data.slaves; i++) - if (netif_running(cpsw->slaves[i].ndev)) - usage_count++; - - return usage_count; -} - static inline int cpsw_tx_packet_submit(struct cpsw_priv *priv, struct sk_buff *skb, struct cpdma_chan *txch) From patchwork Thu Jan 19 16:58:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 91983 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp378922qgi; Thu, 19 Jan 2017 09:09:13 -0800 (PST) X-Received: by 10.99.44.3 with SMTP id s3mr11439631pgs.148.1484845753355; Thu, 19 Jan 2017 09:09:13 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w21si4052672pgi.268.2017.01.19.09.09.13; Thu, 19 Jan 2017 09:09:13 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of netdev-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; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-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 S1753941AbdASRHv (ORCPT + 5 others); Thu, 19 Jan 2017 12:07:51 -0500 Received: from mail-lf0-f45.google.com ([209.85.215.45]:34431 "EHLO mail-lf0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753581AbdASRHd (ORCPT ); Thu, 19 Jan 2017 12:07:33 -0500 Received: by mail-lf0-f45.google.com with SMTP id v186so41414967lfa.1 for ; Thu, 19 Jan 2017 09:07:13 -0800 (PST) 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=1dH5JrSe2PBBedY+nqOfK11y8JcPKm2xHZ0M4EhicEg=; b=WPXiU9ojdu2/5/PlGn0TeCsdvG6YUglgK5lPJTEvtPonFET5M4iQK6nOMuWi4xKrUD cCD6dXziR2LjwvCljpzhItXsejJI3GvWsvNI+pgsmE+WymCOkF/1ViCBtwzxr2lTaNnB h87jW3LUbDTbuyBlBTxwiCrvcbZbCWquq8gBE= 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=1dH5JrSe2PBBedY+nqOfK11y8JcPKm2xHZ0M4EhicEg=; b=e7Bkz+58kmS7ICiLCtirecA7z+9FqfLsfUxAIUPtMbbNyHVitcmmY8AwAHj839va9K +krjzaBC9X1bqRhaWTAXfEbcQ/0dvXP7tiLaEVvsqvOPqFr8/HeGC81/DwezEEpFrmUG zixuE5ilSNHfhy4cc0TwTUfoEJawkofqRGZxkxbs4ROB8dSBNQAUebA0z3aB924ueYvb YaY/sjhhY4AY4r0c9ubyZr/SkP6+KNnTboOtMs1TiAAh/Y3zUbdlU92IoXjeyU2Ado4J BzEPOGPamknjzJXvdV8AS5joRe6mK1KvLPpIB7JwqLFrsWdNeRxOaoykbD8n+8grTBzQ 5lhw== X-Gm-Message-State: AIkVDXJ7qbJ24zGyvs6L7jQVdbbx/oFnUvXZN/XgV6AoSQe7kBVDL17JN0BjRbBV8epL01b5 X-Received: by 10.46.20.78 with SMTP id 14mr4638337lju.23.1484845116198; Thu, 19 Jan 2017 08:58:36 -0800 (PST) Received: from khorivan.synapse.com ([2001:67c:2e5c:2011:b088:28ef:5680:e1cf]) by smtp.gmail.com with ESMTPSA id r27sm2162942ljd.14.2017.01.19.08.58.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Jan 2017 08:58:35 -0800 (PST) From: Ivan Khoronzhuk To: mugunthanvnm@ti.com Cc: grygorii.strashko@ti.com, netdev@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, Ivan Khoronzhuk Subject: [PATCH v2 5/5] net: ethernet: ti: cpsw: clarify ethtool ops changing num of descs Date: Thu, 19 Jan 2017 18:58:27 +0200 Message-Id: <1484845107-30331-6-git-send-email-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> References: <1484845107-30331-1-git-send-email-ivan.khoronzhuk@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org After adding cpsw_set_ringparam ethtool op, better to carry out common parts of similar ops splitting descriptors in runtime. It allows to reuse these parts and shows what the ops actually do. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 132 ++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 73 deletions(-) -- 2.7.4 diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 1f14afd..897ebbe 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -2358,17 +2358,11 @@ static int cpsw_update_channels(struct cpsw_priv *priv, return 0; } -static int cpsw_set_channels(struct net_device *ndev, - struct ethtool_channels *chs) +static void cpsw_suspend_data_pass(struct net_device *ndev) { - struct cpsw_priv *priv = netdev_priv(ndev); - struct cpsw_common *cpsw = priv->cpsw; + struct cpsw_common *cpsw = ndev_to_cpsw(ndev); struct cpsw_slave *slave; - int i, ret; - - ret = cpsw_check_ch_settings(cpsw, chs); - if (ret < 0) - return ret; + int i; /* Disable NAPI scheduling */ cpsw_intr_disable(cpsw); @@ -2386,6 +2380,51 @@ static int cpsw_set_channels(struct net_device *ndev, /* Handle rest of tx packets and stop cpdma channels */ cpdma_ctlr_stop(cpsw->dma); +} + +static int cpsw_resume_data_pass(struct net_device *ndev) +{ + struct cpsw_priv *priv = netdev_priv(ndev); + struct cpsw_common *cpsw = priv->cpsw; + struct cpsw_slave *slave; + int i, ret; + + /* Allow rx packets handling */ + for (i = cpsw->data.slaves, slave = cpsw->slaves; i; i--, slave++) + if (slave->ndev && netif_running(slave->ndev)) + netif_dormant_off(slave->ndev); + + /* After this receive is started */ + if (cpsw_get_usage_count(cpsw)) { + ret = cpsw_fill_rx_channels(priv); + if (ret) + return ret; + + cpdma_ctlr_start(cpsw->dma); + cpsw_intr_enable(cpsw); + } + + /* Resume transmit for every affected interface */ + for (i = cpsw->data.slaves, slave = cpsw->slaves; i; i--, slave++) + if (slave->ndev && netif_running(slave->ndev)) + netif_tx_start_all_queues(slave->ndev); + + return 0; +} + +static int cpsw_set_channels(struct net_device *ndev, + struct ethtool_channels *chs) +{ + struct cpsw_priv *priv = netdev_priv(ndev); + struct cpsw_common *cpsw = priv->cpsw; + struct cpsw_slave *slave; + int i, ret; + + ret = cpsw_check_ch_settings(cpsw, chs); + if (ret < 0) + return ret; + + cpsw_suspend_data_pass(ndev); ret = cpsw_update_channels(priv, chs); if (ret) goto err; @@ -2408,30 +2447,14 @@ static int cpsw_set_channels(struct net_device *ndev, dev_err(priv->dev, "cannot set real number of rx queues\n"); goto err; } - - /* Enable rx packets handling */ - netif_dormant_off(slave->ndev); } - if (cpsw_get_usage_count(cpsw)) { - ret = cpsw_fill_rx_channels(priv); - if (ret) - goto err; - + if (cpsw_get_usage_count(cpsw)) cpsw_split_res(ndev); - /* After this receive is started */ - cpdma_ctlr_start(cpsw->dma); - cpsw_intr_enable(cpsw); - } - - /* Resume transmit for every affected interface */ - for (i = cpsw->data.slaves, slave = cpsw->slaves; i; i--, slave++) { - if (!(slave->ndev && netif_running(slave->ndev))) - continue; - netif_tx_start_all_queues(slave->ndev); - } - return 0; + ret = cpsw_resume_data_pass(ndev); + if (!ret) + return 0; err: dev_err(priv->dev, "cannot update channels number, closing device\n"); dev_close(ndev); @@ -2492,8 +2515,7 @@ static int cpsw_set_ringparam(struct net_device *ndev, { struct cpsw_priv *priv = netdev_priv(ndev); struct cpsw_common *cpsw = priv->cpsw; - struct cpsw_slave *slave; - int i, ret; + int ret; /* ignore ering->tx_pending - only rx_pending adjustment is supported */ @@ -2505,54 +2527,18 @@ static int cpsw_set_ringparam(struct net_device *ndev, if (ering->rx_pending == cpdma_get_num_rx_descs(cpsw->dma)) return 0; - /* Disable NAPI scheduling */ - cpsw_intr_disable(cpsw); - - /* Stop all transmit queues for every network device. - * Disable re-using rx descriptors with dormant_on. - */ - for (i = cpsw->data.slaves, slave = cpsw->slaves; i; i--, slave++) { - if (!(slave->ndev && netif_running(slave->ndev))) - continue; - - netif_tx_stop_all_queues(slave->ndev); - netif_dormant_on(slave->ndev); - } - - /* Handle rest of tx packets and stop cpdma channels */ - cpdma_ctlr_stop(cpsw->dma); + cpsw_suspend_data_pass(ndev); cpdma_set_num_rx_descs(cpsw->dma, ering->rx_pending); - for (i = cpsw->data.slaves, slave = cpsw->slaves; i; i--, slave++) { - if (!(slave->ndev && netif_running(slave->ndev))) - continue; - - /* Enable rx packets handling */ - netif_dormant_off(slave->ndev); - } - - if (cpsw_get_usage_count(cpsw)) { + if (cpsw_get_usage_count(cpsw)) cpdma_chan_split_pool(cpsw->dma); - ret = cpsw_fill_rx_channels(priv); - if (ret) - goto err; - - /* After this receive is started */ - cpdma_ctlr_start(cpsw->dma); - cpsw_intr_enable(cpsw); - } + ret = cpsw_resume_data_pass(ndev); + if (!ret) + return 0; - /* Resume transmit for every affected interface */ - for (i = cpsw->data.slaves, slave = cpsw->slaves; i; i--, slave++) { - if (!(slave->ndev && netif_running(slave->ndev))) - continue; - netif_tx_start_all_queues(slave->ndev); - } - return 0; -err: - dev_err(priv->dev, "cannot set ring params, closing device\n"); + dev_err(&ndev->dev, "cannot set ring params, closing device\n"); dev_close(ndev); return ret; }