mbox series

[v7,net-next,0/3] Add PTP support for Octeontx2

Message ID 1598255717-32316-1-git-send-email-sundeep.lkml@gmail.com
Headers show
Series Add PTP support for Octeontx2 | expand

Message

sundeep subbaraya Aug. 24, 2020, 7:55 a.m. UTC
From: Subbaraya Sundeep <sbhatta@marvell.com>

Hi,

This patchset adds PTP support for Octeontx2 platform.
PTP is an independent coprocessor block from which
CGX block fetches timestamp and prepends it to the
packet before sending to NIX block. Patches are as
follows:

Patch 1: Patch to enable/disable packet timstamping
         in CGX upon mailbox request. It also adjusts
         packet parser (NPC) for the 8 bytes timestamp
         appearing before the packet.

Patch 2: Patch adding PTP pci driver which configures
         the PTP block and hooks up to RVU AF driver.
         It also exposes a mailbox call to adjust PTP
         hardware clock.

Patch 3: Patch adding PTP clock driver for PF netdev.

Acked-by: Richard Cochran <richardcochran@gmail.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>

v7:
 As per Jesse Brandeburg comments:
 Simplified functions in patch 1
 Replaced magic numbers with macros
 Added Copyrights
 Added code comments wherever required
 Modified commit description of patch 2
v6:
 Resent after net-next is open
v5:
 As suggested by David separated the fix (adding rtnl lock/unlock)
 and submitted to net.
 https://www.spinics.net/lists/netdev/msg669617.html
v4:
 Added rtnl_lock/unlock in otx2_reset to protect against
 network stack ndo_open and close calls
 Added NULL check after ptp_clock_register in otx2_ptp.c
v3:
 Fixed sparse error in otx2_txrx.c
 Removed static inlines in otx2_txrx.c
v2:
 Fixed kernel build robot reported error by
 adding timecounter.h to otx2_common.h


Aleksey Makarov (2):
  octeontx2-af: Add support for Marvell PTP coprocessor
  octeontx2-pf: Add support for PTP clock

Zyta Szpak (1):
  octeontx2-af: Support to enable/disable HW timestamping

 drivers/net/ethernet/marvell/octeontx2/af/Makefile |   2 +-
 drivers/net/ethernet/marvell/octeontx2/af/cgx.c    |  29 +++
 drivers/net/ethernet/marvell/octeontx2/af/cgx.h    |   4 +
 drivers/net/ethernet/marvell/octeontx2/af/mbox.h   |  21 ++
 drivers/net/ethernet/marvell/octeontx2/af/ptp.c    | 274 +++++++++++++++++++++
 drivers/net/ethernet/marvell/octeontx2/af/ptp.h    |  25 ++
 drivers/net/ethernet/marvell/octeontx2/af/rvu.c    |  29 ++-
 drivers/net/ethernet/marvell/octeontx2/af/rvu.h    |   5 +
 .../net/ethernet/marvell/octeontx2/af/rvu_cgx.c    |  39 +++
 .../net/ethernet/marvell/octeontx2/af/rvu_nix.c    |  43 ++++
 .../net/ethernet/marvell/octeontx2/af/rvu_npc.c    |  31 +++
 .../net/ethernet/marvell/octeontx2/nic/Makefile    |   3 +-
 .../ethernet/marvell/octeontx2/nic/otx2_common.c   |   7 +
 .../ethernet/marvell/octeontx2/nic/otx2_common.h   |  19 ++
 .../ethernet/marvell/octeontx2/nic/otx2_ethtool.c  |  28 +++
 .../net/ethernet/marvell/octeontx2/nic/otx2_pf.c   | 168 ++++++++++++-
 .../net/ethernet/marvell/octeontx2/nic/otx2_ptp.c  | 212 ++++++++++++++++
 .../net/ethernet/marvell/octeontx2/nic/otx2_ptp.h  |  13 +
 .../net/ethernet/marvell/octeontx2/nic/otx2_txrx.c |  87 ++++++-
 .../net/ethernet/marvell/octeontx2/nic/otx2_txrx.h |   1 +
 20 files changed, 1030 insertions(+), 10 deletions(-)
 create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/ptp.c
 create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/ptp.h
 create mode 100644 drivers/net/ethernet/marvell/octeontx2/nic/otx2_ptp.c
 create mode 100644 drivers/net/ethernet/marvell/octeontx2/nic/otx2_ptp.h

Comments

David Miller Aug. 24, 2020, 1:16 p.m. UTC | #1
From: sundeep.lkml@gmail.com
Date: Mon, 24 Aug 2020 13:25:14 +0530

> This patchset adds PTP support for Octeontx2 platform.
> PTP is an independent coprocessor block from which
> CGX block fetches timestamp and prepends it to the
> packet before sending to NIX block. Patches are as
> follows:
> 
> Patch 1: Patch to enable/disable packet timstamping
>          in CGX upon mailbox request. It also adjusts
>          packet parser (NPC) for the 8 bytes timestamp
>          appearing before the packet.
> 
> Patch 2: Patch adding PTP pci driver which configures
>          the PTP block and hooks up to RVU AF driver.
>          It also exposes a mailbox call to adjust PTP
>          hardware clock.
> 
> Patch 3: Patch adding PTP clock driver for PF netdev.
> 
> Acked-by: Richard Cochran <richardcochran@gmail.com>
> Acked-by: Jakub Kicinski <kuba@kernel.org>
 ...

Series applied, thank you.
David Miller Aug. 24, 2020, 1:17 p.m. UTC | #2
From: David Miller <davem@davemloft.net>
Date: Mon, 24 Aug 2020 06:16:57 -0700 (PDT)

> Series applied, thank you.

Actually, this doesn't even compile:

drivers/net/ethernet/marvell/octeontx2/af/ptp.c: In function ‘get_clock_rate’:
drivers/net/ethernet/marvell/octeontx2/af/ptp.c:60:26: error: implicit declaration of function ‘FIELD_GET’; did you mean ‘FOLL_GET’? [-Werror=implicit-function-declaration]
   60 |  ret = CLOCK_BASE_RATE * FIELD_GET(RST_MUL_BITS, cfg);
      |                          ^~~~~~~~~
      |                          FOLL_GET
sundeep subbaraya Aug. 24, 2020, 2:31 p.m. UTC | #3
Hi David,

On Mon, Aug 24, 2020 at 6:47 PM David Miller <davem@davemloft.net> wrote:
>
> From: David Miller <davem@davemloft.net>
> Date: Mon, 24 Aug 2020 06:16:57 -0700 (PDT)
>
> > Series applied, thank you.
>
> Actually, this doesn't even compile:
>
Our Marvell GCC10 ARM64 compiler did not complain anything about this
even with W=1 and my bad I overlooked the missing header file inclusion.
The same happened during V1 where the power-pc compiler caught a
similar error and ours did not.
Sorry for the trouble, I will send the next spin.

Thanks,
Sundeep

> drivers/net/ethernet/marvell/octeontx2/af/ptp.c: In function ‘get_clock_rate’:
> drivers/net/ethernet/marvell/octeontx2/af/ptp.c:60:26: error: implicit declaration of function ‘FIELD_GET’; did you mean ‘FOLL_GET’? [-Werror=implicit-function-declaration]
>    60 |  ret = CLOCK_BASE_RATE * FIELD_GET(RST_MUL_BITS, cfg);
>       |                          ^~~~~~~~~
>       |                          FOLL_GET