From patchwork Mon Nov 12 14:00:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 150834 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp3174419ljp; Mon, 12 Nov 2018 06:00:37 -0800 (PST) X-Google-Smtp-Source: AJdET5f9j0HfCiWn9r5M/gJuYfjURE/PxAxQpUZcIOtAMGMxj9t7srxLrycI+HdkV7ECguzCiDPd X-Received: by 2002:a63:c447:: with SMTP id m7mr918600pgg.27.1542031237712; Mon, 12 Nov 2018 06:00:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542031237; cv=none; d=google.com; s=arc-20160816; b=DHGfQ1FggkvasyqKjS9UCBVfB2aTcFfkE7139PoAYCN58H+WlEiddgmsb9ndIXdV/6 qcGFi1mpwgrfSk5Un1YV4RxzxvJIZ4Og375hCn76Eupd+IwZL3luf4KzdNfNVueBnA9w JUQCLDjYEVbEmMOLEFW1jJnK2nD05TDYAjQKrecp8DRbSd14Wl0kF78adW2vv5xTXuNv hsQ8a9HjXQ90EFt4ZGAftCq978wEfuQQitNgwqOfPD2ZBrXeeTGEUjZkzU97qAVPeVIl gVvbyag+7W2+PxMAURLGkJjeZn895JXTd39uRzx/S18f3a1rROOhTbfJ3m+PMOR8SCom vXzw== 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; bh=V8urvcUPQ+tQ49xmHAyRhENzIqUDbp30F6VIaNi0cmM=; b=pQ/Mx/fw2jKPTtjG2eQZJQqy1wvBJgVcC+DOGXFFPlyrZRh1jkb2ZRKrMX5A8uHcac UD7hiNtBwLWnMDoGDU/YrONVKy4jDToGDxGQ/oPiqznkUW/nsIG+2Pv6Ib3PAlwwC+AL kIRT+k+BHakqmepEe5h/+gsf52sdt95V7ouU6iHpiMWmOlkGFgqKdN+Hl7Lh4y675LCr 6RYSK0e/XZm2jYuKNBCVmA4VWgJqggt0JsuFF0OL5aLBeVPOLytuZR5+pIdL4AqbntaW mwyoNqL7BX1X68vWsheY1QNm/TbbppdHWfmkSw0cMhVrwcqB7P/FiffovnsiMAejv3ME UpEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Oncwbz3m; 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 h1-v6si18123244pld.332.2018.11.12.06.00.37; Mon, 12 Nov 2018 06:00:37 -0800 (PST) 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=Oncwbz3m; 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 S1729856AbeKLXx6 (ORCPT + 32 others); Mon, 12 Nov 2018 18:53:58 -0500 Received: from mail-lj1-f193.google.com ([209.85.208.193]:45443 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729730AbeKLXx5 (ORCPT ); Mon, 12 Nov 2018 18:53:57 -0500 Received: by mail-lj1-f193.google.com with SMTP id s5-v6so7669042ljd.12 for ; Mon, 12 Nov 2018 06:00: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=V8urvcUPQ+tQ49xmHAyRhENzIqUDbp30F6VIaNi0cmM=; b=Oncwbz3msYxF0pCpdIkqihPgvA1zWrHwsLawVWOtl7nYzIC8cCRAnkbfiqwXg4lPCt rOkYSpuhVI/+SasxBFxCsun7E7XXlniVR19EjQODPey02KPgeh//3Dtu/MGbULnq46C4 gy8Wi2F6RP9u8dzzVKLg6divoITuDy13+yUdA= 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=V8urvcUPQ+tQ49xmHAyRhENzIqUDbp30F6VIaNi0cmM=; b=dPyOchpR6qpSgojfJ245cLHFlaE3c6wNgS/mE1+1fAhyiDLvRFYTswaqUgGeqKK46O oqcS6p96MAf/x6/Zmc8Yz5fCQ1YwJFWaxrukFW6l3G63Gc4KcP5uONDsP1hwrQDl5ye0 orqoLUZOcHTqqTziXGOJcShsdPdj3eP+aBV6h1m14MBCDcGS2pJHWSX66M0XGOpKxVft tfJvowhX04Il7jKmmwZtnkUokjrmJgbBeHY/VpRFT7OpT5Dpa3c9RStTcEWbNV8jRy4K KNPnCfgATuFgjEwt/jb2UAbubY36b3sucIFOMyyYnqCBc0qg0/PE9p5agFj61Ng6CzFm 3hVg== X-Gm-Message-State: AGRZ1gLaKYadfPuvnrXlQu2GsoD7FhRQET5UmX3LWHwmVzwnMci+3JbD cRdYs32j2owzLcEmYwMcvAnD5A== X-Received: by 2002:a2e:810b:: with SMTP id d11-v6mr661164ljg.143.1542031232259; Mon, 12 Nov 2018 06:00:32 -0800 (PST) Received: from localhost.localdomain (59-201-94-178.pool.ukrtel.net. [178.94.201.59]) by smtp.gmail.com with ESMTPSA id 26-v6sm3546387lje.18.2018.11.12.06.00.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Nov 2018 06:00:31 -0800 (PST) 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 net-next 1/4] net: ethernet: ti: cpts: correct debug for expired txq skb Date: Mon, 12 Nov 2018 16:00:20 +0200 Message-Id: <20181112140023.12407-2-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181112140023.12407-1-ivan.khoronzhuk@linaro.org> References: <20181112140023.12407-1-ivan.khoronzhuk@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The msgtype and seqid that is smth that belongs to event for comparison but not for staled txq skb. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpts.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) -- 2.17.1 diff --git a/drivers/net/ethernet/ti/cpts.c b/drivers/net/ethernet/ti/cpts.c index b96b93c686bf..dac4c528a1ff 100644 --- a/drivers/net/ethernet/ti/cpts.c +++ b/drivers/net/ethernet/ti/cpts.c @@ -119,9 +119,7 @@ static bool cpts_match_tx_ts(struct cpts *cpts, struct cpts_event *event) if (time_after(jiffies, skb_cb->tmo)) { /* timeout any expired skbs over 1s */ - dev_dbg(cpts->dev, - "expiring tx timestamp mtype %u seqid %04x\n", - mtype, seqid); + dev_dbg(cpts->dev, "expiring tx timestamp from txq\n"); __skb_unlink(skb, &cpts->txq); dev_consume_skb_any(skb); } From patchwork Mon Nov 12 14:00:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 150836 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp3174485ljp; Mon, 12 Nov 2018 06:00:40 -0800 (PST) X-Google-Smtp-Source: AJdET5edL092ItiROnZDken862TnfjnKAB+AbW+qPsUBzY6+lhmD0W0DcKzLNbqY8TU4K35G/bvT X-Received: by 2002:a63:c051:: with SMTP id z17mr921697pgi.20.1542031240701; Mon, 12 Nov 2018 06:00:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542031240; cv=none; d=google.com; s=arc-20160816; b=V7lOpJlZDXCWmZGJwHweIS/p6IpAtAc1jaCzNf57FkSWLr1y13tfIH9VPnKH3DkgyC ieBhVzMIn0viK5pgFG8QmABRGvkArmXzh3xTXTf8zTuomeVo86S6MpataTwP3HHwJjiT 41YtJtEcNMtPRL1DNjyCQUrO1KVdvt5B12GWuYigSMRmJ4enQkO1/YK3MUTysEc0i1mN SuRGziEKYkQTqsL4tlwUYIh58gedOAXRw96bYQ4mYjxpnKfbgt/kHF0yZry5hvMk/FwE 479JrB9Qey+6Ez6vRoC3lPVeKdzTK50Etnn9nqS2bSBhJLARCSnKIRSMu7o6Dw3mTr4/ QRHw== 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; bh=puz0jFo+6cpY0dizKNKqeBKCAlkR0vjPbuTWAsOwiP4=; b=sKrKKnaqDYOqku7UCUOxN9JZLAjtPaP7y2F47W4o1kV54PNwQgOfhOHj4+fvpBIzt9 4e4JFry2q5RHpp8nAKnYsVHmMw8ivWm316MjouBPeqS6s+OEBGeJ4mF+dyMpDRevwBTd STq1H4zeEGfxlfo9Ux0LuJKaZDYE88cKZnIvdMxDEeYZWiymXk5KyKvLzLQi65WZzxNi nMru/267C7zHKROFCkjQrK51Fvd9+MrXSk6nmRPexOJX5uRgLK3b68P4oVhoMZhF4uJP Cw8TR+tZWNewXIaCRw+2takNyuuotdNLdu/YK+BI5Uuq4PncjTi6Nkua909MtiLJyr+X 3wTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=X8lJigIs; 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 r24-v6si15529389pgj.92.2018.11.12.06.00.40; Mon, 12 Nov 2018 06:00:40 -0800 (PST) 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=X8lJigIs; 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 S1729940AbeKLXyC (ORCPT + 32 others); Mon, 12 Nov 2018 18:54:02 -0500 Received: from mail-lj1-f195.google.com ([209.85.208.195]:45455 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729861AbeKLXyB (ORCPT ); Mon, 12 Nov 2018 18:54:01 -0500 Received: by mail-lj1-f195.google.com with SMTP id s5-v6so7669239ljd.12 for ; Mon, 12 Nov 2018 06:00:36 -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=puz0jFo+6cpY0dizKNKqeBKCAlkR0vjPbuTWAsOwiP4=; b=X8lJigIsywcvfSfSWrP7dyGC5aSisB0yreXewpLXNZuSBAuXlGMLlSizNdZJejPLTS mYAktuJxEcXwUiyn50sY7h1PWg1yRGb1tOqTRiWNoIHJrbN3MfRqCSsw4aFiDiC8K45J r+r6qbEonUjM6nlhrsSOtomn86SwiumfyTMrE= 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=puz0jFo+6cpY0dizKNKqeBKCAlkR0vjPbuTWAsOwiP4=; b=BGT+XZTFBrsbK0dsTloapSRiIsZzyJJAx/U0DPpt+32ahctJpUtBWiDB3PjBkc8+jO e3RXsOfXXp5Tevrgdn0xNzrK5I/GX40OwXIdwlzpjA0lNP6qOVbkbUaGh/9Irvkg8zPh bDWSqghJC3JeXPb8SBnpKyNXm6+FZsxbkVxSxoOC19ftKQ/5wqL5HTB+WljBJL+qc0gW v/gYjDq4MSIDiIkrzU4a4898cjTmUgo4OBgRHWetf0IxMUXswmnfjWSjYaXn5o/gnBjh aMQusPOFxGMna1ZB/oEvbs22JI5uGHdFIxFiicd7tQY2npZgQIn55Wj/BOF+BDY1MKrt ZkWg== X-Gm-Message-State: AGRZ1gKnLHaR29SblqFR6+c8EGEeg2z+FJQ4WGf7MYUNe6CMkmMenyCP BG3ffqMB2WaElv825hy2CDVQF0oVlRc= X-Received: by 2002:a2e:8007:: with SMTP id j7-v6mr805125ljg.22.1542031235332; Mon, 12 Nov 2018 06:00:35 -0800 (PST) Received: from localhost.localdomain (59-201-94-178.pool.ukrtel.net. [178.94.201.59]) by smtp.gmail.com with ESMTPSA id 26-v6sm3546387lje.18.2018.11.12.06.00.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Nov 2018 06:00:34 -0800 (PST) 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 net-next 3/4] net: ethernet: ti: cpts: move enable/disable flags outside of cpts module Date: Mon, 12 Nov 2018 16:00:22 +0200 Message-Id: <20181112140023.12407-4-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181112140023.12407-1-ivan.khoronzhuk@linaro.org> References: <20181112140023.12407-1-ivan.khoronzhuk@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Each slave has it's own receive timestamp filter. But cpts rx/tx timestamp enable flags are used to allow ts retrieve only for one user. This limitation causes data path redundancy and setting overlap if cpsw module is in dual-mac mode for instance. If rx ts is enabled only for one port - the second interface must expect every incoming packet to be PTP packet w/o absolutely any reason, and if it's PTP - do unneeded stuff, as rx filter for second port is not set and cpts fifo is not supposed to contain appropriate ts event. That's not correct. So, to fix control overlap and avoid redundant CPU cycles, the patch splits rx/tx ts enable flags between network devices. After the patch, PTP timestamping still should be used for only one port (or PTP id counter has to be different for both ports as cpts IP is common). Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 46 ++++++++++++++------------- drivers/net/ethernet/ti/cpts.c | 2 -- drivers/net/ethernet/ti/cpts.h | 38 ---------------------- drivers/net/ethernet/ti/netcp_ethss.c | 32 ++++++++++--------- 4 files changed, 41 insertions(+), 77 deletions(-) -- 2.17.1 diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 9434fd5a5477..48ea21e7e0cb 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -466,6 +466,8 @@ struct cpsw_priv { bool mqprio_hw; int fifo_bw[CPSW_TC_NUM]; int shp_cfg_speed; + int tx_ts_enabled; + int rx_ts_enabled; u32 emac_port; struct cpsw_common *cpsw; }; @@ -905,6 +907,7 @@ static void cpsw_rx_handler(void *token, int len, int status) struct net_device *ndev = skb->dev; int ret = 0, port; struct cpsw_common *cpsw = ndev_to_cpsw(ndev); + struct cpsw_priv *priv; if (cpsw->data.dual_emac) { port = CPDMA_RX_SOURCE_PORT(status); @@ -939,7 +942,9 @@ static void cpsw_rx_handler(void *token, int len, int status) skb_put(skb, len); if (status & CPDMA_RX_VLAN_ENCAP) cpsw_rx_vlan_encap(skb); - cpts_rx_timestamp(cpsw->cpts, skb); + priv = netdev_priv(ndev); + if (priv->rx_ts_enabled) + cpts_rx_timestamp(cpsw->cpts, skb); skb->protocol = eth_type_trans(skb, ndev); netif_receive_skb(skb); ndev->stats.rx_bytes += len; @@ -2126,7 +2131,7 @@ static netdev_tx_t cpsw_ndo_start_xmit(struct sk_buff *skb, } if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP && - cpts_is_tx_enabled(cpts) && cpts_can_timestamp(cpts, skb)) + priv->tx_ts_enabled && cpts_can_timestamp(cpts, skb)) skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; q_idx = skb_get_queue_mapping(skb); @@ -2170,13 +2175,13 @@ static netdev_tx_t cpsw_ndo_start_xmit(struct sk_buff *skb, #if IS_ENABLED(CONFIG_TI_CPTS) -static void cpsw_hwtstamp_v1(struct cpsw_common *cpsw) +static void cpsw_hwtstamp_v1(struct cpsw_priv *priv) { + struct cpsw_common *cpsw = priv->cpsw; struct cpsw_slave *slave = &cpsw->slaves[cpsw->data.active_slave]; u32 ts_en, seq_id; - if (!cpts_is_tx_enabled(cpsw->cpts) && - !cpts_is_rx_enabled(cpsw->cpts)) { + if (!priv->tx_ts_enabled && !priv->rx_ts_enabled) { slave_write(slave, 0, CPSW1_TS_CTL); return; } @@ -2184,10 +2189,10 @@ static void cpsw_hwtstamp_v1(struct cpsw_common *cpsw) seq_id = (30 << CPSW_V1_SEQ_ID_OFS_SHIFT) | ETH_P_1588; ts_en = EVENT_MSG_BITS << CPSW_V1_MSG_TYPE_OFS; - if (cpts_is_tx_enabled(cpsw->cpts)) + if (priv->tx_ts_enabled) ts_en |= CPSW_V1_TS_TX_EN; - if (cpts_is_rx_enabled(cpsw->cpts)) + if (priv->rx_ts_enabled) ts_en |= CPSW_V1_TS_RX_EN; slave_write(slave, ts_en, CPSW1_TS_CTL); @@ -2207,20 +2212,20 @@ static void cpsw_hwtstamp_v2(struct cpsw_priv *priv) case CPSW_VERSION_2: ctrl &= ~CTRL_V2_ALL_TS_MASK; - if (cpts_is_tx_enabled(cpsw->cpts)) + if (priv->tx_ts_enabled) ctrl |= CTRL_V2_TX_TS_BITS; - if (cpts_is_rx_enabled(cpsw->cpts)) + if (priv->rx_ts_enabled) ctrl |= CTRL_V2_RX_TS_BITS; break; case CPSW_VERSION_3: default: ctrl &= ~CTRL_V3_ALL_TS_MASK; - if (cpts_is_tx_enabled(cpsw->cpts)) + if (priv->tx_ts_enabled) ctrl |= CTRL_V3_TX_TS_BITS; - if (cpts_is_rx_enabled(cpsw->cpts)) + if (priv->rx_ts_enabled) ctrl |= CTRL_V3_RX_TS_BITS; break; } @@ -2237,7 +2242,6 @@ static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) struct cpsw_priv *priv = netdev_priv(dev); struct hwtstamp_config cfg; struct cpsw_common *cpsw = priv->cpsw; - struct cpts *cpts = cpsw->cpts; if (cpsw->version != CPSW_VERSION_1 && cpsw->version != CPSW_VERSION_2 && @@ -2256,7 +2260,7 @@ static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) switch (cfg.rx_filter) { case HWTSTAMP_FILTER_NONE: - cpts_rx_enable(cpts, 0); + priv->rx_ts_enabled = 0; break; case HWTSTAMP_FILTER_ALL: case HWTSTAMP_FILTER_NTP_ALL: @@ -2264,7 +2268,7 @@ static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: case HWTSTAMP_FILTER_PTP_V1_L4_SYNC: case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ: - cpts_rx_enable(cpts, HWTSTAMP_FILTER_PTP_V1_L4_EVENT); + priv->rx_ts_enabled = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; cfg.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; break; case HWTSTAMP_FILTER_PTP_V2_L4_EVENT: @@ -2276,18 +2280,18 @@ static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) case HWTSTAMP_FILTER_PTP_V2_EVENT: case HWTSTAMP_FILTER_PTP_V2_SYNC: case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ: - cpts_rx_enable(cpts, HWTSTAMP_FILTER_PTP_V2_EVENT); + priv->rx_ts_enabled = HWTSTAMP_FILTER_PTP_V2_EVENT; cfg.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; break; default: return -ERANGE; } - cpts_tx_enable(cpts, cfg.tx_type == HWTSTAMP_TX_ON); + priv->tx_ts_enabled = cfg.tx_type == HWTSTAMP_TX_ON; switch (cpsw->version) { case CPSW_VERSION_1: - cpsw_hwtstamp_v1(cpsw); + cpsw_hwtstamp_v1(priv); break; case CPSW_VERSION_2: case CPSW_VERSION_3: @@ -2303,7 +2307,7 @@ static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr) static int cpsw_hwtstamp_get(struct net_device *dev, struct ifreq *ifr) { struct cpsw_common *cpsw = ndev_to_cpsw(dev); - struct cpts *cpts = cpsw->cpts; + struct cpsw_priv *priv = netdev_priv(dev); struct hwtstamp_config cfg; if (cpsw->version != CPSW_VERSION_1 && @@ -2312,10 +2316,8 @@ static int cpsw_hwtstamp_get(struct net_device *dev, struct ifreq *ifr) return -EOPNOTSUPP; cfg.flags = 0; - cfg.tx_type = cpts_is_tx_enabled(cpts) ? - HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF; - cfg.rx_filter = (cpts_is_rx_enabled(cpts) ? - cpts->rx_enable : HWTSTAMP_FILTER_NONE); + cfg.tx_type = priv->tx_ts_enabled ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF; + cfg.rx_filter = priv->rx_ts_enabled; return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; } diff --git a/drivers/net/ethernet/ti/cpts.c b/drivers/net/ethernet/ti/cpts.c index 63232b35024e..054f78295d1d 100644 --- a/drivers/net/ethernet/ti/cpts.c +++ b/drivers/net/ethernet/ti/cpts.c @@ -430,8 +430,6 @@ void cpts_rx_timestamp(struct cpts *cpts, struct sk_buff *skb) u64 ns; struct skb_shared_hwtstamps *ssh; - if (!cpts->rx_enable) - return; ns = cpts_find_ts(cpts, skb, CPTS_EV_RX); if (!ns) return; diff --git a/drivers/net/ethernet/ti/cpts.h b/drivers/net/ethernet/ti/cpts.h index 73d73faf0f38..d2c7decd59b6 100644 --- a/drivers/net/ethernet/ti/cpts.h +++ b/drivers/net/ethernet/ti/cpts.h @@ -136,26 +136,6 @@ struct cpts *cpts_create(struct device *dev, void __iomem *regs, struct device_node *node); void cpts_release(struct cpts *cpts); -static inline void cpts_rx_enable(struct cpts *cpts, int enable) -{ - cpts->rx_enable = enable; -} - -static inline bool cpts_is_rx_enabled(struct cpts *cpts) -{ - return !!cpts->rx_enable; -} - -static inline void cpts_tx_enable(struct cpts *cpts, int enable) -{ - cpts->tx_enable = enable; -} - -static inline bool cpts_is_tx_enabled(struct cpts *cpts) -{ - return !!cpts->tx_enable; -} - static inline bool cpts_can_timestamp(struct cpts *cpts, struct sk_buff *skb) { unsigned int class = ptp_classify_raw(skb); @@ -197,24 +177,6 @@ static inline void cpts_unregister(struct cpts *cpts) { } -static inline void cpts_rx_enable(struct cpts *cpts, int enable) -{ -} - -static inline bool cpts_is_rx_enabled(struct cpts *cpts) -{ - return false; -} - -static inline void cpts_tx_enable(struct cpts *cpts, int enable) -{ -} - -static inline bool cpts_is_tx_enabled(struct cpts *cpts) -{ - return false; -} - static inline bool cpts_can_timestamp(struct cpts *cpts, struct sk_buff *skb) { return false; diff --git a/drivers/net/ethernet/ti/netcp_ethss.c b/drivers/net/ethernet/ti/netcp_ethss.c index 0397ccb6597e..20d81e0b1c29 100644 --- a/drivers/net/ethernet/ti/netcp_ethss.c +++ b/drivers/net/ethernet/ti/netcp_ethss.c @@ -763,6 +763,8 @@ struct gbe_priv { int cpts_registered; struct cpts *cpts; + int rx_ts_enabled; + int tx_ts_enabled; }; struct gbe_intf { @@ -2564,7 +2566,7 @@ static int gbe_txtstamp_mark_pkt(struct gbe_intf *gbe_intf, struct gbe_priv *gbe_dev = gbe_intf->gbe_dev; if (!(skb_shinfo(p_info->skb)->tx_flags & SKBTX_HW_TSTAMP) || - !cpts_is_tx_enabled(gbe_dev->cpts)) + !gbe_dev->tx_ts_enabled) return 0; /* If phy has the txtstamp api, assume it will do it. @@ -2598,7 +2600,9 @@ static int gbe_rxtstamp(struct gbe_intf *gbe_intf, struct netcp_packet *p_info) return 0; } - cpts_rx_timestamp(gbe_dev->cpts, p_info->skb); + if (gbe_dev->rx_ts_enabled) + cpts_rx_timestamp(gbe_dev->cpts, p_info->skb); + p_info->rxtstamp_complete = true; return 0; @@ -2614,10 +2618,8 @@ static int gbe_hwtstamp_get(struct gbe_intf *gbe_intf, struct ifreq *ifr) return -EOPNOTSUPP; cfg.flags = 0; - cfg.tx_type = cpts_is_tx_enabled(cpts) ? - HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF; - cfg.rx_filter = (cpts_is_rx_enabled(cpts) ? - cpts->rx_enable : HWTSTAMP_FILTER_NONE); + cfg.tx_type = gbe_dev->tx_ts_enabled ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF; + cfg.rx_filter = gbe_dev->rx_ts_enabled; return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; } @@ -2628,8 +2630,8 @@ static void gbe_hwtstamp(struct gbe_intf *gbe_intf) struct gbe_slave *slave = gbe_intf->slave; u32 ts_en, seq_id, ctl; - if (!cpts_is_rx_enabled(gbe_dev->cpts) && - !cpts_is_tx_enabled(gbe_dev->cpts)) { + if (!gbe_dev->rx_ts_enabled && + !gbe_dev->tx_ts_enabled) { writel(0, GBE_REG_ADDR(slave, port_regs, ts_ctl)); return; } @@ -2641,10 +2643,10 @@ static void gbe_hwtstamp(struct gbe_intf *gbe_intf) (slave->ts_ctl.uni ? TS_UNI_EN : slave->ts_ctl.maddr_map << TS_CTL_MADDR_SHIFT); - if (cpts_is_tx_enabled(gbe_dev->cpts)) + if (gbe_dev->tx_ts_enabled) ts_en |= (TS_TX_ANX_ALL_EN | TS_TX_VLAN_LT1_EN); - if (cpts_is_rx_enabled(gbe_dev->cpts)) + if (gbe_dev->rx_ts_enabled) ts_en |= (TS_RX_ANX_ALL_EN | TS_RX_VLAN_LT1_EN); writel(ts_en, GBE_REG_ADDR(slave, port_regs, ts_ctl)); @@ -2670,10 +2672,10 @@ static int gbe_hwtstamp_set(struct gbe_intf *gbe_intf, struct ifreq *ifr) switch (cfg.tx_type) { case HWTSTAMP_TX_OFF: - cpts_tx_enable(cpts, 0); + gbe_dev->tx_ts_enabled = 0; break; case HWTSTAMP_TX_ON: - cpts_tx_enable(cpts, 1); + gbe_dev->tx_ts_enabled = 1; break; default: return -ERANGE; @@ -2681,12 +2683,12 @@ static int gbe_hwtstamp_set(struct gbe_intf *gbe_intf, struct ifreq *ifr) switch (cfg.rx_filter) { case HWTSTAMP_FILTER_NONE: - cpts_rx_enable(cpts, 0); + gbe_dev->rx_ts_enabled = HWTSTAMP_FILTER_NONE; break; case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: case HWTSTAMP_FILTER_PTP_V1_L4_SYNC: case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ: - cpts_rx_enable(cpts, HWTSTAMP_FILTER_PTP_V1_L4_EVENT); + gbe_dev->rx_ts_enabled = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; cfg.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; break; case HWTSTAMP_FILTER_PTP_V2_L4_EVENT: @@ -2698,7 +2700,7 @@ static int gbe_hwtstamp_set(struct gbe_intf *gbe_intf, struct ifreq *ifr) case HWTSTAMP_FILTER_PTP_V2_EVENT: case HWTSTAMP_FILTER_PTP_V2_SYNC: case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ: - cpts_rx_enable(cpts, HWTSTAMP_FILTER_PTP_V2_EVENT); + gbe_dev->rx_ts_enabled = HWTSTAMP_FILTER_PTP_V2_EVENT; cfg.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; break; default: From patchwork Mon Nov 12 14:00:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Khoronzhuk X-Patchwork-Id: 150837 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp3174549ljp; Mon, 12 Nov 2018 06:00:43 -0800 (PST) X-Google-Smtp-Source: AJdET5fxo0pYiNY2F8rFGo+GPEHs0p3GizLF6Cej9NHzpimjaMJlGNx3BQpx1RWiPPDvRc/jPMJo X-Received: by 2002:a63:a612:: with SMTP id t18-v6mr916652pge.338.1542031243142; Mon, 12 Nov 2018 06:00:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542031243; cv=none; d=google.com; s=arc-20160816; b=AkHhKO9y9oc+suZr+paY3zqfghqCAmhPxUD94P4Q1RFlgiUKoGx4hvelitXtBMqq6J fBMEIINyRUUfVt8UeiErHIU0antXFaqN60e5yHwlgr04fy6IWhu2fmByzKn9Qre+qIS+ wuTOe+RZ4xzeM11QBS2YOIowOx8O8O0+3UeDDBsHHYupKwvb9DJOuY7DvQLnlB9YDV2C T2b3yFiyRP7CdjKrqiwf81q6H6IdEh9OnnBGDjwRejUA07+juwqLolMAFdgUKlwCNrTg FE4ijTe5MHTeaT4J2/TmC1mrS8K50MNcscM2c33v5AkjyD/U0dXqovRN8PQgyRt2qAdk m9OQ== 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; bh=rZTyv24PfvDa0ThzLaZLU5MGIq0YKhyiUqNpDEImNKg=; b=YMsafJ6KsZusXw6L2t3gKyiAGJD4VaruX228bP0gVuqaE2rzRZKyd8I8AjpgPO4epI ssN/MPjRiaYFaCMT1GQ+2f0dEi5x6V/r0b582U78Y1PXqQKKG1KUi0J3mIdLv+r2ig3p YrZUPZ/54N/cqNl6mTHnaPp9CA1GlRlZsVApTxFJ96wKrVT1P1Y0fdoZpN3x3Zaq6VYt S4Z9fmZqvXVOqn+Amr6LYBDkLc6qMMTDSdyTA3u8t73bNwSZIVB+zza+XrRc8uo6HW/Q e2x63FOCQpiMgOkQzvTpNLAtwrugFshXhFeRWHPYMZs5tRoQZJqUqQl6WVXGWKDPJ4bc 86kQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=h0W2187I; 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 d14si16443640pgn.390.2018.11.12.06.00.42; Mon, 12 Nov 2018 06:00:43 -0800 (PST) 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=h0W2187I; 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 S1729965AbeKLXyC (ORCPT + 32 others); Mon, 12 Nov 2018 18:54:02 -0500 Received: from mail-lj1-f195.google.com ([209.85.208.195]:45456 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729865AbeKLXyC (ORCPT ); Mon, 12 Nov 2018 18:54:02 -0500 Received: by mail-lj1-f195.google.com with SMTP id s5-v6so7669297ljd.12 for ; Mon, 12 Nov 2018 06:00:37 -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=rZTyv24PfvDa0ThzLaZLU5MGIq0YKhyiUqNpDEImNKg=; b=h0W2187IgJZ40vpMO7oE1l5ITxBgj/yfZJLiei2mWlUjb6ZzaPrG6wOekEtoXnZCWN 8NFByo8sRuLIQDH82chbq6DpvaSK7tJEX84Ms9P4JAFBRDViSx4t3KfGyNbGB6koP+XB xa7skDRzZT2J+a/Tzl9HyYJk31rJQ6HEL5n7s= 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=rZTyv24PfvDa0ThzLaZLU5MGIq0YKhyiUqNpDEImNKg=; b=HqKVLELiBCT9oQG9C5WjJX2yDOgUpFUHTZ7W326tn9TIrDC6UmeUONPgKel6bEONaM IqUyOHwQH4gJr0cbvi/l/Ghxv8Y4K/ncIAXG1aZSuLXk/RbPE1F58XZcRxUkbMeosc+n t6yoNYzv3f6TVuYO+T7n/ijX5AhXxSGb2cNrhiElMBMxUGtm5AIrnO2XRRPDAm7YXG5Y J/xh4R5puaFKsZ0lhn46ZoNgyml6rH1obB5pgoizLmHyoGtQYA1pIla3Y/BmH6nz+TVR zY6j/9CGwh33EIMwR8VZv8iBlBRb/ot1Zw7aV31KHfTEgIhkyvpOahs9o/DhKHXRqIAL kJkA== X-Gm-Message-State: AGRZ1gKzxUmdqRo2TDgeB2NKbekKjNc2MC5SCB/WnLNPujq7JhWOyTnK /Lx9EnzyT5XlPPaJBoRmf/rHfg== X-Received: by 2002:a2e:6a13:: with SMTP id f19-v6mr820394ljc.41.1542031236526; Mon, 12 Nov 2018 06:00:36 -0800 (PST) Received: from localhost.localdomain (59-201-94-178.pool.ukrtel.net. [178.94.201.59]) by smtp.gmail.com with ESMTPSA id 26-v6sm3546387lje.18.2018.11.12.06.00.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Nov 2018 06:00:36 -0800 (PST) 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 net-next 4/4] net: ethernet: ti: cpsw: allow vlan tagged packets to be timestamped Date: Mon, 12 Nov 2018 16:00:23 +0200 Message-Id: <20181112140023.12407-5-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181112140023.12407-1-ivan.khoronzhuk@linaro.org> References: <20181112140023.12407-1-ivan.khoronzhuk@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allow vlan tagged packets to be timestamped, as no any restrictions for this. Signed-off-by: Ivan Khoronzhuk --- drivers/net/ethernet/ti/cpsw.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -- 2.17.1 diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 48ea21e7e0cb..e4aa030f1726 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -283,7 +283,7 @@ struct cpsw_ss_regs { #define CTRL_V2_TS_BITS \ (TS_320 | TS_319 | TS_132 | TS_131 | TS_130 | TS_129 |\ - TS_TTL_NONZERO | TS_ANNEX_D_EN | TS_LTYPE1_EN) + TS_TTL_NONZERO | TS_ANNEX_D_EN | TS_LTYPE1_EN | VLAN_LTYPE1_EN) #define CTRL_V2_ALL_TS_MASK (CTRL_V2_TS_BITS | TS_TX_EN | TS_RX_EN) #define CTRL_V2_TX_TS_BITS (CTRL_V2_TS_BITS | TS_TX_EN) @@ -293,7 +293,7 @@ struct cpsw_ss_regs { #define CTRL_V3_TS_BITS \ (TS_107 | TS_320 | TS_319 | TS_132 | TS_131 | TS_130 | TS_129 |\ TS_TTL_NONZERO | TS_ANNEX_F_EN | TS_ANNEX_D_EN |\ - TS_LTYPE1_EN) + TS_LTYPE1_EN | VLAN_LTYPE1_EN) #define CTRL_V3_ALL_TS_MASK (CTRL_V3_TS_BITS | TS_TX_EN | TS_RX_EN) #define CTRL_V3_TX_TS_BITS (CTRL_V3_TS_BITS | TS_TX_EN) @@ -2235,6 +2235,7 @@ static void cpsw_hwtstamp_v2(struct cpsw_priv *priv) slave_write(slave, mtype, CPSW2_TS_SEQ_MTYPE); slave_write(slave, ctrl, CPSW2_CONTROL); writel_relaxed(ETH_P_1588, &cpsw->regs->ts_ltype); + writel_relaxed(ETH_P_8021Q, &cpsw->regs->vlan_ltype); } static int cpsw_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)