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-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 25 Mar 2019 09:31:42 -0700
From:   Florian Fainelli <f.fainelli@...il.com>
To:     Vladimir Oltean <olteanv@...il.com>, davem@...emloft.net,
        netdev@...r.kernel.org
Cc:     andrew@...n.ch, vivien.didelot@...il.com, linus.walleij@...aro.org
Subject: Re: [RFC PATCH net-next 00/13] NXP SJA1105 DSA driver

On 3/23/19 8:23 PM, Vladimir Oltean wrote:
> This patchset adds a DSA driver for the SPI-managed NXP SJA1105 driver.
> Due to the hardware's unfriendliness, most of its state needs to be
> shadowed in kernel memory by the driver. To support this and keep a
> decent amount of cleanliness in the code, a new generic API for
> converting between CPU-accessible ("unpacked") structures and
> hardware-accessible ("packed") structures is proposed and used.
> 
> Then several small modifications are done to the DSA core, like changing
> the order of two calls during initialization, or permitting driver
> access to the dp->vlan_filtering property.
> 
> These small modifications are done for the greater goal of adding
> support for 802.1Q pseudo-switch tagging. The limitations of this type
> of tagging are discussed in the commit that adds it, and in the code
> comments.
> 
> The SJA1105 driver then proceeds to extend this 8021q switch tagging
> protocol while adding its own (tag_sja1105). This is done because
> SJA1105 needs SPI intervention during transmission of link-local
> traffic, which cannot be done from the xmit handler but requires a
> deferred worker thread.
> 
> The driver is GPL-2.0 licensed. The source code files which are licensed
> as BSD-3-Clause are hardware support files and derivative of the
> userspace NXP sja1105-tool program, which is BSD-3-Clause licensed.
> 
> TODO items:
> * Add full support for the P/Q/R/S series. The patches were mostly
>   tested on a first-generation T device.
> * Add timestamping support and PTP clock manipulation.
> * Figure out what the current state of tc-taprio hw offload is, and
>   attempt to configure the switch's time-aware scheduler using that.

Overall this is a very clean and impressive piece of work, especially
given the constraints you have to work with, I will follow-up with
comments in individual patches thanks Vladimir!

> 
> Vladimir Oltean (13):
>   lib: Add support for generic packing operations
>   net: dsa: Store vlan_filtering as a property of dsa_port
>   net: dsa: Create a more convenient function for installing port VLANs
>   net: dsa: Call driver's setup callback after setting up its switchdev
>     notifier
>   net: dsa: Optional VLAN-based port separation for switches without
>     tagging
>   net: dsa: Introduce driver for NXP SJA1105 5-port L2 switch
>   net: dsa: sja1105: Add support for FDB and MDB management
>   net: dsa: sja1105: Add support for VLAN operations
>   net: dsa: sja1105: Add support for ethtool port counters
>   net: dsa: sja1105: Add support for traffic through standalone ports
>   net: dsa: sja1105: Add support for Spanning Tree Protocol
>   Documentation: networking: dsa: Add details about NXP SJA1105 driver
>   dt-bindings: net: dsa: Add documentation for NXP SJA1105 driver
> 
>  .../devicetree/bindings/net/dsa/sja1105.txt   |  123 ++
>  Documentation/networking/dsa/sja1105.txt      |   83 +
>  Documentation/packing.txt                     |  150 ++
>  MAINTAINERS                                   |   14 +
>  drivers/net/dsa/Kconfig                       |    2 +
>  drivers/net/dsa/Makefile                      |    1 +
>  drivers/net/dsa/sja1105/Kconfig               |   17 +
>  drivers/net/dsa/sja1105/Makefile              |   10 +
>  drivers/net/dsa/sja1105/sja1105.h             |  148 ++
>  drivers/net/dsa/sja1105/sja1105_clocking.c    |  677 ++++++
>  .../net/dsa/sja1105/sja1105_dynamic_config.c  |  607 ++++++
>  .../net/dsa/sja1105/sja1105_dynamic_config.h  |   40 +
>  drivers/net/dsa/sja1105/sja1105_ethtool.c     |  420 ++++
>  drivers/net/dsa/sja1105/sja1105_main.c        | 1580 ++++++++++++++
>  drivers/net/dsa/sja1105/sja1105_spi.c         |  667 ++++++
>  .../net/dsa/sja1105/sja1105_static_config.c   | 1810 +++++++++++++++++
>  .../net/dsa/sja1105/sja1105_static_config.h   |  500 +++++
>  include/linux/dsa/sja1105.h                   |   52 +
>  include/linux/packing.h                       |   49 +
>  include/net/dsa.h                             |    6 +
>  lib/Makefile                                  |    2 +-
>  lib/packing.c                                 |  211 ++
>  net/dsa/Kconfig                               |   12 +
>  net/dsa/Makefile                              |    2 +
>  net/dsa/dsa.c                                 |    6 +
>  net/dsa/dsa2.c                                |    8 +-
>  net/dsa/dsa_priv.h                            |   15 +
>  net/dsa/port.c                                |   36 +-
>  net/dsa/slave.c                               |   16 +-
>  net/dsa/tag_8021q.c                           |  185 ++
>  net/dsa/tag_sja1105.c                         |  142 ++
>  31 files changed, 7568 insertions(+), 23 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/net/dsa/sja1105.txt
>  create mode 100644 Documentation/networking/dsa/sja1105.txt
>  create mode 100644 Documentation/packing.txt
>  create mode 100644 drivers/net/dsa/sja1105/Kconfig
>  create mode 100644 drivers/net/dsa/sja1105/Makefile
>  create mode 100644 drivers/net/dsa/sja1105/sja1105.h
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_clocking.c
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_dynamic_config.c
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_dynamic_config.h
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_ethtool.c
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_main.c
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_spi.c
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_static_config.c
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_static_config.h
>  create mode 100644 include/linux/dsa/sja1105.h
>  create mode 100644 include/linux/packing.h
>  create mode 100644 lib/packing.c
>  create mode 100644 net/dsa/tag_8021q.c
>  create mode 100644 net/dsa/tag_sja1105.c
> 


-- 
Florian

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ