[PATCH] via-velocity: Give RX descriptors to the NIC later on open or MTU change

Subsystems: networking drivers, the rest

STALE6066d

5 messages, 3 authors, 2010-01-04 · open the first message on its own page

[PATCH] via-velocity: Give RX descriptors to the NIC later on open or MTU change

From: Ben Hutchings <hidden>
Date: 2009-12-15 02:06:41

velocity_open() calls velocity_give_many_rx_descs(), which gives RX
descriptors to the NIC, before installing an interrupt handler or
calling velocity_init_registers().  I think this is very unsafe and it
appears to explain the bug report <http://bugs.debian.org/508527>.

On MTU change, velocity_give_many_rx_descs() is again called before
velocity_init_registers().  I'm not sure whether this is unsafe but
it does look wrong.

Therefore, move the calls to velocity_give_many_rx_descs() after
request_irq() and velocity_init_registers().

Signed-off-by: Ben Hutchings <redacted>
---
This is untested; I don't have this hardware.

Ben.

 drivers/net/via-velocity.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index 4ceb441..c93f58f 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -2237,8 +2237,6 @@ static int velocity_open(struct net_device *dev)
 	/* Ensure chip is running */
 	pci_set_power_state(vptr->pdev, PCI_D0);
 
-	velocity_give_many_rx_descs(vptr);
-
 	velocity_init_registers(vptr, VELOCITY_INIT_COLD);
 
 	ret = request_irq(vptr->pdev->irq, velocity_intr, IRQF_SHARED,
@@ -2250,6 +2248,8 @@ static int velocity_open(struct net_device *dev)
 		goto out;
 	}
 
+	velocity_give_many_rx_descs(vptr);
+
 	mac_enable_int(vptr->mac_regs);
 	netif_start_queue(dev);
 	napi_enable(&vptr->napi);
@@ -2339,10 +2339,10 @@ static int velocity_change_mtu(struct net_device *dev, int new_mtu)
 
 		dev->mtu = new_mtu;
 
-		velocity_give_many_rx_descs(vptr);
-
 		velocity_init_registers(vptr, VELOCITY_INIT_COLD);
 
+		velocity_give_many_rx_descs(vptr);
+
 		mac_enable_int(vptr->mac_regs);
 		netif_start_queue(dev);
 
-- 
1.6.5.4

Re: [PATCH] via-velocity: Give RX descriptors to the NIC later on open or MTU change

From: David Miller <davem@davemloft.net>
Date: 2009-12-26 02:21:01

From: Ben Hutchings <redacted>
Date: Tue, 15 Dec 2009 02:05:09 +0000
velocity_open() calls velocity_give_many_rx_descs(), which gives RX
descriptors to the NIC, before installing an interrupt handler or
calling velocity_init_registers().  I think this is very unsafe and it
appears to explain the bug report <http://bugs.debian.org/508527>.

On MTU change, velocity_give_many_rx_descs() is again called before
velocity_init_registers().  I'm not sure whether this is unsafe but
it does look wrong.

Therefore, move the calls to velocity_give_many_rx_descs() after
request_irq() and velocity_init_registers().

Signed-off-by: Ben Hutchings <redacted>
---
This is untested; I don't have this hardware.
Although this patch looks fine to me, I don't want to apply
it until someone tests it.

Re: [PATCH] via-velocity: Give RX descriptors to the NIC later on open or MTU change

From: Jan Ceuleers <hidden>
Date: 2009-12-28 09:29:24

David Miller wrote:
quoted
velocity_open() calls velocity_give_many_rx_descs(), which gives RX
descriptors to the NIC, before installing an interrupt handler or
calling velocity_init_registers().  I think this is very unsafe and it
appears to explain the bug report <http://bugs.debian.org/508527>.

On MTU change, velocity_give_many_rx_descs() is again called before
velocity_init_registers().  I'm not sure whether this is unsafe but
it does look wrong.

Therefore, move the calls to velocity_give_many_rx_descs() after
request_irq() and velocity_init_registers().

Signed-off-by: Ben Hutchings <redacted>
---
This is untested; I don't have this hardware.
Although this patch looks fine to me, I don't want to apply
it until someone tests it.
I have successfully booted a 2.6.32.2 kernel with this patch applied on top on a PXE-booting machine with nfsroot. If you consider that to be a sufficient test then please feel free to add my

Tested-by: Jan Ceuleers <redacted>

Otherwise, please let me know which other tests you would like me to carry out.

Note though that I am unable to reproduce the original bug on my system.

Cheers, Jan

Re: [PATCH] via-velocity: Give RX descriptors to the NIC later on open or MTU change

From: Jan Ceuleers <hidden>
Date: 2009-12-28 09:39:23

Jan Ceuleers wrote:
I have successfully booted a 2.6.32.2 kernel with this patch applied on top on a PXE-booting machine with nfsroot.
Obviously this was on a machine with a Via Velocity NIC.

Jan

Re: [PATCH] via-velocity: Give RX descriptors to the NIC later on open or MTU change

From: David Miller <davem@davemloft.net>
Date: 2010-01-04 05:19:27

From: Jan Ceuleers <redacted>
Date: Mon, 28 Dec 2009 10:36:03 +0100
Jan Ceuleers wrote:
quoted
I have successfully booted a 2.6.32.2 kernel with this patch applied on top on a PXE-booting machine with nfsroot.
Obviously this was on a machine with a Via Velocity NIC.
Fair enough, applied to net-2.6, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help