All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Duyck <alexander.h.duyck@intel.com>
To: Richard Cochran <richardcochran@gmail.com>
Cc: davem@davemloft.net, nhorman@redhat.com, netdev@vger.kernel.org,
	john.fastabend@gmail.com, matthew.vick@intel.com,
	jeffrey.t.kirsher@intel.com, sassmann@redhat.com
Subject: Re: [net-next PATCH 28/29] fm10k: Add support for ptp to hw specific files
Date: Fri, 19 Sep 2014 07:36:56 -0700	[thread overview]
Message-ID: <541C3F88.2090004@intel.com> (raw)
In-Reply-To: <20140919073820.GA5954@netboy>

On 09/19/2014 12:38 AM, Richard Cochran wrote:
> On Thu, Sep 18, 2014 at 06:40:30PM -0400, Alexander Duyck wrote:
> 
>> +static s32 fm10k_adjust_systime_pf(struct fm10k_hw *hw, s32 ppb)
>> +{
>> +	u64 systime_adjust;
>> +
>> +	/* if sw_addr is not set we don't have switch register access */
>> +	if (!hw->sw_addr)
>> +		return ppb ? FM10K_ERR_PARAM : 0;
>> +
>> +	/* we must convert the value from parts per billion to parts per
>> +	 * 2^48 cycles.  In addition we can only use the upper 30 bits of
>> +	 * the value when making the change so that restricts us futher.
>> +	 * The math for this is equivilent to ABS(pps) * 2^40 / 10 ^ 9,
> 
> Huh? Converting ppb to parts per 2^48 should be (ppb * 2^48 / 10^9),
> shouldn't it?
> 
> Did you mean, "we must convert ... to parts per 2^40 cycles" ?
> 
> Also, the comment about using the upper 30 bits is not clear. Do you
> mean that the hardware ignores the two least significant bits?

So to break it all down.

1.  The hardware provides a value that can be specified in parts per
2^48, however that value spans across 2 registers starting at bit 24 in
the first register.  You can actually make out a bit more if you look at
the end of the patch.  The layout for the registers look something like
this:

 /* Registers contained in BAR 4 for Switch management */
 #define FM10K_SW_SYSTIME_CFG	0x0224C
 #define FM10K_SW_SYSTIME_CFG_ADJUST_MASK	0xFF000000
 #define FM10K_SW_SYSTIME_ADJUST	0x0224D
 #define FM10K_SW_SYSTIME_ADJUST_MASK		0x3FFFFFFF
 #define FM10K_SW_SYSTIME_ADJUST_DIR_NEGATIVE	0x80000000

2.  The value is in 2 ^ 48 units, and the OS wants to give us a value in
parts per billion, not parts per 256 * 2 ^ 40.  So in order to simplify
things I dropped the lower 8 bits and only update
FM10K_SW_SYSTIME_ADJUST register giving me an adjust value multiplied by
256.   So the adjustment value I am using now is:
	(256 / (256 * (2 ^ 40)))
		this simplifies down to
	1 / (2 ^ 40)

The value 1 / (2 ^ 40) implies that we are still looking at something
close to parts per trillion, however since I am now only adjusting one
register instead of 2 it meets my needs since those lower 8 bits are an
even smaller part of the whole.

3.  The last bit in the adjustment is to deal with the the fact that we
have a power of 2, not a power of 10 and the adjustments are in parts
per billion.  So we would need to convert by 1024 ^ 3 / 1000 ^ 3.  So
the whole thing broken down would be:
	value / (10 ^ 9) == adj_val / (2 ^ 40)
		so if I solve for adj_val
	value * (2 ^ 40) / (10 ^ 9) == adj_val
		then reduce it by dropping the shared values of 2
	value * (2 ^ 31) / (5 ^ 9) == adj_val

Hopefully that explains how I came to that value.

Thanks,

Alex

  reply	other threads:[~2014-09-19 14:36 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-18 22:35 [net-next PATCH 00/29] Add support for the Intel FM10000 Ethernet Switch Host Interface Alexander Duyck
2014-09-18 22:35 ` [net-next PATCH 01/29] fm10k: Add skeletal frame for Intel(R) FM10000 Ethernet Switch Host Interface Driver Alexander Duyck
2014-09-18 22:35 ` [net-next PATCH 02/29] fm10k: Add register defines and basic structures Alexander Duyck
2014-09-18 22:36 ` [net-next PATCH 03/29] fm10k: Add support for TLV message parsing and generation Alexander Duyck
2014-09-18 22:36 ` [net-next PATCH 04/29] fm10k: Add support for basic interaction with hardware Alexander Duyck
2014-09-18 22:36 ` [net-next PATCH 05/29] fm10k: Add support for mailbox Alexander Duyck
2014-09-18 22:36 ` [net-next PATCH 06/29] fm10k: Implement PF <-> SM mailbox operations Alexander Duyck
2014-09-18 22:36 ` [net-next PATCH 07/29] fm10k: Add support for PF Alexander Duyck
2014-09-18 22:36 ` [net-next PATCH 08/29] fm10k: Add support for configuring PF interface Alexander Duyck
2014-09-18 22:36 ` [net-next PATCH 09/29] fm10k: Add netdev Alexander Duyck
2014-09-18 22:37 ` [net-next PATCH 10/29] fm10k: Add support for L2 filtering Alexander Duyck
2014-09-18 22:37 ` [net-next PATCH 11/29] fm10k: Add support for ndo_open/stop Alexander Duyck
2014-09-18 22:37 ` [net-next PATCH 12/29] fm10k: Add interrupt support Alexander Duyck
2014-09-18 22:37 ` [net-next PATCH 13/29] fm10k: add support for Tx/Rx rings Alexander Duyck
2014-09-18 22:37 ` [net-next PATCH 14/29] fm10k: Add service task to handle delayed events Alexander Duyck
2014-09-18 22:37 ` [net-next PATCH 15/29] fm10k: Add Tx/Rx hardware ring bring-up/tear-down Alexander Duyck
2014-09-18 22:38 ` [net-next PATCH 16/29] fm10k: Add transmit and receive fastpath and interrupt handlers Alexander Duyck
2014-09-18 22:38 ` [net-next PATCH 17/29] fm10k: Add ethtool support Alexander Duyck
2014-09-18 22:38 ` [net-next PATCH 18/29] fm10k: Add support for PCI power management and error handling Alexander Duyck
2014-09-18 22:38 ` [net-next PATCH 19/29] fm10k: Add support for multiple queues Alexander Duyck
2014-09-18 22:38 ` [net-next PATCH 20/29] fm10k: Add support for netdev offloads Alexander Duyck
2014-09-18 22:39 ` [net-next PATCH 21/29] fm10k: Add support for MACVLAN acceleration Alexander Duyck
2014-09-18 22:39 ` [net-next PATCH 22/29] fm10k: Add support for PF <-> VF mailbox Alexander Duyck
2014-09-18 22:39 ` [net-next PATCH 23/29] fm10k: Add support for VF Alexander Duyck
2014-09-18 22:39 ` [net-next PATCH 24/29] fm10k: Add support for SR-IOV to PF core files Alexander Duyck
2014-09-18 22:39 ` [net-next PATCH 25/29] fm10k: Add support for SR-IOV to driver Alexander Duyck
2014-09-18 22:40 ` [net-next PATCH 26/29] fm10k: Add support for IEEE DCBx Alexander Duyck
2014-09-18 22:40 ` [net-next PATCH 27/29] fm10k: Add support for debugfs Alexander Duyck
2014-09-18 22:40 ` [net-next PATCH 28/29] fm10k: Add support for ptp to hw specific files Alexander Duyck
2014-09-19  7:38   ` Richard Cochran
2014-09-19 14:36     ` Alexander Duyck [this message]
2014-09-19 15:19       ` Richard Cochran
2014-09-19 15:34         ` Alexander Duyck
2014-09-18 22:40 ` [net-next PATCH 29/29] fm10k: Add support for PTP Alexander Duyck
2014-09-19 17:35   ` Richard Cochran
2014-09-19 18:32     ` Alexander Duyck
2014-09-20 21:07       ` Richard Cochran
2014-09-20 21:37         ` Joe Perches
2014-09-20 21:16       ` Richard Cochran
2014-09-20 23:36         ` Alexander Duyck
2014-09-22 11:03     ` David Laight
2014-09-22 14:21       ` Alexander Duyck
2014-09-19  7:55 ` [net-next PATCH 00/29] Add support for the Intel FM10000 Ethernet Switch Host Interface Jiri Pirko
2014-09-19 14:43   ` Alexander Duyck
2014-09-19 10:57 ` Jamal Hadi Salim
2014-09-19 14:54   ` Alexander Duyck
2014-09-19 16:58     ` Alexei Starovoitov
2014-09-19 18:22       ` Alexander Duyck
2014-09-19 23:52 ` Alexander Duyck
2014-09-20  2:03   ` David Miller

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=541C3F88.2090004@intel.com \
    --to=alexander.h.duyck@intel.com \
    --cc=davem@davemloft.net \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=john.fastabend@gmail.com \
    --cc=matthew.vick@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=richardcochran@gmail.com \
    --cc=sassmann@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.