]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
brcmfmac: use correct skb freeing helper when deleting flowring
[karo-tx-linux.git] / drivers / net / wireless / broadcom / brcm80211 / brcmfmac / flowring.c
index b16b367b0569662daabfeb56735ff573af593010..d0b738da245822cd3e50d2b1a65764ce9cf12561 100644 (file)
@@ -234,13 +234,20 @@ static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid,
 
 void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
 {
+       struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev);
        struct brcmf_flowring_ring *ring;
+       struct brcmf_if *ifp;
        u16 hash_idx;
+       u8 ifidx;
        struct sk_buff *skb;
 
        ring = flow->rings[flowid];
        if (!ring)
                return;
+
+       ifidx = brcmf_flowring_ifidx_get(flow, flowid);
+       ifp = brcmf_get_ifp(bus_if->drvr, ifidx);
+
        brcmf_flowring_block(flow, flowid, false);
        hash_idx = ring->hash_id;
        flow->hash[hash_idx].ifidx = BRCMF_FLOWRING_INVALID_IFIDX;
@@ -249,7 +256,7 @@ void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
 
        skb = skb_dequeue(&ring->skblist);
        while (skb) {
-               brcmu_pkt_buf_free_skb(skb);
+               brcmf_txfinalize(ifp, skb, false);
                skb = skb_dequeue(&ring->skblist);
        }