]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
b43: Do not return TX_BUSY from op_tx
authorMichael Buesch <mb@bu3sch.de>
Wed, 2 Jul 2008 23:04:29 +0000 (01:04 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 24 Jul 2008 16:14:02 +0000 (09:14 -0700)
Never return TX_BUSY from op_tx. It doesn't make sense to return
TX_BUSY, if we can not transmit the packet.
Drop the packet and return TX_OK.
This will fix the resume hang.

Upstream commit is
66193a7cef2239bfd1b9b96e304770facf7a49c7

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/b43/main.c

index b4a20423afebcc729371179a1c93fe7c64c31f58..b2cc2464a8daf4f4739307493c1031722d79a341 100644 (file)
@@ -2607,7 +2607,7 @@ static int b43_op_tx(struct ieee80211_hw *hw,
        int err;
 
        if (unlikely(!dev))
-               return NETDEV_TX_BUSY;
+               goto drop_packet;
 
        /* Transmissions on seperate queues can run concurrently. */
        read_lock_irqsave(&wl->tx_lock, flags);
@@ -2619,7 +2619,12 @@ static int b43_op_tx(struct ieee80211_hw *hw,
        read_unlock_irqrestore(&wl->tx_lock, flags);
 
        if (unlikely(err))
-               return NETDEV_TX_BUSY;
+               goto drop_packet;
+       return NETDEV_TX_OK;
+
+drop_packet:
+       /* We can not transmit this packet. Drop it. */
+       dev_kfree_skb_any(skb);
        return NETDEV_TX_OK;
 }