All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v7 0/3] net: dsa: yt921x: Add support for Motorcomm YT921x
@ 2025-09-05 18:17 David Yang
  2025-09-05 18:17 ` [PATCH net-next v7 1/3] dt-bindings: net: dsa: yt921x: Add Motorcomm YT921x switch support David Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: David Yang @ 2025-09-05 18:17 UTC (permalink / raw)
  To: netdev
  Cc: David Yang, Andrew Lunn, Vladimir Oltean, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Simon Horman, Russell King,
	devicetree, linux-kernel

Motorcomm YT921x is a series of ethernet switches developed by Shanghai
Motorcomm Electronic Technology, including:

  - YT9215S / YT9215RB / YT9215SC: 5 GbE phys
  - YT9213NB / YT9214NB: 2 GbE phys
  - YT9218N / YT9218MB: 8 GbE phys

and up to 2 serdes interfaces.

This patch adds basic support for a working DSA switch.

v6: https://lore.kernel.org/r/20250824005116.2434998-1-mmyangfl@gmail.com
  - handle unforwarded packets in tag driver
  - move register and struct definitions to header file
  - rework register abstraction and implement a driver lock
  - implement *_stats and use a periodic work to fetch MIB
  - remove EEPROM dump
  - remove sysfs attr and other debug leftovers
  - remove ds->user_mii_bus assignment
  - run selftests and fix any errors found
v5: https://lore.kernel.org/r/20250820075420.1601068-1-mmyangfl@gmail.com
  - use enum for reg in dt binding
  - fix phylink_mac_ops in the driver
  - fix coding style
v4: https://lore.kernel.org/r/20250818162445.1317670-1-mmyangfl@gmail.com
  - remove switchid from dt binding
  - remove hsr from tag driver
  - use ratelimited log in tag driver
v3: https://lore.kernel.org/r/20250816052323.360788-1-mmyangfl@gmail.com
  - fix words and warnings in dt binding
  - remove unnecessary dev_warn_ratelimited and u64_from_u32
  - remove lag and mst
  - check for mdio results and fix a unlocked write in conduit_state_change
v2: https://lore.kernel.org/r/20250814065032.3766988-1-mmyangfl@gmail.com
  - fix words in dt binding
  - add support for lag and mst
v1: https://lore.kernel.org/r/20250808173808.273774-1-mmyangfl@gmail.com
  - fix coding style
  - add dt binding
  - add support for fdb, vlan and bridge

David Yang (3):
  dt-bindings: net: dsa: yt921x: Add Motorcomm YT921x switch support
  net: dsa: tag_yt921x: add support for Motorcomm YT921x tags
  net: dsa: yt921x: Add support for Motorcomm YT921x

 .../bindings/net/dsa/motorcomm,yt921x.yaml    |  169 +
 drivers/net/dsa/Kconfig                       |    7 +
 drivers/net/dsa/Makefile                      |    1 +
 drivers/net/dsa/yt921x.c                      | 3004 +++++++++++++++++
 drivers/net/dsa/yt921x.h                      |  593 ++++
 include/net/dsa.h                             |    2 +
 include/uapi/linux/if_ether.h                 |    1 +
 net/dsa/Kconfig                               |    6 +
 net/dsa/Makefile                              |    1 +
 net/dsa/tag_yt921x.c                          |  138 +
 10 files changed, 3922 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/dsa/motorcomm,yt921x.yaml
 create mode 100644 drivers/net/dsa/yt921x.c
 create mode 100644 drivers/net/dsa/yt921x.h
 create mode 100644 net/dsa/tag_yt921x.c

-- 
2.50.1


^ permalink raw reply	[flat|nested] 11+ messages in thread
* Re: [PATCH net-next v7 3/3] net: dsa: yt921x: Add support for Motorcomm YT921x
@ 2025-09-06 14:55 kernel test robot
  0 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2025-09-06 14:55 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "__compiletime_assert_NNN"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20250905181728.3169479-4-mmyangfl@gmail.com>
References: <20250905181728.3169479-4-mmyangfl@gmail.com>
TO: David Yang <mmyangfl@gmail.com>
TO: netdev@vger.kernel.org
CC: David Yang <mmyangfl@gmail.com>
CC: Andrew Lunn <andrew@lunn.ch>
CC: Vladimir Oltean <olteanv@gmail.com>
CC: Eric Dumazet <edumazet@google.com>
CC: Jakub Kicinski <kuba@kernel.org>
CC: Paolo Abeni <pabeni@redhat.com>
CC: Rob Herring <robh@kernel.org>
CC: Krzysztof Kozlowski <krzk@kernel.org>
CC: Conor Dooley <conor+dt@kernel.org>
CC: Simon Horman <horms@kernel.org>
CC: Russell King <linux@armlinux.org.uk>
CC: devicetree@vger.kernel.org
CC: linux-kernel@vger.kernel.org

Hi David,

kernel test robot noticed the following build errors:

[auto build test ERROR on net/main]
[also build test ERROR on linus/master v6.17-rc4 next-20250905]
[cannot apply to net-next/main horms-ipvs/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/David-Yang/dt-bindings-net-dsa-yt921x-Add-Motorcomm-YT921x-switch-support/20250906-021942
base:   net/main
patch link:    https://lore.kernel.org/r/20250905181728.3169479-4-mmyangfl%40gmail.com
patch subject: [PATCH net-next v7 3/3] net: dsa: yt921x: Add support for Motorcomm YT921x
:::::: branch date: 20 hours ago
:::::: commit date: 20 hours ago
config: arm64-randconfig-r111-20250906 (https://download.01.org/0day-ci/archive/20250906/202509062201.7oDUWUsM-lkp@intel.com/config)
compiler: clang version 16.0.6 (https://github.com/llvm/llvm-project 7cbf1a2591520c2491aa35339f227775f4d3adf6)
reproduce: (https://download.01.org/0day-ci/archive/20250906/202509062201.7oDUWUsM-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202509062201.7oDUWUsM-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/net/dsa/yt921x.c:1045:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1110:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1161:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1579:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1611:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1636:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1651:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1668:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1686:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1849:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1867:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:1900:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:2148:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:2187:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
   drivers/net/dsa/yt921x.c:2259:2: warning: variable 'ctrl' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
           default:
           ^~~~~~~
   drivers/net/dsa/yt921x.c:2269:2: note: uninitialized use occurs here
           ctrl |= YT921X_PORT_RX_MAC_EN | YT921X_PORT_TX_MAC_EN;
           ^~~~
   drivers/net/dsa/yt921x.c:2240:10: note: initialize the variable 'ctrl' to silence this warning
           u32 ctrl;
                   ^
                    = 0
   drivers/net/dsa/yt921x.c:2390:3: warning: variable 'ctrl' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
                   default:
                   ^~~~~~~
   drivers/net/dsa/yt921x.c:2395:17: note: uninitialized use occurs here
                                                mask, ctrl);
                                                      ^~~~
   drivers/net/dsa/yt921x.c:2348:10: note: initialize the variable 'ctrl' to silence this warning
           u32 ctrl;
                   ^
                    = 0
   drivers/net/dsa/yt921x.c:2557:17: warning: unused variable 'dev' [-Wunused-variable]
           struct device *dev = to_device(priv);
                          ^
>> drivers/net/dsa/yt921x.c:1712:10: error: call to '__compiletime_assert_1340' declared with 'error' attribute: FIELD_PREP: value too large for the field
                   ctrl = YT921X_PORT_VLAN_CTRL_CVID(pvid);
                          ^
   drivers/net/dsa/yt921x.h:363:43: note: expanded from macro 'YT921X_PORT_VLAN_CTRL_CVID'
   #define   YT921X_PORT_VLAN_CTRL_CVID(x)                 FIELD_PREP(YT921X_PORT_VLAN_CTRL_CVID_M, (x))
                                                           ^
   include/linux/bitfield.h:115:3: note: expanded from macro 'FIELD_PREP'
                   __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: ");    \
                   ^
   include/linux/bitfield.h:68:3: note: expanded from macro '__BF_FIELD_CHECK'
                   BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ?           \
                   ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:560:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:553:4: note: expanded from macro '__compiletime_assert'
                           prefix ## suffix();                             \
                           ^
   <scratch space>:15:1: note: expanded from here
   __compiletime_assert_1340
   ^
   17 warnings and 1 error generated.


vim +1712 drivers/net/dsa/yt921x.c

aa100a55442187 David Yang 2025-09-06  1696  
aa100a55442187 David Yang 2025-09-06  1697  static int
aa100a55442187 David Yang 2025-09-06  1698  yt921x_vlan_filtering(struct yt921x_priv *priv, int port, bool vlan_filtering)
aa100a55442187 David Yang 2025-09-06  1699  {
aa100a55442187 David Yang 2025-09-06  1700  	struct dsa_switch *ds = &priv->ds;
aa100a55442187 David Yang 2025-09-06  1701  	struct dsa_port *dp = dsa_to_port(ds, port);
aa100a55442187 David Yang 2025-09-06  1702  	u16 pvid;
aa100a55442187 David Yang 2025-09-06  1703  	u32 mask;
aa100a55442187 David Yang 2025-09-06  1704  	u32 ctrl;
aa100a55442187 David Yang 2025-09-06  1705  	int res;
aa100a55442187 David Yang 2025-09-06  1706  
aa100a55442187 David Yang 2025-09-06  1707  	mask = YT921X_PORT_VLAN_CTRL_CVID_M;
aa100a55442187 David Yang 2025-09-06  1708  	if (!vlan_filtering || !dp->bridge) {
aa100a55442187 David Yang 2025-09-06  1709  		ctrl = YT921X_PORT_VLAN_CTRL_CVID(YT921X_VID_UNWARE);
aa100a55442187 David Yang 2025-09-06  1710  	} else {
aa100a55442187 David Yang 2025-09-06  1711  		br_vlan_get_pvid(dp->bridge->dev, &pvid);
aa100a55442187 David Yang 2025-09-06 @1712  		ctrl = YT921X_PORT_VLAN_CTRL_CVID(pvid);
aa100a55442187 David Yang 2025-09-06  1713  	}
aa100a55442187 David Yang 2025-09-06  1714  	res = yt921x_reg_update_bits(priv, YT921X_PORTn_VLAN_CTRL(port),
aa100a55442187 David Yang 2025-09-06  1715  				     mask, ctrl);
aa100a55442187 David Yang 2025-09-06  1716  	if (res)
aa100a55442187 David Yang 2025-09-06  1717  		return res;
aa100a55442187 David Yang 2025-09-06  1718  
aa100a55442187 David Yang 2025-09-06  1719  	mask = YT921X_PORT_VLAN_CTRL1_CVLAN_DROP_TAGGED |
aa100a55442187 David Yang 2025-09-06  1720  	       YT921X_PORT_VLAN_CTRL1_CVLAN_DROP_UNTAGGED;
aa100a55442187 David Yang 2025-09-06  1721  	ctrl = 0;
aa100a55442187 David Yang 2025-09-06  1722  	if (vlan_filtering) {
aa100a55442187 David Yang 2025-09-06  1723  		/* Do not drop tagged frames here; let VLAN_IGR_FILTER do it */
aa100a55442187 David Yang 2025-09-06  1724  		if (!pvid)
aa100a55442187 David Yang 2025-09-06  1725  			ctrl |= YT921X_PORT_VLAN_CTRL1_CVLAN_DROP_UNTAGGED;
aa100a55442187 David Yang 2025-09-06  1726  	}
aa100a55442187 David Yang 2025-09-06  1727  	res = yt921x_reg_update_bits(priv, YT921X_PORTn_VLAN_CTRL1(port),
aa100a55442187 David Yang 2025-09-06  1728  				     mask, ctrl);
aa100a55442187 David Yang 2025-09-06  1729  	if (res)
aa100a55442187 David Yang 2025-09-06  1730  		return res;
aa100a55442187 David Yang 2025-09-06  1731  
aa100a55442187 David Yang 2025-09-06  1732  	res = yt921x_reg_toggle_bits(priv, YT921X_VLAN_IGR_FILTER,
aa100a55442187 David Yang 2025-09-06  1733  				     YT921X_VLAN_IGR_FILTER_PORTn(port),
aa100a55442187 David Yang 2025-09-06  1734  				     vlan_filtering);
aa100a55442187 David Yang 2025-09-06  1735  	if (res)
aa100a55442187 David Yang 2025-09-06  1736  		return res;
aa100a55442187 David Yang 2025-09-06  1737  
aa100a55442187 David Yang 2025-09-06  1738  	/* Turn on / off VLAN awareness */
aa100a55442187 David Yang 2025-09-06  1739  	mask = YT921X_PORT_IGR_TPIDn_CTAG_M;
aa100a55442187 David Yang 2025-09-06  1740  	if (!vlan_filtering)
aa100a55442187 David Yang 2025-09-06  1741  		ctrl = 0;
aa100a55442187 David Yang 2025-09-06  1742  	else
aa100a55442187 David Yang 2025-09-06  1743  		ctrl = YT921X_PORT_IGR_TPIDn_CTAG(0);
aa100a55442187 David Yang 2025-09-06  1744  	res = yt921x_reg_update_bits(priv, YT921X_PORTn_IGR_TPID(port),
aa100a55442187 David Yang 2025-09-06  1745  				     mask, ctrl);
aa100a55442187 David Yang 2025-09-06  1746  	if (res)
aa100a55442187 David Yang 2025-09-06  1747  		return res;
aa100a55442187 David Yang 2025-09-06  1748  
aa100a55442187 David Yang 2025-09-06  1749  	return 0;
aa100a55442187 David Yang 2025-09-06  1750  }
aa100a55442187 David Yang 2025-09-06  1751  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-09-08 13:30 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-05 18:17 [PATCH net-next v7 0/3] net: dsa: yt921x: Add support for Motorcomm YT921x David Yang
2025-09-05 18:17 ` [PATCH net-next v7 1/3] dt-bindings: net: dsa: yt921x: Add Motorcomm YT921x switch support David Yang
2025-09-06 19:17   ` Rob Herring
2025-09-08 12:34   ` Andrew Lunn
2025-09-05 18:17 ` [PATCH net-next v7 2/3] net: dsa: tag_yt921x: add support for Motorcomm YT921x tags David Yang
2025-09-05 18:17 ` [PATCH net-next v7 3/3] net: dsa: yt921x: Add support for Motorcomm YT921x David Yang
2025-09-06  8:19   ` kernel test robot
2025-09-08 13:00   ` Andrew Lunn
2025-09-08 13:10     ` Yangfl
2025-09-08 13:30       ` Andrew Lunn
  -- strict thread matches above, loose matches on Subject: below --
2025-09-06 14:55 kernel test robot

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.