From patchwork Fri Dec 27 13:02:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1215694 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 (no SPF record) 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="oTgLhpSQ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47kn6p0tqfz9sQp for ; Sat, 28 Dec 2019 00:02:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727011AbfL0NCk (ORCPT ); Fri, 27 Dec 2019 08:02:40 -0500 Received: from mail-wm1-f67.google.com ([209.85.128.67]:36414 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726354AbfL0NCj (ORCPT ); Fri, 27 Dec 2019 08:02:39 -0500 Received: by mail-wm1-f67.google.com with SMTP id p17so8230179wma.1 for ; Fri, 27 Dec 2019 05:02:38 -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=DVlVR0bvf4rc4hcVIRY+U0ombLfRrGnZPhbiDfWcedg=; b=oTgLhpSQavmYTdw5xWC+cIKtH2PRADmY9GDpEvcUoFp3mfHV/QWePfLCybF5Bzw208 fJGAsGnRfxkjTelTgGbF0P8McKYCSbsiMceii18xnK0fqM3HRmucL+Wm88obe33Zb/67 vorezHhqklJRarKGtzAwWtSJRwaWg+ragWurnEPUcrsiNS9y3Pud/lwSIeV2nbn4b3uB iw+6Ba409NdHjMD0oJKuGy3U5N/ixiIFmMnnWPKuZsqHx2tUVZDcHaLkXBdxp4z53U95 46AAGYVN4uAHoNkyFLXv9u5DhqVHCO1CME7T1hWZ+qFrlORGQoIPo/DxeuoOrO7wKLU9 3rAw== 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=DVlVR0bvf4rc4hcVIRY+U0ombLfRrGnZPhbiDfWcedg=; b=F5R1aGUiS3KpO/Uzg7yHPA2ODwfbH9M8Xm+5XVxer+wXR0xo13y/sA/lZuhZpg1tHo eUy/0FiQwRvqw72RM6F/vnN/SOt5kPh3F6D7u9+0ogFGso9NnAVCDdfVzvYJeHmi+r/6 fWM448780iqkpazvl42LnCDIkOIbwJwpRL3qIGC/qU2guJUYVQX6sexhZi/MXj5S5LiM VzCP7bX1Q35yKxYnYl/RSEtqVz55stk6e3ysFg5d8aUjCZNmJM5ssFnnAduVF8gWBdt/ we6XWdtYAUyHaIKUwvdhqWzEY8x+Sk8E+T+OMYipw7JBLHXsfexltqOkcsHuE4/eYSB4 rq8w== X-Gm-Message-State: APjAAAXNtyQrodaipW1zSiw30MDtrsJDQX2icpDlRys1+KZ/Wv4eBOOj UgUGsA/3LwOV0RR1PsAAL0Q= X-Google-Smtp-Source: APXvYqz508snkrNnQ4VYLSd2DQg3QM3VAzVklVi+LxRWqLwumYjngBaqNXGts1bB1AALiHe6oev8Sg== X-Received: by 2002:a7b:cd0a:: with SMTP id f10mr19970290wmj.56.1577451758001; Fri, 27 Dec 2019 05:02:38 -0800 (PST) Received: from localhost.localdomain ([188.25.254.226]) by smtp.gmail.com with ESMTPSA id i5sm34307357wrv.34.2019.12.27.05.02.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Dec 2019 05:02:37 -0800 (PST) From: Vladimir Oltean To: davem@davemloft.net, jakub.kicinski@netronome.com Cc: richardcochran@gmail.com, f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, netdev@vger.kernel.org, Vladimir Oltean Subject: [PATCH v2 net-next 1/3] ptp: introduce ptp_cancel_worker_sync Date: Fri, 27 Dec 2019 15:02:28 +0200 Message-Id: <20191227130230.21541-2-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191227130230.21541-1-olteanv@gmail.com> References: <20191227130230.21541-1-olteanv@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In order to effectively use the PTP kernel thread for tasks such as timestamping packets, allow the user control over stopping it, which is needed e.g. when the timestamping queues must be drained. Signed-off-by: Vladimir Oltean --- Changes in v2: - Added stub for the case where CONFIG_PTP_1588_CLOCK=n drivers/ptp/ptp_clock.c | 6 ++++++ include/linux/ptp_clock_kernel.h | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index e60eab7f8a61..4f0d91a76dcb 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -371,6 +371,12 @@ int ptp_schedule_worker(struct ptp_clock *ptp, unsigned long delay) } EXPORT_SYMBOL(ptp_schedule_worker); +void ptp_cancel_worker_sync(struct ptp_clock *ptp) +{ + kthread_cancel_delayed_work_sync(&ptp->aux_work); +} +EXPORT_SYMBOL(ptp_cancel_worker_sync); + /* module operations */ static void __exit ptp_exit(void) diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_kernel.h index 93cc4f1d444a..c64a1ef87240 100644 --- a/include/linux/ptp_clock_kernel.h +++ b/include/linux/ptp_clock_kernel.h @@ -243,6 +243,13 @@ int ptp_find_pin(struct ptp_clock *ptp, int ptp_schedule_worker(struct ptp_clock *ptp, unsigned long delay); +/** + * ptp_cancel_worker_sync() - cancel ptp auxiliary clock + * + * @ptp: The clock obtained from ptp_clock_register(). + */ +void ptp_cancel_worker_sync(struct ptp_clock *ptp); + #else static inline struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, struct device *parent) @@ -260,6 +267,8 @@ static inline int ptp_find_pin(struct ptp_clock *ptp, static inline int ptp_schedule_worker(struct ptp_clock *ptp, unsigned long delay) { return -EOPNOTSUPP; } +static inline void ptp_cancel_worker_sync(struct ptp_clock *ptp) +{ } #endif From patchwork Fri Dec 27 13:02:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1215695 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 (no SPF record) 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="X6LezYRn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47kn6q6QJyz9sP6 for ; Sat, 28 Dec 2019 00:02:43 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727050AbfL0NCm (ORCPT ); Fri, 27 Dec 2019 08:02:42 -0500 Received: from mail-wm1-f67.google.com ([209.85.128.67]:54683 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726053AbfL0NCk (ORCPT ); Fri, 27 Dec 2019 08:02:40 -0500 Received: by mail-wm1-f67.google.com with SMTP id b19so7999962wmj.4 for ; Fri, 27 Dec 2019 05:02:39 -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=On7f7J2Rv/34/FOIRf5Nqjk7nvzsZXj/gSsurxXFGFo=; b=X6LezYRnx4xMZ9bz78/Tg0KXrze3778gmZBtThJT/rFBPiVVO83LjnqEANx0lzKkxy QeeB01CEgQEqczo51taW0VjydTquPom3hZz/+2P4u1xr7niXtJsy0NdlvXU+kZdOXTgC Y8yoigtaH0CA11rDUygyFpxSPjPDAREMwSvHV4wrqTqhpFSMFtR3J5Bl1etFjc28Ukr0 lkgaF3yYn3D+n3cgPra+8q3DjwpLisG4NvTQ0fVtkLcYaTa3rO2bbzQ5NFJ/dFE0QZ58 ZSpzZfvLB6c3JD54VLCc/pvfqGRHRDCBD/Vmb0XM8xaPZUf0CqElyaGMNCi26NEePyL3 4VVQ== 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=On7f7J2Rv/34/FOIRf5Nqjk7nvzsZXj/gSsurxXFGFo=; b=Fr7kpK7aksxhZAZqR6GlT/Lu3pGxMPfot3pJXCrk0rn4Leui7PPigozWzUhvc0kp/F 6YI4iwCFSzdAX0AAGMp6c6KwymQY6EE38yTEIHpEd/9QFWGlvG/PvArzX9LCsuA6qhdQ fLU5BarfeoMUVnbEIAWT7SkCfiIfYn4rWEXXXqySzL632C+a/AQ3ikOZcfgKiT9c0q7n IoBo73IKTcyAcoFDnyAU8E/MSJDXqM5YqvpAGBNv8cJ6B3xEoNq4CQnOKAFruAdzbX/C 2YLpDEJEmDLEFSqLNBW5jCi8uYZ/BV5tkzpL1iL0lBZHuzxAnSRbJVOqLwWa/gimsTQC Rprg== X-Gm-Message-State: APjAAAXx8xWk2MB+jbub+goXhyU+FP6dJcT1P7n2v1DYHiCdWqUDZFdD zU9EH60UKoM/x/MOZJIyHA8= X-Google-Smtp-Source: APXvYqwi5LvAse406g8b/3LwoNSYeoiqO+gT9sRZFs1oN5El8JslWSjmwaFBDEldenIqdNQUBGRmlA== X-Received: by 2002:a1c:e289:: with SMTP id z131mr18242753wmg.18.1577451758972; Fri, 27 Dec 2019 05:02:38 -0800 (PST) Received: from localhost.localdomain ([188.25.254.226]) by smtp.gmail.com with ESMTPSA id i5sm34307357wrv.34.2019.12.27.05.02.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Dec 2019 05:02:38 -0800 (PST) From: Vladimir Oltean To: davem@davemloft.net, jakub.kicinski@netronome.com Cc: richardcochran@gmail.com, f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, netdev@vger.kernel.org, Vladimir Oltean Subject: [PATCH v2 net-next 2/3] net: dsa: sja1105: Use PTP core's dedicated kernel thread for RX timestamping Date: Fri, 27 Dec 2019 15:02:29 +0200 Message-Id: <20191227130230.21541-3-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191227130230.21541-1-olteanv@gmail.com> References: <20191227130230.21541-1-olteanv@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org And move the queue of skb's waiting for RX timestamps into the ptp_data structure, since it isn't needed if PTP is not compiled. Signed-off-by: Vladimir Oltean --- Changes in v2: - Moved "struct sja1105_ptp_data *ptp_data" declaration in sja1105_change_rxtstamping to patch 3/3. drivers/net/dsa/sja1105/sja1105_ptp.c | 33 ++++++++++++--------------- drivers/net/dsa/sja1105/sja1105_ptp.h | 1 + include/linux/dsa/sja1105.h | 2 -- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/drivers/net/dsa/sja1105/sja1105_ptp.c b/drivers/net/dsa/sja1105/sja1105_ptp.c index 038c83fbd9e8..93683cbf2062 100644 --- a/drivers/net/dsa/sja1105/sja1105_ptp.c +++ b/drivers/net/dsa/sja1105/sja1105_ptp.c @@ -367,22 +367,16 @@ static int sja1105_ptpclkval_write(struct sja1105_private *priv, u64 ticks, ptp_sts); } -#define rxtstamp_to_tagger(d) \ - container_of((d), struct sja1105_tagger_data, rxtstamp_work) -#define tagger_to_sja1105(d) \ - container_of((d), struct sja1105_private, tagger_data) - -static void sja1105_rxtstamp_work(struct work_struct *work) +static long sja1105_rxtstamp_work(struct ptp_clock_info *ptp) { - struct sja1105_tagger_data *tagger_data = rxtstamp_to_tagger(work); - struct sja1105_private *priv = tagger_to_sja1105(tagger_data); - struct sja1105_ptp_data *ptp_data = &priv->ptp_data; + struct sja1105_ptp_data *ptp_data = ptp_caps_to_data(ptp); + struct sja1105_private *priv = ptp_data_to_sja1105(ptp_data); struct dsa_switch *ds = priv->ds; struct sk_buff *skb; mutex_lock(&ptp_data->lock); - while ((skb = skb_dequeue(&tagger_data->skb_rxtstamp_queue)) != NULL) { + while ((skb = skb_dequeue(&ptp_data->skb_rxtstamp_queue)) != NULL) { struct skb_shared_hwtstamps *shwt = skb_hwtstamps(skb); u64 ticks, ts; int rc; @@ -404,6 +398,9 @@ static void sja1105_rxtstamp_work(struct work_struct *work) } mutex_unlock(&ptp_data->lock); + + /* Don't restart */ + return -1; } /* Called from dsa_skb_defer_rx_timestamp */ @@ -411,16 +408,16 @@ bool sja1105_port_rxtstamp(struct dsa_switch *ds, int port, struct sk_buff *skb, unsigned int type) { struct sja1105_private *priv = ds->priv; - struct sja1105_tagger_data *tagger_data = &priv->tagger_data; + struct sja1105_ptp_data *ptp_data = &priv->ptp_data; - if (!test_bit(SJA1105_HWTS_RX_EN, &tagger_data->state)) + if (!test_bit(SJA1105_HWTS_RX_EN, &priv->tagger_data.state)) return false; /* We need to read the full PTP clock to reconstruct the Rx * timestamp. For that we need a sleepable context. */ - skb_queue_tail(&tagger_data->skb_rxtstamp_queue, skb); - schedule_work(&tagger_data->rxtstamp_work); + skb_queue_tail(&ptp_data->skb_rxtstamp_queue, skb); + ptp_schedule_worker(ptp_data->clock, 0); return true; } @@ -628,11 +625,11 @@ int sja1105_ptp_clock_register(struct dsa_switch *ds) .adjtime = sja1105_ptp_adjtime, .gettimex64 = sja1105_ptp_gettimex, .settime64 = sja1105_ptp_settime, + .do_aux_work = sja1105_rxtstamp_work, .max_adj = SJA1105_MAX_ADJ_PPB, }; - skb_queue_head_init(&tagger_data->skb_rxtstamp_queue); - INIT_WORK(&tagger_data->rxtstamp_work, sja1105_rxtstamp_work); + skb_queue_head_init(&ptp_data->skb_rxtstamp_queue); spin_lock_init(&tagger_data->meta_lock); ptp_data->clock = ptp_clock_register(&ptp_data->caps, ds->dev); @@ -653,8 +650,8 @@ void sja1105_ptp_clock_unregister(struct dsa_switch *ds) if (IS_ERR_OR_NULL(ptp_data->clock)) return; - cancel_work_sync(&priv->tagger_data.rxtstamp_work); - skb_queue_purge(&priv->tagger_data.skb_rxtstamp_queue); + ptp_cancel_worker_sync(ptp_data->clock); + skb_queue_purge(&ptp_data->skb_rxtstamp_queue); ptp_clock_unregister(ptp_data->clock); ptp_data->clock = NULL; } diff --git a/drivers/net/dsa/sja1105/sja1105_ptp.h b/drivers/net/dsa/sja1105/sja1105_ptp.h index 470f44b76318..6f4a19eec709 100644 --- a/drivers/net/dsa/sja1105/sja1105_ptp.h +++ b/drivers/net/dsa/sja1105/sja1105_ptp.h @@ -30,6 +30,7 @@ struct sja1105_ptp_cmd { }; struct sja1105_ptp_data { + struct sk_buff_head skb_rxtstamp_queue; struct ptp_clock_info caps; struct ptp_clock *clock; struct sja1105_ptp_cmd cmd; diff --git a/include/linux/dsa/sja1105.h b/include/linux/dsa/sja1105.h index 897e799dbcb9..c0b6a603ea8c 100644 --- a/include/linux/dsa/sja1105.h +++ b/include/linux/dsa/sja1105.h @@ -37,8 +37,6 @@ * the structure defined in struct sja1105_private. */ struct sja1105_tagger_data { - struct sk_buff_head skb_rxtstamp_queue; - struct work_struct rxtstamp_work; struct sk_buff *stampable_skb; /* Protects concurrent access to the meta state machine * from taggers running on multiple ports on SMP systems From patchwork Fri Dec 27 13:02:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1215696 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 (no SPF record) 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="g0yfjt1y"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47kn6r3hCZz9sPn for ; Sat, 28 Dec 2019 00:02:44 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727111AbfL0NCn (ORCPT ); Fri, 27 Dec 2019 08:02:43 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:55333 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727002AbfL0NCl (ORCPT ); Fri, 27 Dec 2019 08:02:41 -0500 Received: by mail-wm1-f68.google.com with SMTP id q9so6440457wmj.5 for ; Fri, 27 Dec 2019 05:02:40 -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=S1Zpjr9Ch6P6Dd5sTHnhhaojWVPaQFrvyYKRpuZw0Oo=; b=g0yfjt1yhXdt92pIAqbjh6nYczHtJvs6mh9gEtFnqGNisQ9+C7mneClIbqbGsyY7hi LGIpIjZbAzk++IN5HPHzONLV1IK/oxtjAcO0qGUIqm3ihwhnGWbNv71+ensiLTtLdGv8 uslC+GNhxhh4sZwsSCS6J2Uu14Ug/zUffN15gRAiwr2Q8abOQMrGC5tWjsbAdK+Q1FKb dHzHtLLuU9ymeA7RuDQM4p1pZzZTXxooaf3VJ21Q5GtBalSrBkrBYLAeP163NLifBFi/ QrEDTFOlKd+sgi+F/4HZXI+yKSITnycde6YvX49upnYKZF3QzHglhlW3OGpOgWKrRYT0 9knQ== 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=S1Zpjr9Ch6P6Dd5sTHnhhaojWVPaQFrvyYKRpuZw0Oo=; b=aR+naZV2MIbTROYkZuXbbgFxaXSt6I1j6pidOkeOYoqpwudeyOKqkxzwIEfxxYKdNg /rY/3aA+GrBN3ftr8dSIqHl9IPj/EuJEusZX5QFptrsmlZ+iEcw/D3q9RSYFRHfwpmud cUofI0Nn13+f7Ad+L3JumD3uHwIU7TILXeq97fY0ELUwQY2t67q7kvMmjmfBmNRmLn0e VdIJtZwtAutqRLwiPH3TEfR2kY34Ca6qkBqlVTNpcygpiI3MxXjDocdzAV0tCMgq2X4v pi1a6uWYNOpRQFm/P9bLe9xHU5eCAQG5KW2rNdeZCIIGgnDCDIZplsGmihFVYT0B/Bsg d2tQ== X-Gm-Message-State: APjAAAWH0BtsZQFG0iAL3hb8dtQ/tMduVS9QiVIbMiom9hoW45bu3TJP HsSIR5MS5nP9TyAIhQn+5OM= X-Google-Smtp-Source: APXvYqxuJfEMzxb0vYg/Hmr6s13Eb0TktFrMdHCoD5g2pwK5SxGW0vwEgOm+Hi3JdPAmyF4NOmh0+A== X-Received: by 2002:a7b:cbc8:: with SMTP id n8mr19054097wmi.35.1577451759965; Fri, 27 Dec 2019 05:02:39 -0800 (PST) Received: from localhost.localdomain ([188.25.254.226]) by smtp.gmail.com with ESMTPSA id i5sm34307357wrv.34.2019.12.27.05.02.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Dec 2019 05:02:39 -0800 (PST) From: Vladimir Oltean To: davem@davemloft.net, jakub.kicinski@netronome.com Cc: richardcochran@gmail.com, f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, netdev@vger.kernel.org, Vladimir Oltean Subject: [PATCH v2 net-next 3/3] net: dsa: sja1105: Empty the RX timestamping queue on PTP settings change Date: Fri, 27 Dec 2019 15:02:30 +0200 Message-Id: <20191227130230.21541-4-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191227130230.21541-1-olteanv@gmail.com> References: <20191227130230.21541-1-olteanv@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When disabling PTP timestamping, don't reset the switch with the new static config until all existing PTP frames have been timestamped on the RX path or dropped. There's nothing we can do with these afterwards. Signed-off-by: Vladimir Oltean --- Changes in v2: - Moved "struct sja1105_ptp_data *ptp_data" declaration in sja1105_change_rxtstamping here from patch 2/3. drivers/net/dsa/sja1105/sja1105_ptp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/dsa/sja1105/sja1105_ptp.c b/drivers/net/dsa/sja1105/sja1105_ptp.c index 93683cbf2062..a16628cd5f66 100644 --- a/drivers/net/dsa/sja1105/sja1105_ptp.c +++ b/drivers/net/dsa/sja1105/sja1105_ptp.c @@ -83,6 +83,7 @@ static int sja1105_init_avb_params(struct sja1105_private *priv, static int sja1105_change_rxtstamping(struct sja1105_private *priv, bool on) { + struct sja1105_ptp_data *ptp_data = &priv->ptp_data; struct sja1105_general_params_entry *general_params; struct sja1105_table *table; int rc; @@ -101,6 +102,8 @@ static int sja1105_change_rxtstamping(struct sja1105_private *priv, kfree_skb(priv->tagger_data.stampable_skb); priv->tagger_data.stampable_skb = NULL; } + ptp_cancel_worker_sync(ptp_data->clock); + skb_queue_purge(&ptp_data->skb_rxtstamp_queue); return sja1105_static_config_reload(priv, SJA1105_RX_HWTSTAMPING); }