lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230616100409.164583-1-alexis.lothore@bootlin.com>
Date:   Fri, 16 Jun 2023 12:04:01 +0200
From:   alexis.lothore@...tlin.com
To:     Giuseppe Cavallaro <peppe.cavallaro@...com>,
        Alexandre Torgue <alexandre.torgue@...s.st.com>,
        Jose Abreu <joabreu@...opsys.com>,
        "David S. Miller" <davem@...emloft.net>,
        Eric Dumazet <edumazet@...gle.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Paolo Abeni <pabeni@...hat.com>,
        Maxime Coquelin <mcoquelin.stm32@...il.com>,
        Richard Cochran <richardcochran@...il.com>
Cc:     linux-kernel@...r.kernel.org, netdev@...r.kernel.org,
        linux-arm-kernel@...ts.infradead.org,
        linux-stm32@...md-mailman.stormreply.com,
        Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
        Nicolas Carrier <nicolas.carrier@...-timing.safrangroup.com>
Subject: [PATCH net-next 0/8] net: stmmac: enable timestamp snapshots for DWMAC1000

From: Alexis Lothoré <alexis.lothore@...tlin.com>

While trying to use the recently implemented auxiliary snapshot feature
([1]) on Cyclone V platform (embedding DWMAC1000 IP), I realized that some
parts are too tightly coupled to GMAC4 version of the IP. For example,
timestamp_interrupt function in stmmac_hwtstamp.c reads some timestamp
status (GMAC_TIMESTAMP_STATUS), which offset is relevant for GMAC4 (ptpaddr
+ 0x20), but not for GMAC3 (which should be ptpaddr + 0x28).
Another example is that auxiliary snapshot trigger configuration is done in
a dedicated register for GMAC4, while it is in the general Timestamp
control register for DWMAC1000.

This series proposes to split those too specific parts in each IP variant
file. DWMAC1000 mapping is based on Cyclone V HPS register map ([2]) while
GMAC4 mapping has been checked based on some Elkhart Lake range processors
mapping ([3])

One point I am not sure about is for all other variants: sun8i-dwmac,
dwxgmac2 and dwmac100. I have no clue about registers layout for those
platforms. I then had to possible approaches to enable feature on
DWMAC1000:
- ensure that current behaviour is preserved for dwxgmac2, sun8i-dwmac and
  dwmac100; keep auxiliary snapshot feature in stmmac_ptp.c and add
  dwmac1000 behaviour as an "exception"
- assume auxiliary snaspshots controls are different for each, then move the
  controls in each IP version file (XXXX_core.c)
I felt like stmmac_ptp.c should remain independant from the IP version, so
I chose the second option, but since I do not know about other versions
layout (and do not have the hardware), I did not wire "blindly" the
feature on those platform.
Please let me know if I am wrong and/or if I should come with a more
conservative approach (ie first version)

Tested on Cyclone V with testptp

[1] https://lore.kernel.org/netdev/20210414001617.3490-1-vee.khee.wong@linux.intel.com/
[2] https://cdrdv2.intel.com/v1/dl/getContent/666962?fileName=cv_5v4-683126-666962.pdf
[3] https://cdrdv2.intel.com/v1/dl/getContent/636722?fileName=636722_EHL+Datasheet+V2+Book+2_rev003.pdf

Alexis Lothoré (8):
  net: stmmac: add IP-specific callbacks for auxiliary snapshot
  net: stmmac: populate dwmac4 callbacks for auxiliary snapshots
  net: stmmac: move PTP interrupt handling to IP-specific DWMAC file
  net: stmmac: move common defines in stmmac_ptp.h
  net: stmmac: set number of snapshot external triggers for GMAC3
  net: stmmac: introduce setter/getter for timestamp configuration
  net: stmmac: do not overwrite other flags when writing timestamp
    control
  net: stmmac: enable timestamp external trigger for dwmac1000

 .../ethernet/stmicro/stmmac/dwmac-socfpga.c   |  2 +
 .../net/ethernet/stmicro/stmmac/dwmac1000.h   | 12 ++-
 .../ethernet/stmicro/stmmac/dwmac1000_core.c  | 83 ++++++++++++++++++
 drivers/net/ethernet/stmicro/stmmac/dwmac4.h  | 29 +++++--
 .../net/ethernet/stmicro/stmmac/dwmac4_core.c | 85 +++++++++++++++++++
 drivers/net/ethernet/stmicro/stmmac/hwif.h    | 17 +++-
 .../ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 62 ++------------
 .../net/ethernet/stmicro/stmmac/stmmac_main.c | 14 +--
 .../net/ethernet/stmicro/stmmac/stmmac_ptp.c  | 29 ++-----
 .../net/ethernet/stmicro/stmmac/stmmac_ptp.h  | 26 +-----
 10 files changed, 246 insertions(+), 113 deletions(-)

-- 
2.41.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ