linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net v2 0/4] Few mvneta fixes
@ 2016-03-12 17:44 Gregory CLEMENT
  2016-03-12 17:44 ` [PATCH net v2 1/4] net: mvneta: Fix spinlock usage Gregory CLEMENT
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2016-03-12 17:44 UTC (permalink / raw)
  To: David S. Miller, linux-kernel, netdev, Thomas Petazzoni
  Cc: Jason Cooper, Andrew Lunn, Sebastian Hesselbarth,
	Gregory CLEMENT, linux-arm-kernel, Lior Amsalem, Nadav Haklai,
	Marcin Wojtas, Patrick Uiterwijk, Dimitri Epshtein, Ofer Heifetz

Hi David,

In this second version I split the last patch in two parts as
requested.

For the record the initial cover letter was:
"here is a patch set of few fixes. Without the first one, a kernel
configured with debug features ended to hang when the driver is built
as a module and is removed. This is quite is annoying for debugging!

The second patch fix a forgotten flag at the initial submission of the
driver.

The third patch is only really a cosmetic one so I have no problem to
not apply it for 4.5 and wait for 4.6.

I really would like to see the first one applied for 4.5 and for the
second I let you judge if it something needed for now or that should
wait the next release."

Thanks,

Gregory


Dmitri Epshtein (3):
  net: mvneta: enable change MAC address when interface is up
  net: mvneta: fix error messages in mvneta_port_down function
  net: mvneta: replace magic numbers by existing macros

Gregory CLEMENT (1):
  net: mvneta: Fix spinlock usage

 drivers/net/ethernet/marvell/mvneta.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

-- 
2.5.0

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

* [PATCH net v2 1/4] net: mvneta: Fix spinlock usage
  2016-03-12 17:44 [PATCH net v2 0/4] Few mvneta fixes Gregory CLEMENT
@ 2016-03-12 17:44 ` Gregory CLEMENT
  2016-03-12 17:44 ` [PATCH net v2 2/4] net: mvneta: enable change MAC address when interface is up Gregory CLEMENT
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2016-03-12 17:44 UTC (permalink / raw)
  To: David S. Miller, linux-kernel, netdev, Thomas Petazzoni
  Cc: Jason Cooper, Andrew Lunn, Sebastian Hesselbarth,
	Gregory CLEMENT, linux-arm-kernel, Lior Amsalem, Nadav Haklai,
	Marcin Wojtas, Patrick Uiterwijk, Dimitri Epshtein, Ofer Heifetz

In the previous patch, the spinlock was not initialized. While it didn't
cause any trouble yet it could be a problem to use it uninitialized.

The most annoying part was the critical section protected by the spinlock
in mvneta_stop(). Some of the functions could sleep as pointed when
activated CONFIG_DEBUG_ATOMIC_SLEEP. Actually, in mvneta_stop() we only
need to protect the is_stopped flagged, indeed the code of the notifier
for CPU online is protected by the same spinlock, so when we get the
lock, the notifer work is done.

Reported-by: Patrick Uiterwijk <patrick@puiterwijk.org>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
---
 drivers/net/ethernet/marvell/mvneta.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index b0ae69f84493..8dc7df2edff6 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -3070,17 +3070,17 @@ static int mvneta_stop(struct net_device *dev)
 	struct mvneta_port *pp = netdev_priv(dev);
 
 	/* Inform that we are stopping so we don't want to setup the
-	 * driver for new CPUs in the notifiers
+	 * driver for new CPUs in the notifiers. The code of the
+	 * notifier for CPU online is protected by the same spinlock,
+	 * so when we get the lock, the notifer work is done.
 	 */
 	spin_lock(&pp->lock);
 	pp->is_stopped = true;
+	spin_unlock(&pp->lock);
+
 	mvneta_stop_dev(pp);
 	mvneta_mdio_remove(pp);
 	unregister_cpu_notifier(&pp->cpu_notifier);
-	/* Now that the notifier are unregistered, we can release le
-	 * lock
-	 */
-	spin_unlock(&pp->lock);
 	on_each_cpu(mvneta_percpu_disable, pp, true);
 	free_percpu_irq(dev->irq, pp->ports);
 	mvneta_cleanup_rxqs(pp);
@@ -3612,6 +3612,7 @@ static int mvneta_probe(struct platform_device *pdev)
 	dev->ethtool_ops = &mvneta_eth_tool_ops;
 
 	pp = netdev_priv(dev);
+	spin_lock_init(&pp->lock);
 	pp->phy_node = phy_node;
 	pp->phy_interface = phy_mode;
 
-- 
2.5.0

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

* [PATCH net v2 2/4] net: mvneta: enable change MAC address when interface is up
  2016-03-12 17:44 [PATCH net v2 0/4] Few mvneta fixes Gregory CLEMENT
  2016-03-12 17:44 ` [PATCH net v2 1/4] net: mvneta: Fix spinlock usage Gregory CLEMENT
@ 2016-03-12 17:44 ` Gregory CLEMENT
  2016-03-12 17:44 ` [PATCH net v2 3/4] net: mvneta: fix error messages in mvneta_port_down function Gregory CLEMENT
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2016-03-12 17:44 UTC (permalink / raw)
  To: David S. Miller, linux-kernel, netdev, Thomas Petazzoni
  Cc: Jason Cooper, Andrew Lunn, Sebastian Hesselbarth,
	Gregory CLEMENT, linux-arm-kernel, Lior Amsalem, Nadav Haklai,
	Marcin Wojtas, Patrick Uiterwijk, Dimitri Epshtein, Ofer Heifetz,
	stable

From: Dmitri Epshtein <dima@marvell.com>

Function eth_prepare_mac_addr_change() is called as part of MAC
address change. This function check if interface is running.
To enable change MAC address when interface is running:
IFF_LIVE_ADDR_CHANGE flag must be set to dev->priv_flags field

Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP
network unit")
Cc: stable@vger.kernel.org
Signed-off-by: Dmitri Epshtein <dima@marvell.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
---
 drivers/net/ethernet/marvell/mvneta.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 8dc7df2edff6..2ee05cebea75 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -3721,7 +3721,7 @@ static int mvneta_probe(struct platform_device *pdev)
 	dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO;
 	dev->hw_features |= dev->features;
 	dev->vlan_features |= dev->features;
-	dev->priv_flags |= IFF_UNICAST_FLT;
+	dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE;
 	dev->gso_max_segs = MVNETA_MAX_TSO_SEGS;
 
 	err = register_netdev(dev);
-- 
2.5.0

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

* [PATCH net v2 3/4] net: mvneta: fix error messages in mvneta_port_down function
  2016-03-12 17:44 [PATCH net v2 0/4] Few mvneta fixes Gregory CLEMENT
  2016-03-12 17:44 ` [PATCH net v2 1/4] net: mvneta: Fix spinlock usage Gregory CLEMENT
  2016-03-12 17:44 ` [PATCH net v2 2/4] net: mvneta: enable change MAC address when interface is up Gregory CLEMENT
@ 2016-03-12 17:44 ` Gregory CLEMENT
  2016-03-12 17:44 ` [PATCH net v2 4/4] net: mvneta: replace magic numbers by existing macros Gregory CLEMENT
  2016-03-14 19:49 ` [PATCH net v2 0/4] Few mvneta fixes David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2016-03-12 17:44 UTC (permalink / raw)
  To: David S. Miller, linux-kernel, netdev, Thomas Petazzoni
  Cc: Jason Cooper, Andrew Lunn, Sebastian Hesselbarth,
	Gregory CLEMENT, linux-arm-kernel, Lior Amsalem, Nadav Haklai,
	Marcin Wojtas, Patrick Uiterwijk, Dimitri Epshtein, Ofer Heifetz

From: Dmitri Epshtein <dima@marvell.com>

This commit corrects error printing when shutting down the port.

[gregory.clement@free-electrons.com: split initial commit in two
individual changes]
Signed-off-by: Dmitri Epshtein <dima@marvell.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
---
 drivers/net/ethernet/marvell/mvneta.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 2ee05cebea75..58ad36876e8b 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -873,7 +873,7 @@ static void mvneta_port_down(struct mvneta_port *pp)
 	do {
 		if (count++ >= MVNETA_RX_DISABLE_TIMEOUT_MSEC) {
 			netdev_warn(pp->dev,
-				    "TIMEOUT for RX stopped ! rx_queue_cmd: 0x08%x\n",
+				    "TIMEOUT for RX stopped ! rx_queue_cmd: 0x%08x\n",
 				    val);
 			break;
 		}
@@ -912,7 +912,7 @@ static void mvneta_port_down(struct mvneta_port *pp)
 	do {
 		if (count++ >= MVNETA_TX_FIFO_EMPTY_TIMEOUT) {
 			netdev_warn(pp->dev,
-				    "TX FIFO empty timeout status=0x08%x\n",
+				    "TX FIFO empty timeout status=0x%08x\n",
 				    val);
 			break;
 		}
-- 
2.5.0

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

* [PATCH net v2 4/4] net: mvneta: replace magic numbers by existing macros
  2016-03-12 17:44 [PATCH net v2 0/4] Few mvneta fixes Gregory CLEMENT
                   ` (2 preceding siblings ...)
  2016-03-12 17:44 ` [PATCH net v2 3/4] net: mvneta: fix error messages in mvneta_port_down function Gregory CLEMENT
@ 2016-03-12 17:44 ` Gregory CLEMENT
  2016-03-14 19:49 ` [PATCH net v2 0/4] Few mvneta fixes David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2016-03-12 17:44 UTC (permalink / raw)
  To: David S. Miller, linux-kernel, netdev, Thomas Petazzoni
  Cc: Jason Cooper, Andrew Lunn, Sebastian Hesselbarth,
	Gregory CLEMENT, linux-arm-kernel, Lior Amsalem, Nadav Haklai,
	Marcin Wojtas, Patrick Uiterwijk, Dimitri Epshtein, Ofer Heifetz

From: Dmitri Epshtein <dima@marvell.com>

Some literal values are actually already defined by macros, so let's use
them.

[gregory.clement@free-electrons.com: split intial commit in two
individual changes]
Signed-off-by: Dmitri Epshtein <dima@marvell.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
---
 drivers/net/ethernet/marvell/mvneta.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 58ad36876e8b..225d933259c0 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -880,7 +880,7 @@ static void mvneta_port_down(struct mvneta_port *pp)
 		mdelay(1);
 
 		val = mvreg_read(pp, MVNETA_RXQ_CMD);
-	} while (val & 0xff);
+	} while (val & MVNETA_RXQ_ENABLE_MASK);
 
 	/* Stop Tx port activity. Check port Tx activity. Issue stop
 	 * command for active channels only
@@ -905,7 +905,7 @@ static void mvneta_port_down(struct mvneta_port *pp)
 		/* Check TX Command reg that all Txqs are stopped */
 		val = mvreg_read(pp, MVNETA_TXQ_CMD);
 
-	} while (val & 0xff);
+	} while (val & MVNETA_TXQ_ENABLE_MASK);
 
 	/* Double check to verify that TX FIFO is empty */
 	count = 0;
-- 
2.5.0

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

* Re: [PATCH net v2 0/4] Few mvneta fixes
  2016-03-12 17:44 [PATCH net v2 0/4] Few mvneta fixes Gregory CLEMENT
                   ` (3 preceding siblings ...)
  2016-03-12 17:44 ` [PATCH net v2 4/4] net: mvneta: replace magic numbers by existing macros Gregory CLEMENT
@ 2016-03-14 19:49 ` David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2016-03-14 19:49 UTC (permalink / raw)
  To: gregory.clement
  Cc: linux-kernel, netdev, thomas.petazzoni, jason, andrew,
	sebastian.hesselbarth, linux-arm-kernel, alior, nadavh, mw,
	patrick, dima, oferh

From: Gregory CLEMENT <gregory.clement@free-electrons.com>
Date: Sat, 12 Mar 2016 18:44:16 +0100

> In this second version I split the last patch in two parts as
> requested.
> 
> For the record the initial cover letter was:
> "here is a patch set of few fixes. Without the first one, a kernel
> configured with debug features ended to hang when the driver is built
> as a module and is removed. This is quite is annoying for debugging!
> 
> The second patch fix a forgotten flag at the initial submission of the
> driver.
> 
> The third patch is only really a cosmetic one so I have no problem to
> not apply it for 4.5 and wait for 4.6.
> 
> I really would like to see the first one applied for 4.5 and for the
> second I let you judge if it something needed for now or that should
> wait the next release."

Series applied and patches #1 and #2 queued up for -stable, thanks.

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

end of thread, other threads:[~2016-03-14 19:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-12 17:44 [PATCH net v2 0/4] Few mvneta fixes Gregory CLEMENT
2016-03-12 17:44 ` [PATCH net v2 1/4] net: mvneta: Fix spinlock usage Gregory CLEMENT
2016-03-12 17:44 ` [PATCH net v2 2/4] net: mvneta: enable change MAC address when interface is up Gregory CLEMENT
2016-03-12 17:44 ` [PATCH net v2 3/4] net: mvneta: fix error messages in mvneta_port_down function Gregory CLEMENT
2016-03-12 17:44 ` [PATCH net v2 4/4] net: mvneta: replace magic numbers by existing macros Gregory CLEMENT
2016-03-14 19:49 ` [PATCH net v2 0/4] Few mvneta fixes David Miller

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).