Oliver Neukum <oliver@xxxxxxxxxx> writes: > Am Wednesday 04 February 2009 16:48:11 schrieb Kalle Valo: >> Yes, please cc also me. I try to keep up-to-date what's happening with >> at76-usb so that the same fixes will be fixed in at76c50x-usb as well. > > Here is what I found with at76-usb as it is in the current kernel: > > static int at76_wait_completion(struct at76_priv *priv, int cmd) > { > int status = 0; > > unsigned long timeout = jiffies + CMD_COMPLETION_TIMEOUT; > > do { > > This can go wrong in a preemptible kernel. You have no guarantee the full > timeout is granted. > > @@ -1631,7 +1633,7 @@ static void at76_rx_tasklet(unsigned long param) > buf = (struct at76_rx_buffer *)priv->rx_skb->data; > > if (urb->status != 0) { > - if (urb->status != -ENOENT && urb->status != -ECONNRESET) > + if (urb->status != -ENOENT && urb->status != -ECONNRESET && urb->status != -ESHUTDOWN) > > Should also check for ESHUTDOWN, also in at76_mac80211_tx_callback() Thanks. I added these comments to my todo list, and will fix them later. -- Kalle Valo -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html