summaryrefslogtreecommitdiffstats
path: root/package/broadcom-wl/src/kmod/linux_osl.c
diff options
context:
space:
mode:
Diffstat (limited to 'package/broadcom-wl/src/kmod/linux_osl.c')
-rw-r--r--package/broadcom-wl/src/kmod/linux_osl.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/package/broadcom-wl/src/kmod/linux_osl.c b/package/broadcom-wl/src/kmod/linux_osl.c
index d70296103..24fd77dae 100644
--- a/package/broadcom-wl/src/kmod/linux_osl.c
+++ b/package/broadcom-wl/src/kmod/linux_osl.c
@@ -159,13 +159,18 @@ osl_pktget(osl_t *osh, uint len, bool send)
return ((void*) skb);
}
+typedef void (*pktfree_cb_fn_t)(void *ctx, void *pkt, uint16 status);
/* Free the driver packet. Free the tag if present */
void
-osl_pktfree(osl_t *osh, void *p)
+osl_pktfree(osl_t *osh, void *p, bool send)
{
struct sk_buff *skb, *nskb;
+ pktfree_cb_fn_t tx_fn = osh->pub.tx_fn;
skb = (struct sk_buff*) p;
+
+ if (send && tx_fn)
+ tx_fn(osh->pub.tx_ctx, p, 0);
/* perversion: we use skb->next to chain multi-skb packets */
while (skb) {