diff --git a/debian/changelog b/debian/changelog index 3a6c06b28..7f198a8a1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ linux-2.6 (2.6.32-4) UNRELEASED; urgency=low in maintainer scripts (Closes: #558077) * modules: Skip empty sections when exporting section notes (Closes: #563036) + * via-velocity: Give RX descriptors to the NIC later on open or MTU change + (Closes: #508527) [ maximilian attems ] * topconfig set CAN_EMS_USB, BT_MRVL, BT_MRVL_SDIO, BE2ISCSI, SCSI_PMCRAID, diff --git a/debian/patches/bugfix/all/via-velocity-give-rx-descriptors-later.patch b/debian/patches/bugfix/all/via-velocity-give-rx-descriptors-later.patch new file mode 100644 index 000000000..2900b14c4 --- /dev/null +++ b/debian/patches/bugfix/all/via-velocity-give-rx-descriptors-later.patch @@ -0,0 +1,35 @@ +From: Ben Hutchings +Subject: [PATCH] via-velocity: Give RX descriptors to the NIC later on open or MTU change + +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 . + +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(). + +--- 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); diff --git a/debian/patches/series/4 b/debian/patches/series/4 index bed69e2bf..5d3fd7196 100644 --- a/debian/patches/series/4 +++ b/debian/patches/series/4 @@ -1,2 +1,3 @@ + bugfix/all/modules-Skip-empty-section-notes.patch + features/arm/early-printk.patch ++ bugfix/all/via-velocity-give-rx-descriptors-later.patch