From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 234A0C43381 for ; Sun, 24 Mar 2019 03:25:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C75F12148D for ; Sun, 24 Mar 2019 03:25:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="E2h9UsIm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728019AbfCXDZH (ORCPT ); Sat, 23 Mar 2019 23:25:07 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:44189 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727706AbfCXDZH (ORCPT ); Sat, 23 Mar 2019 23:25:07 -0400 Received: by mail-wr1-f66.google.com with SMTP id y7so2265186wrn.11 for ; Sat, 23 Mar 2019 20:25:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=GP2cbySb2RHR5NyHKKOlzXjZb4Zr+3t1CmTXH+E43hA=; b=E2h9UsImt4xOOqimPTZ7jSvt/Mchtz3BGJD+qmdIV6WJOdS+ZLOSuE2tYfDmVELYk8 pILrLTXBpK1Vosc4WV/mq6w8F7sNdCbzHnB2ALDeEVOXdvtejz2YPmY8t77yHnaQuRsH r8Y+TMF/Shqyss7HExC69pNZrE4r2upJ0Dm77OCsJezptqhWIawF4npkqfD78Trom99e t8rg6DAp5RFrP5jDyZ7rt7IfD5l66wFGSzkfBFwyMBQZUrOWmaHPTGShiOZgWmg44tbQ AxhtGJjcN/2Ex7+LYop54lPvpwWgNGPgAlXGa92C0/1ksYs/3sZqKkTKLRqKOa3cOvA/ 79eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=GP2cbySb2RHR5NyHKKOlzXjZb4Zr+3t1CmTXH+E43hA=; b=gJFEz663hv+RLTXGVRhzqsr+es8oXT3UVjEn2b6LIAI0sf01rd/+J+TvQwLrjZGkKz nnM/Wi9RxHVXROJfb5mG+z+CZ/pMRlIUELD13JgCORp26SF+hWDBtRMlFjK4MRF4UB9F gtACL4ovDhChRnI8NkotexB+6tpWcTmUd2/a+G91u6D+U0N7Xtxf1ZG4ACe1G55G08db kN0wheVzY9AHtQ2F/aumo/IA7bbjgGHETpQRNVVolzpYGGZ+faPgIyucyLjLGDqJua6c Cw5MMTy/Zvep7g4rnV6kw1Wwr5I1uwjTiYlHaMwwf2sTs4RTlYqSx5frKqtfPg1R3aBT xlLw== X-Gm-Message-State: APjAAAUEcGSJXv4g+b4BoYt3WF8vERAjXzLADp1qlHW9GkpNrS0shSrr Zucpzh+6j1np+0uwR85NBTo= X-Google-Smtp-Source: APXvYqw5TfsnMAG+nt0EQG98VTT8p4f+c6Ne8VjgN9RvZR0i7vwak56Pd9YMap7A2/sU/Z4ULPc90w== X-Received: by 2002:adf:ce07:: with SMTP id p7mr6081031wrn.148.1553397904694; Sat, 23 Mar 2019 20:25:04 -0700 (PDT) Received: from localhost.localdomain ([188.26.228.227]) by smtp.gmail.com with ESMTPSA id c20sm12243049wre.28.2019.03.23.20.25.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 23 Mar 2019 20:25:03 -0700 (PDT) From: Vladimir Oltean To: davem@davemloft.net, netdev@vger.kernel.org Cc: f.fainelli@gmail.com, andrew@lunn.ch, vivien.didelot@gmail.com, linus.walleij@linaro.org, Vladimir Oltean Subject: [RFC PATCH net-next 00/13] NXP SJA1105 DSA driver Date: Sun, 24 Mar 2019 05:23:33 +0200 Message-Id: <20190324032346.32394-1-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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. 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 -- 2.17.1