[PATCH 1/2] Free RX buffers

Pontus Fuchs pontus.fuchs at gmail.com
Fri May 24 08:43:50 EDT 2013


Free the RX skb's on shutdown.

Signed-off-by: Pontus Fuchs <pontus.fuchs at gmail.com>
---
 dxe.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/dxe.c b/dxe.c
index 4ee25f4..67cb5de 100644
--- a/dxe.c
+++ b/dxe.c
@@ -226,6 +226,18 @@ static int wcn36xx_dxe_ch_alloc_skb(struct wcn36xx *wcn, struct wcn36xx_dxe_ch *
 	return 0;
 }
 
+static void wcn36xx_dxe_ch_free_skbs(struct wcn36xx *wcn,
+				     struct wcn36xx_dxe_ch *wcn_ch)
+{
+	struct wcn36xx_dxe_ctl *cur = wcn_ch->head_blk_ctl;
+	int i;
+
+	for (i = 0; i < wcn_ch->desc_num; i++) {
+		kfree_skb(cur->skb);
+		cur = cur->next;
+	}
+}
+
 static irqreturn_t wcn36xx_irq_tx_complete(int irq, void *dev)
 {
 	return IRQ_HANDLED;
@@ -602,4 +614,6 @@ void wcn36xx_dxe_deinit(struct wcn36xx *wcn)
 {
 	free_irq(wcn->tx_irq, wcn);
 	free_irq(wcn->rx_irq, wcn);
+	wcn36xx_dxe_ch_free_skbs(wcn, &wcn->dxe_rx_l_ch);
+	wcn36xx_dxe_ch_free_skbs(wcn, &wcn->dxe_rx_h_ch);
 }
-- 
1.8.1.2




More information about the wcn36xx mailing list