This will always work.

Signed-off-by: Michael Buesch <[EMAIL PROTECTED]>

Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_dma.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_dma.c       
2007-08-03 23:35:31.000000000 +0200
+++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_dma.c    
2007-08-03 23:35:33.000000000 +0200
@@ -441,14 +441,10 @@ void sync_descbuffer_for_device(struct b
 
 static inline
 void free_descriptor_buffer(struct bcm43xx_dmaring *ring,
-                           struct bcm43xx_dmadesc_meta *meta,
-                           int irq_context)
+                           struct bcm43xx_dmadesc_meta *meta)
 {
        if (meta->skb) {
-               if (irq_context)
-                       dev_kfree_skb_irq(meta->skb);
-               else
-                       dev_kfree_skb(meta->skb);
+               dev_kfree_skb_any(meta->skb);
                meta->skb = NULL;
        }
 }
@@ -777,7 +773,7 @@ static void free_all_descbuffers(struct 
                        unmap_descbuffer(ring, meta->dmaaddr,
                                        ring->rx_buffersize, 0);
                }
-               free_descriptor_buffer(ring, meta, 0);
+               free_descriptor_buffer(ring, meta);
        }
 }
 
Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_pio.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_pio.c       
2007-08-03 23:35:31.000000000 +0200
+++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_pio.c    
2007-08-03 23:35:33.000000000 +0200
@@ -208,17 +208,12 @@ static void pio_tx_write_fragment(struct
        tx_complete(queue, skb);
 }
 
-static void free_txpacket(struct bcm43xx_pio_txpacket *packet,
-                         int irq_context)
+static void free_txpacket(struct bcm43xx_pio_txpacket *packet)
 {
        struct bcm43xx_pioqueue *queue = packet->queue;
 
-       if (packet->skb) {
-               if (irq_context)
-                       dev_kfree_skb_irq(packet->skb);
-               else
-                       dev_kfree_skb(packet->skb);
-       }
+       if (packet->skb)
+               dev_kfree_skb_any(packet->skb);
        list_move(&packet->list, &queue->txfree);
        queue->nr_txfree++;
 }
@@ -234,7 +229,7 @@ static int pio_tx_packet(struct bcm43xx_
                bcmwarn(queue->dev->wl, "PIO queue too small. "
                        "Dropping packet.\n");
                /* Drop it silently (return success) */
-               free_txpacket(packet, 1);
+               free_txpacket(packet);
                return 0;
        }
        assert(queue->tx_devq_packets <= BCM43xx_PIO_MAXTXDEVQPACKETS);
@@ -371,9 +366,9 @@ static void cancel_transfers(struct bcm4
        tasklet_disable(&queue->txtask);
 
        list_for_each_entry_safe(packet, tmp_packet, &queue->txrunning, list)
-               free_txpacket(packet, 0);
+               free_txpacket(packet);
        list_for_each_entry_safe(packet, tmp_packet, &queue->txqueue, list)
-               free_txpacket(packet, 0);
+               free_txpacket(packet);
 }
 
 static void bcm43xx_destroy_pioqueue(struct bcm43xx_pioqueue *queue)
@@ -498,7 +493,7 @@ void bcm43xx_pio_handle_txstatus(struct 
                                    &(packet->txstat));
        packet->skb = NULL;
 
-       free_txpacket(packet, 1);
+       free_txpacket(packet);
        /* If there are packets on the txqueue, poke the tasklet
         * to transmit them.
         */

--

_______________________________________________
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to