From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
To: Richard Cochran <richardcochran@gmail.com>
Cc: netdev@vger.kernel.org, bh74.an@samsung.com,
Rayagond K <rayagond@vayavyalabs.com>,
Rayagond Kokatanur <rayagond@vayavyalabs.com>
Subject: Re: [net-next.git 2/9] stmmac: add IEEE 1588-2002 PTP support
Date: Fri, 08 Mar 2013 08:02:21 +0100 [thread overview]
Message-ID: <51398CFD.9010605@st.com> (raw)
In-Reply-To: <20130308063437.GB2382@netboy.at.omicron.at>
On 3/8/2013 7:34 AM, Richard Cochran wrote:
> I have a few comments, below.
thanks for them.
>> HW Timestamp support can be enabled while configuring the Kernel and
>> the Koption is: STMMAC_USE_HWSTAMP
>> At runtime, the support is verified by looking at the HW capability
>> register.
>
> As davem said, since you have the ability to detect this at run time,
> then there is no need for a kconfig option.
I'll try to give you more details about this replying to D. Miller
[snip]
>> + /* get tx/rx timestamp low value */
>> + u32 (*get_timestamp_low) (struct dma_desc *p);
>> + /* get tx/rx timestamp high value */
>> + u32 (*get_timestamp_high) (struct dma_desc *p);
>
> These two separate functions should be combined into one.
ok
>> + /* get rx timestamp status */
>> + int (*get_rx_timestamp_status) (struct dma_desc *p);
>> +
>> +static int enh_desc_get_rx_timestamp_status(struct dma_desc *p)
>> +{
>> + /* FIXME if Enhance descriptor with 8 DWORDS is enabled */
>
> Why not fix these FIXMEs for the next respin?
This is fixed in the patch #5 where we use the extended descriptors
for PTP2.
>> + if ((p->des2 == 0xffffffff) && (p->des3 == 0xffffffff))
>> + /* timestamp is currupted, hence don't store it */
>
> corrupted
thanks
>> + /* Convert the ptp_clock to nano second
>> + * formula = (1/ptp_clock) * 1000000000
>> + * where, ptp_clock = 50MHz for FINE correction method &
>> + * ptp_clock = STMMAC_SYSCLOCK for COARSE correction method
>> + */
>
> What are these coarse/fine method? Can't we always use the fine one?
This is explained in the "4.1.2 System Time Register Module" of Synopsys
Databook. Summarizing, the MAC can have an optional module and use this
coarse correction method. In the fine correction method, a slave clock’s
frequency drift with respect to the master clock is corrected over a
period of time instead of in one clock, as in coarse correction.
Pls, Rayagond feels free to provide more details...
>> + if (value & PTP_TCR_TSCFUPDT)
>> + data = (1000000000ULL / 50000000);
>> + else
>> + data = (1000000000ULL / STMMAC_SYSCLOCK);
>> +
>> + writel(data, ioaddr + PTP_SSIR);
>> +}
>> +
>> +static int stmmac_init_systime(void __iomem *ioaddr, u32 sec, u32 nsec)
>> +{
>> + int limit;
>> + u32 value;
>> +
>> + /* wait for previous(if any) system time initialize to complete */
>> + limit = 100;
>> + while (limit--) {
>> + if (!(readl(ioaddr + PTP_TCR) & PTP_TCR_TSINIT))
>> + break;
>> + mdelay(10);
>> + }
>> +
>> + if (limit < 0)
>> + return -EBUSY;
>> +
>
> Ugh, this is terrible...
>
>> + writel(sec, ioaddr + PTP_STSUR);
>> + writel(nsec, ioaddr + PTP_STNSUR);
>> + /* issue command to initialize the system time value */
>> + value = readl(ioaddr + PTP_TCR);
>> + value |= PTP_TCR_TSINIT;
>> + writel(value, ioaddr + PTP_TCR);
>> +
>> + /* wait for present system time initialize to complete */
>> + limit = 100;
>> + while (limit--) {
>> + if (!(readl(ioaddr + PTP_TCR) & PTP_TCR_TSINIT))
>> + break;
>> + mdelay(10);
>> + }
>> + if (limit < 0)
>> + return -EBUSY;
>
> ... for a number of reasons.
>
> 1. You are polling for 100*10ms = one second, and the caller has
> disabled interrupts! This is way too long. Is the hardware really
> that slow? If so, then you need to use delayed work or find some
> other way not to block.
>
> 2. You are waiting both before and after for the status bit. Pick one
> or the other. You don't need both.
>
> This same pattern is repeated a few times here, and it needs fixing in
> each case.
This is for the Author. I've no HW where test. Rayagond tested all on
his side. Pls Rayagond fixes it and gives me the new code.
>> + struct stmmac_priv *priv = netdev_priv(dev);
>> + struct hwtstamp_config config;
>> + struct timespec now;
>> + u64 temp = 0;
>
> You add this new code here, but you change it all around again a few
> patches later. Please just submit the final, combined version.
we kept these separately because the patch #5 (for example) depends on
another one that adds the extended descriptor support. Also If I add
all the code in a single patch this will be very big. I had some
problems to review all separately. So I suspect that if we merge all
in a single patch this will not help (especially myself). At any rate,
tell me if you prefer to have a single patch. I can do that.
peppe
>
> Thanks,
> Richard
>
next prev parent reply other threads:[~2013-03-08 7:02 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-07 10:50 [net-next.git 0/9] stmmac: update to March_2013 (adding PTP & RGMII/SGMII) Giuseppe CAVALLARO
2013-03-07 10:50 ` [net-next.git 1/9] stmmac: add tx_skbuff_dma to save descriptors used by PTP Giuseppe CAVALLARO
2013-03-07 10:50 ` [net-next.git 2/9] stmmac: add IEEE 1588-2002 PTP support Giuseppe CAVALLARO
2013-03-08 6:34 ` Richard Cochran
2013-03-08 7:02 ` Giuseppe CAVALLARO [this message]
2013-03-08 7:51 ` Rayagond K
2013-03-10 12:25 ` Richard Cochran
2013-03-10 12:40 ` Richard Cochran
2013-03-11 6:35 ` Giuseppe CAVALLARO
[not found] ` <CAJ3bTp6tQ4L0vya9-eO0E+19Wk74uNJonbA9hqc+fgN77dcjOQ@mail.gmail.com>
2013-03-10 12:31 ` Richard Cochran
2013-03-07 10:50 ` [net-next.git 3/9] stmmac: support extend descriptors Giuseppe CAVALLARO
2013-03-07 10:50 ` [net-next.git 4/9] stmmac: add the support for PTP hw clock driver Giuseppe CAVALLARO
2013-03-10 12:10 ` Richard Cochran
[not found] ` <CAJ3bTp7n-Y6TYrhDMe58fALtX5O34qifO9khWYXpo-OwnrRKiQ@mail.gmail.com>
2013-03-11 18:55 ` Richard Cochran
2013-03-12 4:43 ` Rayagond K
2013-03-07 10:50 ` [net-next.git 5/9] stmmac: add IEEE 1588-2008 PTP V2 support Giuseppe CAVALLARO
2013-03-07 10:50 ` [net-next.git 6/9] stmmac: add missing supported filters to get_ts_info Giuseppe CAVALLARO
2013-03-10 12:36 ` Richard Cochran
2013-03-11 6:39 ` Giuseppe CAVALLARO
2013-03-07 10:50 ` [net-next.git 7/9] stmmac: start adding pcs and rgmii core irq Giuseppe CAVALLARO
2013-03-07 10:50 ` [net-next.git 8/9] stmmac: initial support to manage pcs modes Giuseppe CAVALLARO
2013-03-07 10:50 ` [net-next.git 9/9] stmmac: update the Doc and Version (PTP+SGMII) Giuseppe CAVALLARO
2013-03-07 20:34 ` [net-next.git 0/9] stmmac: update to March_2013 (adding PTP & RGMII/SGMII) David Miller
2013-03-08 7:16 ` Giuseppe CAVALLARO
2013-03-08 16:22 ` David Miller
2013-03-11 7:11 ` Giuseppe CAVALLARO
2013-03-22 14:27 ` Giuseppe CAVALLARO
2013-03-08 6:04 ` Richard Cochran
2013-03-08 6:39 ` Giuseppe CAVALLARO
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51398CFD.9010605@st.com \
--to=peppe.cavallaro@st.com \
--cc=bh74.an@samsung.com \
--cc=netdev@vger.kernel.org \
--cc=rayagond@vayavyalabs.com \
--cc=richardcochran@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).