Skip to content

Commit

Permalink
via-velocity: Give RX descriptors to the NIC later on open or MTU change
Browse files Browse the repository at this point in the history
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 <ben@decadent.org.uk>
Tested-by: Jan Ceuleers <jan.ceuleers@computer.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Ben Hutchings authored and David S. Miller committed Jan 4, 2010
1 parent b3319b1 commit 35bb5ca
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/net/via-velocity.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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);
Expand Down Expand Up @@ -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);

Expand Down

0 comments on commit 35bb5ca

Please sign in to comment.