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;
 
        skb = skb_dequeue(&ring->skblist);
        while (skb) {
-               brcmu_pkt_buf_free_skb(skb);
+               brcmf_txfinalize(ifp, skb, false);
                skb = skb_dequeue(&ring->skblist);
        }