linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 01/15] net: phy: Add phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-17 10:06   ` Krzysztof Hałasa
  2016-11-15 18:06 ` [PATCH 02/15] net: nb8800: Utilize phy_ethtool_nway_reset Florian Fainelli
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev; +Cc: davem, andrew, tremyfr, Florian Fainelli, open list

This function just calls into genphy_restart_aneg() to perform an
autonegotation restart.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/phy/phy.c | 11 +++++++++++
 include/linux/phy.h   |  1 +
 2 files changed, 12 insertions(+)

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index e6dd222fddb1..73adbaa9ac86 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1441,3 +1441,14 @@ int phy_ethtool_set_link_ksettings(struct net_device *ndev,
 	return phy_ethtool_ksettings_set(phydev, cmd);
 }
 EXPORT_SYMBOL(phy_ethtool_set_link_ksettings);
+
+int phy_ethtool_nway_reset(struct net_device *ndev)
+{
+	struct phy_device *phydev = ndev->phydev;
+
+	if (!phydev)
+		return -ENODEV;
+
+	return genphy_restart_aneg(phydev);
+}
+EXPORT_SYMBOL(phy_ethtool_nway_reset);
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 9880d73a2c3d..b9bd3b4f4ea1 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -860,6 +860,7 @@ int phy_ethtool_get_link_ksettings(struct net_device *ndev,
 				   struct ethtool_link_ksettings *cmd);
 int phy_ethtool_set_link_ksettings(struct net_device *ndev,
 				   const struct ethtool_link_ksettings *cmd);
+int phy_ethtool_nway_reset(struct net_device *ndev);
 
 int __init mdio_bus_init(void);
 void mdio_bus_exit(void);
-- 
2.9.3

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

* [PATCH 02/15] net: nb8800: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
  2016-11-15 18:06 ` [PATCH 01/15] net: phy: Add phy_ethtool_nway_reset Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 03/15] net: bcm63xx_enet: " Florian Fainelli
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli,
	Måns Rullgård, Wei Yongjun, Jarod Wilson,
	Arnd Bergmann, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/aurora/nb8800.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/aurora/nb8800.c b/drivers/net/ethernet/aurora/nb8800.c
index b59aa3541270..07ff6492402a 100644
--- a/drivers/net/ethernet/aurora/nb8800.c
+++ b/drivers/net/ethernet/aurora/nb8800.c
@@ -1037,16 +1037,6 @@ static const struct net_device_ops nb8800_netdev_ops = {
 	.ndo_validate_addr	= eth_validate_addr,
 };
 
-static int nb8800_nway_reset(struct net_device *dev)
-{
-	struct phy_device *phydev = dev->phydev;
-
-	if (!phydev)
-		return -ENODEV;
-
-	return genphy_restart_aneg(phydev);
-}
-
 static void nb8800_get_pauseparam(struct net_device *dev,
 				  struct ethtool_pauseparam *pp)
 {
@@ -1165,7 +1155,7 @@ static void nb8800_get_ethtool_stats(struct net_device *dev,
 }
 
 static const struct ethtool_ops nb8800_ethtool_ops = {
-	.nway_reset		= nb8800_nway_reset,
+	.nway_reset		= phy_ethtool_nway_reset,
 	.get_link		= ethtool_op_get_link,
 	.get_pauseparam		= nb8800_get_pauseparam,
 	.set_pauseparam		= nb8800_set_pauseparam,
-- 
2.9.3

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

* [PATCH 03/15] net: bcm63xx_enet: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
  2016-11-15 18:06 ` [PATCH 01/15] net: phy: Add phy_ethtool_nway_reset Florian Fainelli
  2016-11-15 18:06 ` [PATCH 02/15] net: nb8800: Utilize phy_ethtool_nway_reset Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 19:59   ` Heinrich Schuchardt
  2016-11-15 18:06 ` [PATCH 04/15] net: mv643xx_eth: " Florian Fainelli
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli,
	maintainer:BROADCOM BCM63XX ARM ARCHITECTURE, Arnd Bergmann,
	xypron.glpk, Jarod Wilson, Thierry Reding,
	moderated list:BROADCOM BCM63XX ARM ARCHITECTURE, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/broadcom/bcm63xx_enet.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
index 5c7acef1de2e..a43ab90c051e 100644
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -1434,11 +1434,8 @@ static int bcm_enet_nway_reset(struct net_device *dev)
 	struct bcm_enet_priv *priv;
 
 	priv = netdev_priv(dev);
-	if (priv->has_phy) {
-		if (!dev->phydev)
-			return -ENODEV;
-		return genphy_restart_aneg(dev->phydev);
-	}
+	if (priv->has_phy)
+		return phy_ethtool_nway_reset(dev),
 
 	return -EOPNOTSUPP;
 }
-- 
2.9.3

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

* [PATCH 04/15] net: mv643xx_eth: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (2 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 03/15] net: bcm63xx_enet: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 19:28   ` Andrew Lunn
  2016-11-15 18:06 ` [PATCH 05/15] net: smsc911x: " Florian Fainelli
                   ` (10 subsequent siblings)
  14 siblings, 1 reply; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Sebastian Hesselbarth,
	open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/marvell/mv643xx_eth.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index 81b08d71c0f8..5f62c3d70df9 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -1639,14 +1639,6 @@ static void mv643xx_eth_get_drvinfo(struct net_device *dev,
 	strlcpy(drvinfo->bus_info, "platform", sizeof(drvinfo->bus_info));
 }
 
-static int mv643xx_eth_nway_reset(struct net_device *dev)
-{
-	if (!dev->phydev)
-		return -EINVAL;
-
-	return genphy_restart_aneg(dev->phydev);
-}
-
 static int
 mv643xx_eth_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ec)
 {
@@ -1770,7 +1762,7 @@ static int mv643xx_eth_get_sset_count(struct net_device *dev, int sset)
 
 static const struct ethtool_ops mv643xx_eth_ethtool_ops = {
 	.get_drvinfo		= mv643xx_eth_get_drvinfo,
-	.nway_reset		= mv643xx_eth_nway_reset,
+	.nway_reset		= phy_ethtool_nway_reset,
 	.get_link		= ethtool_op_get_link,
 	.get_coalesce		= mv643xx_eth_get_coalesce,
 	.set_coalesce		= mv643xx_eth_set_coalesce,
-- 
2.9.3

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

* [PATCH 05/15] net: smsc911x: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (3 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 04/15] net: mv643xx_eth: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 06/15] net: ethernet: smsc9420: " Florian Fainelli
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Steve Glendinning, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/smsc/smsc911x.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index cdb343f0c6e0..be09573c6ced 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -1956,11 +1956,6 @@ static void smsc911x_ethtool_getdrvinfo(struct net_device *dev,
 		sizeof(info->bus_info));
 }
 
-static int smsc911x_ethtool_nwayreset(struct net_device *dev)
-{
-	return phy_start_aneg(dev->phydev);
-}
-
 static u32 smsc911x_ethtool_getmsglevel(struct net_device *dev)
 {
 	struct smsc911x_data *pdata = netdev_priv(dev);
@@ -2132,7 +2127,7 @@ static int smsc911x_ethtool_set_eeprom(struct net_device *dev,
 static const struct ethtool_ops smsc911x_ethtool_ops = {
 	.get_link = ethtool_op_get_link,
 	.get_drvinfo = smsc911x_ethtool_getdrvinfo,
-	.nway_reset = smsc911x_ethtool_nwayreset,
+	.nway_reset = phy_ethtool_nway_reset,
 	.get_msglevel = smsc911x_ethtool_getmsglevel,
 	.set_msglevel = smsc911x_ethtool_setmsglevel,
 	.get_regs_len = smsc911x_ethtool_getregslen,
-- 
2.9.3

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

* [PATCH 06/15] net: ethernet: smsc9420: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (4 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 05/15] net: smsc911x: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 07/15] net: ethernet: ll_temac: " Florian Fainelli
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Steve Glendinning, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/smsc/smsc9420.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smsc9420.c b/drivers/net/ethernet/smsc/smsc9420.c
index b7bfed4bc96b..3174aebb322f 100644
--- a/drivers/net/ethernet/smsc/smsc9420.c
+++ b/drivers/net/ethernet/smsc/smsc9420.c
@@ -254,14 +254,6 @@ static void smsc9420_ethtool_set_msglevel(struct net_device *netdev, u32 data)
 	pd->msg_enable = data;
 }
 
-static int smsc9420_ethtool_nway_reset(struct net_device *netdev)
-{
-	if (!netdev->phydev)
-		return -ENODEV;
-
-	return phy_start_aneg(netdev->phydev);
-}
-
 static int smsc9420_ethtool_getregslen(struct net_device *dev)
 {
 	/* all smsc9420 registers plus all phy registers */
@@ -417,7 +409,7 @@ static const struct ethtool_ops smsc9420_ethtool_ops = {
 	.get_drvinfo = smsc9420_ethtool_get_drvinfo,
 	.get_msglevel = smsc9420_ethtool_get_msglevel,
 	.set_msglevel = smsc9420_ethtool_set_msglevel,
-	.nway_reset = smsc9420_ethtool_nway_reset,
+	.nway_reset = phy_ethtool_nway_reset,
 	.get_link = ethtool_op_get_link,
 	.get_eeprom_len = smsc9420_ethtool_get_eeprom_len,
 	.get_eeprom = smsc9420_ethtool_get_eeprom,
-- 
2.9.3

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

* [PATCH 07/15] net: ethernet: ll_temac: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (5 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 06/15] net: ethernet: smsc9420: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 08/15] net: ethernet: ixp4xx_eth: " Florian Fainelli
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Michal Simek,
	Sören Brinkmann, Florian Westphal, Felipe Balbi,
	moderated list:ARM/ZYNQ ARCHITECTURE, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/xilinx/ll_temac_main.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c
index a9bd665fd122..bcd7b76dde9f 100644
--- a/drivers/net/ethernet/xilinx/ll_temac_main.c
+++ b/drivers/net/ethernet/xilinx/ll_temac_main.c
@@ -967,13 +967,8 @@ static const struct attribute_group temac_attr_group = {
 };
 
 /* ethtool support */
-static int temac_nway_reset(struct net_device *ndev)
-{
-	return phy_start_aneg(ndev->phydev);
-}
-
 static const struct ethtool_ops temac_ethtool_ops = {
-	.nway_reset = temac_nway_reset,
+	.nway_reset = phy_ethtool_nway_reset,
 	.get_link = ethtool_op_get_link,
 	.get_ts_info = ethtool_op_get_ts_info,
 	.get_link_ksettings = phy_ethtool_get_link_ksettings,
-- 
2.9.3

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

* [PATCH 08/15] net: ethernet: ixp4xx_eth: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (6 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 07/15] net: ethernet: ll_temac: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 09/15] net: bcmgenet: " Florian Fainelli
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Krzysztof Halasa, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/xscale/ixp4xx_eth.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/xscale/ixp4xx_eth.c b/drivers/net/ethernet/xscale/ixp4xx_eth.c
index 07d862d90869..aee55c03def0 100644
--- a/drivers/net/ethernet/xscale/ixp4xx_eth.c
+++ b/drivers/net/ethernet/xscale/ixp4xx_eth.c
@@ -1001,11 +1001,6 @@ static void ixp4xx_get_drvinfo(struct net_device *dev,
 	strlcpy(info->bus_info, "internal", sizeof(info->bus_info));
 }
 
-static int ixp4xx_nway_reset(struct net_device *dev)
-{
-	return phy_start_aneg(dev->phydev);
-}
-
 int ixp46x_phc_index = -1;
 EXPORT_SYMBOL_GPL(ixp46x_phc_index);
 
@@ -1037,7 +1032,7 @@ static int ixp4xx_get_ts_info(struct net_device *dev,
 
 static const struct ethtool_ops ixp4xx_ethtool_ops = {
 	.get_drvinfo = ixp4xx_get_drvinfo,
-	.nway_reset = ixp4xx_nway_reset,
+	.nway_reset = phy_ethtool_nway_reset,
 	.get_link = ethtool_op_get_link,
 	.get_ts_info = ixp4xx_get_ts_info,
 	.get_link_ksettings = phy_ethtool_get_link_ksettings,
-- 
2.9.3

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

* [PATCH 09/15] net: bcmgenet: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (7 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 08/15] net: ethernet: ixp4xx_eth: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 10/15] net: fs_enet: " Florian Fainelli
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev; +Cc: davem, andrew, tremyfr, Florian Fainelli, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index 4464bc5db934..33638dc0e104 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -971,13 +971,6 @@ static int bcmgenet_set_eee(struct net_device *dev, struct ethtool_eee *e)
 	return phy_ethtool_set_eee(priv->phydev, e);
 }
 
-static int bcmgenet_nway_reset(struct net_device *dev)
-{
-	struct bcmgenet_priv *priv = netdev_priv(dev);
-
-	return genphy_restart_aneg(priv->phydev);
-}
-
 /* standard ethtool support functions. */
 static const struct ethtool_ops bcmgenet_ethtool_ops = {
 	.get_strings		= bcmgenet_get_strings,
@@ -991,7 +984,7 @@ static const struct ethtool_ops bcmgenet_ethtool_ops = {
 	.set_wol		= bcmgenet_set_wol,
 	.get_eee		= bcmgenet_get_eee,
 	.set_eee		= bcmgenet_set_eee,
-	.nway_reset		= bcmgenet_nway_reset,
+	.nway_reset		= phy_ethtool_nway_reset,
 	.get_coalesce		= bcmgenet_get_coalesce,
 	.set_coalesce		= bcmgenet_set_coalesce,
 	.get_link_ksettings	= bcmgenet_get_link_ksettings,
-- 
2.9.3

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

* [PATCH 10/15] net: fs_enet: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (8 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 09/15] net: bcmgenet: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 11/15] net: fec: " Florian Fainelli
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Pantelis Antoniou,
	Vitaly Bordug, open list:FREESCALE SOC FS_ENET DRIVER, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
index 44f50e168703..34843c155420 100644
--- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
+++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
@@ -807,11 +807,6 @@ static void fs_get_regs(struct net_device *dev, struct ethtool_regs *regs,
 		regs->version = 0;
 }
 
-static int fs_nway_reset(struct net_device *dev)
-{
-	return 0;
-}
-
 static u32 fs_get_msglevel(struct net_device *dev)
 {
 	struct fs_enet_private *fep = netdev_priv(dev);
@@ -865,7 +860,7 @@ static int fs_set_tunable(struct net_device *dev,
 static const struct ethtool_ops fs_ethtool_ops = {
 	.get_drvinfo = fs_get_drvinfo,
 	.get_regs_len = fs_get_regs_len,
-	.nway_reset = fs_nway_reset,
+	.nway_reset = phy_ethtool_nway_reset,
 	.get_link = ethtool_op_get_link,
 	.get_msglevel = fs_get_msglevel,
 	.set_msglevel = fs_set_msglevel,
-- 
2.9.3

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

* [PATCH 11/15] net: fec: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (9 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 10/15] net: fs_enet: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 12/15] net: ethernet: ucc: " Florian Fainelli
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev; +Cc: davem, andrew, tremyfr, Florian Fainelli, Fugang Duan, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/freescale/fec_main.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 01aebc0084a9..1aabe4bcc8ea 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -2344,16 +2344,6 @@ static int fec_enet_get_sset_count(struct net_device *dev, int sset)
 }
 #endif /* !defined(CONFIG_M5272) */
 
-static int fec_enet_nway_reset(struct net_device *dev)
-{
-	struct phy_device *phydev = dev->phydev;
-
-	if (!phydev)
-		return -ENODEV;
-
-	return genphy_restart_aneg(phydev);
-}
-
 /* ITR clock source is enet system clock (clk_ahb).
  * TCTT unit is cycle_ns * 64 cycle
  * So, the ICTT value = X us / (cycle_ns * 64)
@@ -2553,7 +2543,7 @@ static const struct ethtool_ops fec_enet_ethtool_ops = {
 	.get_drvinfo		= fec_enet_get_drvinfo,
 	.get_regs_len		= fec_enet_get_regs_len,
 	.get_regs		= fec_enet_get_regs,
-	.nway_reset		= fec_enet_nway_reset,
+	.nway_reset		= phy_ethtool_nway_reset,
 	.get_link		= ethtool_op_get_link,
 	.get_coalesce		= fec_enet_get_coalesce,
 	.set_coalesce		= fec_enet_set_coalesce,
-- 
2.9.3

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

* [PATCH 12/15] net: ethernet: ucc: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (10 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 11/15] net: fec: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 13/15] net: ethernet: lantiq_etop: " Florian Fainelli
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Li Yang,
	open list:FREESCALE QUICC ENGINE UCC ETHERNET DRIVER, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/freescale/ucc_geth_ethtool.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/freescale/ucc_geth_ethtool.c b/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
index 812a968a78e9..8ba636f61b50 100644
--- a/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
+++ b/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
@@ -332,13 +332,6 @@ static void uec_get_ethtool_stats(struct net_device *netdev,
 	}
 }
 
-static int uec_nway_reset(struct net_device *netdev)
-{
-	struct ucc_geth_private *ugeth = netdev_priv(netdev);
-
-	return phy_start_aneg(ugeth->phydev);
-}
-
 /* Report driver information */
 static void
 uec_get_drvinfo(struct net_device *netdev,
@@ -394,7 +387,7 @@ static const struct ethtool_ops uec_ethtool_ops = {
 	.get_regs               = uec_get_regs,
 	.get_msglevel           = uec_get_msglevel,
 	.set_msglevel           = uec_set_msglevel,
-	.nway_reset             = uec_nway_reset,
+	.nway_reset             = phy_ethtool_nway_reset,
 	.get_link               = ethtool_op_get_link,
 	.get_ringparam          = uec_get_ringparam,
 	.set_ringparam          = uec_set_ringparam,
-- 
2.9.3

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

* [PATCH 13/15] net: ethernet: lantiq_etop: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (11 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 12/15] net: ethernet: ucc: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 21:14   ` Langer, Thomas
  2016-11-15 18:06 ` [PATCH 14/15] net: usb: ax88172x: " Florian Fainelli
  2016-11-15 18:06 ` [PATCH 15/15] net: usb: lan78xx: " Florian Fainelli
  14 siblings, 1 reply; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Florian Westphal,
	Jarod Wilson, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/ethernet/lantiq_etop.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 1a739d71f1c2..9d931373a9b9 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -303,15 +303,9 @@ ltq_etop_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
 	strlcpy(info->version, DRV_VERSION, sizeof(info->version));
 }
 
-static int
-ltq_etop_nway_reset(struct net_device *dev)
-{
-	return phy_start_aneg(dev->phydev);
-}
-
 static const struct ethtool_ops ltq_etop_ethtool_ops = {
 	.get_drvinfo = ltq_etop_get_drvinfo,
-	.nway_reset = ltq_etop_nway_reset,
+	.nway_reset = phy_ethtool_nway_reset,
 	.get_link_ksettings = phy_ethtool_get_link_ksettings,
 	.set_link_ksettings = phy_ethtool_set_link_ksettings,
 };
-- 
2.9.3

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

* [PATCH 14/15] net: usb: ax88172x: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (12 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 13/15] net: ethernet: lantiq_etop: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:06 ` [PATCH 15/15] net: usb: lan78xx: " Florian Fainelli
  14 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Robert Foss,
	Colin Ian King, open list:USB NETWORKING DRIVERS, open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/usb/ax88172a.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/net/usb/ax88172a.c b/drivers/net/usb/ax88172a.c
index 49a3bc107d05..6308386b09df 100644
--- a/drivers/net/usb/ax88172a.c
+++ b/drivers/net/usb/ax88172a.c
@@ -149,14 +149,6 @@ static const struct net_device_ops ax88172a_netdev_ops = {
 	.ndo_set_rx_mode        = asix_set_multicast,
 };
 
-static int ax88172a_nway_reset(struct net_device *net)
-{
-	if (!net->phydev)
-		return -ENODEV;
-
-	return phy_start_aneg(net->phydev);
-}
-
 static const struct ethtool_ops ax88172a_ethtool_ops = {
 	.get_drvinfo		= asix_get_drvinfo,
 	.get_link		= usbnet_get_link,
@@ -167,7 +159,7 @@ static const struct ethtool_ops ax88172a_ethtool_ops = {
 	.get_eeprom_len		= asix_get_eeprom_len,
 	.get_eeprom		= asix_get_eeprom,
 	.set_eeprom		= asix_set_eeprom,
-	.nway_reset		= ax88172a_nway_reset,
+	.nway_reset		= phy_ethtool_nway_reset,
 	.get_link_ksettings	= phy_ethtool_get_link_ksettings,
 	.set_link_ksettings	= phy_ethtool_set_link_ksettings,
 };
-- 
2.9.3

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

* [PATCH 15/15] net: usb: lan78xx: Utilize phy_ethtool_nway_reset
       [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
                   ` (13 preceding siblings ...)
  2016-11-15 18:06 ` [PATCH 14/15] net: usb: ax88172x: " Florian Fainelli
@ 2016-11-15 18:06 ` Florian Fainelli
  2016-11-15 18:14   ` Woojung.Huh
  14 siblings, 1 reply; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 18:06 UTC (permalink / raw)
  To: netdev
  Cc: davem, andrew, tremyfr, Florian Fainelli, Woojung Huh,
	Microchip Linux Driver Support, open list:USB NETWORKING DRIVERS,
	open list

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/usb/lan78xx.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index bcd9010c1f27..cf2857fa938f 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -1447,11 +1447,6 @@ static u32 lan78xx_get_link(struct net_device *net)
 	return net->phydev->link;
 }
 
-static int lan78xx_nway_reset(struct net_device *net)
-{
-	return phy_start_aneg(net->phydev);
-}
-
 static void lan78xx_get_drvinfo(struct net_device *net,
 				struct ethtool_drvinfo *info)
 {
@@ -1655,7 +1650,7 @@ static int lan78xx_set_pause(struct net_device *net,
 
 static const struct ethtool_ops lan78xx_ethtool_ops = {
 	.get_link	= lan78xx_get_link,
-	.nway_reset	= lan78xx_nway_reset,
+	.nway_reset	= phy_ethtool_nway_reset,
 	.get_drvinfo	= lan78xx_get_drvinfo,
 	.get_msglevel	= lan78xx_get_msglevel,
 	.set_msglevel	= lan78xx_set_msglevel,
-- 
2.9.3

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

* RE: [PATCH 15/15] net: usb: lan78xx: Utilize phy_ethtool_nway_reset
  2016-11-15 18:06 ` [PATCH 15/15] net: usb: lan78xx: " Florian Fainelli
@ 2016-11-15 18:14   ` Woojung.Huh
  0 siblings, 0 replies; 21+ messages in thread
From: Woojung.Huh @ 2016-11-15 18:14 UTC (permalink / raw)
  To: f.fainelli, netdev
  Cc: davem, andrew, tremyfr, UNGLinuxDriver, linux-usb, linux-kernel

> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
>  drivers/net/usb/lan78xx.c | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
> index bcd9010c1f27..cf2857fa938f 100644
> --- a/drivers/net/usb/lan78xx.c
> +++ b/drivers/net/usb/lan78xx.c
> @@ -1447,11 +1447,6 @@ static u32 lan78xx_get_link(struct net_device *net)
>  	return net->phydev->link;
>  }
> 
> -static int lan78xx_nway_reset(struct net_device *net)
> -{
> -	return phy_start_aneg(net->phydev);
> -}
> -
>  static void lan78xx_get_drvinfo(struct net_device *net,
>  				struct ethtool_drvinfo *info)
>  {
> @@ -1655,7 +1650,7 @@ static int lan78xx_set_pause(struct net_device
> *net,
> 
>  static const struct ethtool_ops lan78xx_ethtool_ops = {
>  	.get_link	= lan78xx_get_link,
> -	.nway_reset	= lan78xx_nway_reset,
> +	.nway_reset	= phy_ethtool_nway_reset,
>  	.get_drvinfo	= lan78xx_get_drvinfo,
>  	.get_msglevel	= lan78xx_get_msglevel,
>  	.set_msglevel	= lan78xx_set_msglevel,
> --
> 2.9.3
Acked-by: Woojung Huh <woojung.huh@microchip.com>

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

* Re: [PATCH 04/15] net: mv643xx_eth: Utilize phy_ethtool_nway_reset
  2016-11-15 18:06 ` [PATCH 04/15] net: mv643xx_eth: " Florian Fainelli
@ 2016-11-15 19:28   ` Andrew Lunn
  0 siblings, 0 replies; 21+ messages in thread
From: Andrew Lunn @ 2016-11-15 19:28 UTC (permalink / raw)
  To: Florian Fainelli; +Cc: netdev, davem, tremyfr, Sebastian Hesselbarth, open list

On Tue, Nov 15, 2016 at 10:06:33AM -0800, Florian Fainelli wrote:
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

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

* Re: [PATCH 03/15] net: bcm63xx_enet: Utilize phy_ethtool_nway_reset
  2016-11-15 18:06 ` [PATCH 03/15] net: bcm63xx_enet: " Florian Fainelli
@ 2016-11-15 19:59   ` Heinrich Schuchardt
  2016-11-15 20:15     ` Florian Fainelli
  0 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2016-11-15 19:59 UTC (permalink / raw)
  To: Florian Fainelli, netdev
  Cc: davem, andrew, tremyfr,
	maintainer:BROADCOM BCM63XX ARM ARCHITECTURE, Arnd Bergmann,
	xypron.glpk, Jarod Wilson, Thierry Reding,
	moderated list:BROADCOM BCM63XX ARM ARCHITECTURE, open list

On 11/15/2016 07:06 PM, Florian Fainelli wrote:
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>

Each patch of your patch series should have a commit message.

You can add the missing commit messages with
git rebase -i HEAD~15
choosing reword.

Please, add a cover letter message describing the patch series using

git format-patch -ns --cover-letter HEAD~15..HEAD

and provide a summary in the 0/15 message.

The cover letter and all patches should be in one mails thhread.
If you put all messages into one directory you can send the series as
one mail thread with

git send-email <directory>

> ---
>  drivers/net/ethernet/broadcom/bcm63xx_enet.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
> index 5c7acef1de2e..a43ab90c051e 100644
> --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
> +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
> @@ -1434,11 +1434,8 @@ static int bcm_enet_nway_reset(struct net_device *dev)
>  	struct bcm_enet_priv *priv;
>  
>  	priv = netdev_priv(dev);
> -	if (priv->has_phy) {
> -		if (!dev->phydev)
> -			return -ENODEV;
> -		return genphy_restart_aneg(dev->phydev);
> -	}
> +	if (priv->has_phy)
> +		return phy_ethtool_nway_reset(dev),
>  
>  	return -EOPNOTSUPP;
>  }
> 

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

* Re: [PATCH 03/15] net: bcm63xx_enet: Utilize phy_ethtool_nway_reset
  2016-11-15 19:59   ` Heinrich Schuchardt
@ 2016-11-15 20:15     ` Florian Fainelli
  0 siblings, 0 replies; 21+ messages in thread
From: Florian Fainelli @ 2016-11-15 20:15 UTC (permalink / raw)
  To: Heinrich Schuchardt, netdev
  Cc: davem, andrew, tremyfr,
	maintainer:BROADCOM BCM63XX ARM ARCHITECTURE, Arnd Bergmann,
	xypron.glpk, Jarod Wilson, Thierry Reding,
	moderated list:BROADCOM BCM63XX ARM ARCHITECTURE, open list

On 11/15/2016 11:59 AM, Heinrich Schuchardt wrote:
> On 11/15/2016 07:06 PM, Florian Fainelli wrote:
>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> 
> Each patch of your patch series should have a commit message.

It's pretty obvious what this does, really.

> 
> You can add the missing commit messages with
> git rebase -i HEAD~15
> choosing reword.
> 
> Please, add a cover letter message describing the patch series using
> 
> git format-patch -ns --cover-letter HEAD~15..HEAD
> 
> and provide a summary in the 0/15 message.

I did:

https://www.mail-archive.com/netdev@vger.kernel.org/maillist.html

and that is also apparent from:

In-Reply-To: <20161115180644.3941-1-f.fainelli@gmail.com>
References: <20161115180644.3941-1-f.fainelli@gmail.com>

And what I also did is to intentionally make sure that for each patch,
there would not be 50+ people CC'd, but just the relevant people for
each driver, which is exactly how cc-cmd=scripts/get_maintainer.pl work,
making my life simpler honestly.

It's not nearly my first patch submission, but I admit I have been semi
intentionally lazy with this patch set considering the number of patches.

Anyway, enough time wasted on this.
-- 
Florian

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

* RE: [PATCH 13/15] net: ethernet: lantiq_etop: Utilize phy_ethtool_nway_reset
  2016-11-15 18:06 ` [PATCH 13/15] net: ethernet: lantiq_etop: " Florian Fainelli
@ 2016-11-15 21:14   ` Langer, Thomas
  0 siblings, 0 replies; 21+ messages in thread
From: Langer, Thomas @ 2016-11-15 21:14 UTC (permalink / raw)
  To: Florian Fainelli, netdev
  Cc: davem, andrew, tremyfr, Florian Westphal, Jarod Wilson, open list


> Subject: [PATCH 13/15] net: ethernet: lantiq_etop: Utilize
> phy_ethtool_nway_reset
> 
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
>  drivers/net/ethernet/lantiq_etop.c | 8 +-------
>  1 file changed, 1 insertion(+), 7 deletions(-)
> 

Reviewed-by: Thomas Langer <Thomas.langer@intel.com>

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

* Re: [PATCH 01/15] net: phy: Add phy_ethtool_nway_reset
  2016-11-15 18:06 ` [PATCH 01/15] net: phy: Add phy_ethtool_nway_reset Florian Fainelli
@ 2016-11-17 10:06   ` Krzysztof Hałasa
  0 siblings, 0 replies; 21+ messages in thread
From: Krzysztof Hałasa @ 2016-11-17 10:06 UTC (permalink / raw)
  To: linux-kernel; +Cc: netdev

Hi,

Florian Fainelli <f.fainelli@gmail.com> writes:

> This function just calls into genphy_restart_aneg() to perform an
> autonegotation restart.
>
> +int phy_ethtool_nway_reset(struct net_device *ndev)
> +{
> +	struct phy_device *phydev = ndev->phydev;
> +
> +	if (!phydev)
> +		return -ENODEV;
> +
> +	return genphy_restart_aneg(phydev);
> +}

and then you're using this function as .nway_reset of all netdev drivers
in question.

genphy_restart_aneg() deals directly with MII BMCR register:

int genphy_restart_aneg(struct phy_device *phydev)
{
        int ctl = phy_read(phydev, MII_BMCR);

        if (ctl < 0)
                return ctl;

        ctl |= BMCR_ANENABLE | BMCR_ANRESTART;

        /* Don't isolate the PHY if we're negotiating */
        ctl &= ~BMCR_ISOLATE;

        return phy_write(phydev, MII_BMCR, ctl);
}

Will the above work if the PHY is something special, e.g. a "fixed"
connection, or some kind of fiber trx etc? Normally, the PHY driver
could provide its own config_aneg().
-- 
Krzysztof Halasa

Industrial Research Institute for Automation and Measurements PIAP
Al. Jerozolimskie 202, 02-486 Warsaw, Poland

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

end of thread, other threads:[~2016-11-17 10:07 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20161115180644.3941-1-f.fainelli@gmail.com>
2016-11-15 18:06 ` [PATCH 01/15] net: phy: Add phy_ethtool_nway_reset Florian Fainelli
2016-11-17 10:06   ` Krzysztof Hałasa
2016-11-15 18:06 ` [PATCH 02/15] net: nb8800: Utilize phy_ethtool_nway_reset Florian Fainelli
2016-11-15 18:06 ` [PATCH 03/15] net: bcm63xx_enet: " Florian Fainelli
2016-11-15 19:59   ` Heinrich Schuchardt
2016-11-15 20:15     ` Florian Fainelli
2016-11-15 18:06 ` [PATCH 04/15] net: mv643xx_eth: " Florian Fainelli
2016-11-15 19:28   ` Andrew Lunn
2016-11-15 18:06 ` [PATCH 05/15] net: smsc911x: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 06/15] net: ethernet: smsc9420: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 07/15] net: ethernet: ll_temac: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 08/15] net: ethernet: ixp4xx_eth: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 09/15] net: bcmgenet: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 10/15] net: fs_enet: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 11/15] net: fec: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 12/15] net: ethernet: ucc: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 13/15] net: ethernet: lantiq_etop: " Florian Fainelli
2016-11-15 21:14   ` Langer, Thomas
2016-11-15 18:06 ` [PATCH 14/15] net: usb: ax88172x: " Florian Fainelli
2016-11-15 18:06 ` [PATCH 15/15] net: usb: lan78xx: " Florian Fainelli
2016-11-15 18:14   ` Woojung.Huh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).